266 template <
typename Fn>
269 for (
auto& c :
children) c->visit(std::forward<Fn>(fn));
278 template <
typename Fn>
281 for (
auto& c :
children) c->visit(std::forward<Fn>(fn));
SdfNode(SdfOp o)
构造 SDF 节点
static SdfNodePtr bend(SdfNodePtr child, double amount)
创建弯曲节点
static SdfNodePtr box(const Point3D &half_extents)
创建轴对齐长方体节点
static SdfNodePtr scale(SdfNodePtr child, const Point3D &factors)
创建缩放节点
static SdfNodePtr sphere(double r)
创建球体节点
static SdfNodePtr round_box(const Point3D &half_extents, double r)
创建圆角长方体节点
static SdfNodePtr smooth_intersection(SdfNodePtr a, SdfNodePtr b, double k)
创建平滑交集节点
static SdfNodePtr rotate(SdfNodePtr child, double angle_rad)
创建旋转节点(绕 Y 轴)
static SdfNodePtr mirror_y(SdfNodePtr child)
创建 Y 镜像节点
static SdfNodePtr op_intersection(SdfNodePtr a, SdfNodePtr b)
创建交集节点: A ∩ B
static SdfNodePtr op_difference(SdfNodePtr a, SdfNodePtr b)
创建差集节点: A \ B
static SdfNodePtr cylinder(double r, double h)
创建圆柱体节点
static SdfNodePtr translate(SdfNodePtr child, const Point3D &offset)
创建平移节点
static SdfNodePtr mirror_z(SdfNodePtr child)
创建 Z 镜像节点
static SdfNodePtr triangular_prism(double h)
创建三角棱柱节点
static SdfNodePtr cheap_bend(SdfNodePtr child, double amount)
创建简化弯曲节点
static SdfNodePtr hex_prism(double h)
创建六棱柱节点
static SdfNodePtr link(double r, double length, double thickness)
创建双环链接节点
static SdfNodePtr capsule(const Point3D &a, const Point3D &b, double r)
创建胶囊体节点
static SdfNodePtr displace(SdfNodePtr child, double amplitude, double frequency)
创建位移扰动节点
static SdfNodePtr plane(const Vector3D &normal, double offset)
创建平面节点
static SdfNodePtr wedge(const Point3D &extents)
创建楔形体节点
void visit(Fn &&fn) const
前序遍历(const 版本)
static SdfNodePtr round(SdfNodePtr child, double r)
创建圆角偏移节点
static SdfNodePtr op_union(SdfNodePtr a, SdfNodePtr b)
创建并集节点: A ∪ B
static SdfNodePtr smooth_union(SdfNodePtr a, SdfNodePtr b, double k)
创建平滑并集节点
static SdfNodePtr cone(double angle_rad, double h)
创建圆锥台节点
static SdfNodePtr mirror_x(SdfNodePtr child)
创建 X 镜像节点
static SdfNodePtr elongate(SdfNodePtr child, const Point3D &h)
创建拉伸节点
static SdfNodePtr repeat(SdfNodePtr child, const Point3D &cell)
创建周期重复节点
void visit(Fn &&fn)
前序遍历所有节点
static SdfNodePtr twist(SdfNodePtr child, double amount)
创建扭曲节点
std::vector< SdfNodePtr > children
子节点
static SdfNodePtr smooth_difference(SdfNodePtr a, SdfNodePtr b, double k)
创建平滑差集节点
static SdfNodePtr torus(double major_r, double minor_r)
创建圆环体节点
static SdfNodePtr onion(SdfNodePtr child, double thickness)
创建壳层修饰节点
static SdfNodePtr ellipsoid(const Point3D &radii)
创建椭球体节点
foundation::Vector3D Vector3D
双精度三维向量(重新导出)
foundation::Point3D Point3D
双精度三维点(重新导出)
SdfBBox estimate_bbox(const SdfNodePtr &root, double margin=1.0)
估算 SDF 树的完整轴对齐包围盒
double evaluate(const SdfNodePtr &root, const Point3D &p)
在空间点 p 处求值 SDF 树
std::shared_ptr< SdfNode > SdfNodePtr
Point3D estimate_bounds(const SdfNodePtr &root, double margin=1.0)
估算 SDF 树的包围半尺寸
double blend_k
平滑 CSG 混合参数
double thickness
壳层厚度(Onion)
Point3D translate_offset
平移量
double radius
球体/圆柱/胶囊/圆角半径
Point3D repeat_cell
重复晶格尺寸
Point3D scale_factors
缩放因子