ViewDesignEngine  3.1.0
高性能 CAD 计算几何引擎
sdf_tree.h 文件参考

SDF 表达式树结构 更多...

#include "vde/sdf/sdf_primitives.h"
#include "vde/sdf/sdf_operations.h"
#include "vde/core/point.h"
#include <memory>
#include <string>
#include <vector>
sdf_tree.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  vde::sdf::SdfParams
 SDF 节点参数联合体 更多...
 
class  vde::sdf::SdfNode
 SDF 表达式树节点 更多...
 
struct  vde::sdf::SdfBBox
 SDF 树的包围盒(AABB) 更多...
 

命名空间

 vde
 
 vde::sdf
 

类型定义

using vde::sdf::SdfNodePtr = std::shared_ptr< SdfNode >
 

枚举

enum class  vde::sdf::SdfOp : uint8_t {
  vde::sdf::Sphere , vde::sdf::Box , vde::sdf::RoundBox , vde::sdf::Torus ,
  vde::sdf::Capsule , vde::sdf::Cylinder , vde::sdf::Cone , vde::sdf::Plane ,
  vde::sdf::Ellipsoid , vde::sdf::TriangularPrism , vde::sdf::HexPrism , vde::sdf::Link ,
  vde::sdf::Wedge , vde::sdf::Union , vde::sdf::Intersection , vde::sdf::Difference ,
  vde::sdf::SmoothUnion , vde::sdf::SmoothIntersection , vde::sdf::SmoothDifference , vde::sdf::Round ,
  vde::sdf::Onion , vde::sdf::Repeat , vde::sdf::MirrorX , vde::sdf::MirrorY ,
  vde::sdf::MirrorZ , vde::sdf::Translate , vde::sdf::Rotate , vde::sdf::Scale ,
  vde::sdf::Twist , vde::sdf::Bend , vde::sdf::Elongate , vde::sdf::CheapBend ,
  vde::sdf::Displace
}
 CSG 树的所有节点类型 更多...
 

函数

double vde::sdf::evaluate (const SdfNodePtr &root, const Point3D &p)
 在空间点 p 处求值 SDF 树 更多...
 
Point3D vde::sdf::estimate_bounds (const SdfNodePtr &root, double margin=1.0)
 估算 SDF 树的包围半尺寸 更多...
 
SdfBBox vde::sdf::estimate_bbox (const SdfNodePtr &root, double margin=1.0)
 估算 SDF 树的完整轴对齐包围盒 更多...
 

详细描述

SDF 表达式树结构

将 SDF 原语和 CSG 操作以树形数据结构表示,支持树遍历、求值和包围盒估算。

架构层级

SdfNode (树节点) — 单节点,含操作类型+参数+子节点
├─ enum SdfOp — 操作枚举(图元/CSG/修饰/变形)
├─ struct SdfParams — 参数联合体
├─ 静态工厂方法 — 创建各类型节点
└─ visit() — 前序遍历
evaluate() — 递归求值
estimate_bounds() / estimate_bbox() — 包围盒估算
SdfBBox estimate_bbox(const SdfNodePtr &root, double margin=1.0)
估算 SDF 树的完整轴对齐包围盒
double evaluate(const SdfNodePtr &root, const Point3D &p)
在空间点 p 处求值 SDF 树
SdfOp
CSG 树的所有节点类型
Definition: sdf_tree.h:60
Point3D estimate_bounds(const SdfNodePtr &root, double margin=1.0)
估算 SDF 树的包围半尺寸

使用模式

通过静态工厂方法构建节点树,然后调用 evaluate() 进行求值:

auto root = SdfNode::op_union(
SdfNode::box(Point3D(0.5, 0.5, 0.5))
);
double d = evaluate(root, Point3D(1.0, 0.0, 0.0));
foundation::Point3D Point3D
双精度三维点(重新导出)
Definition: point.h:31
double box(const Point3D &p, const Point3D &half_extents)
轴对齐立方体的 SDF
double op_union(double d1, double d2)
布尔并集: A ∪ B
double sphere(const Point3D &p, double radius)
球体的 SDF

在文件 sdf_tree.h 中定义.