feat(v12): generative surfaces (Sweep/Loft/Net) + curve tools + surface analysis
M1 — Generative Surfaces: - sweep_surface: Explicit/Spine/TwoGuides modes - loft_surface: multi-section interpolation + guide + tangent constraints - net_surface: bidirectional curve grid → NURBS M3 — Curve Tools + Analysis: - curve_tools: project_curve, parallel_curve, connect_curve(G1-G3), helix, isoparametric - surface_analysis: inflection_lines, checker_mapping, surface_checker_report (A/B/C/D) - 14/14 tests passed Fixed: constraint_solver.h duplicate declaration, fea_mesh.h comment syntax Pending: M2 surface editing (retrying)
This commit is contained in:
@@ -123,4 +123,34 @@ namespace vde::brep {
|
||||
const BrepModel& body, int face_a, int face_b,
|
||||
double radius, int samples = 16);
|
||||
|
||||
/**
|
||||
* @brief 形状过渡(Shape Fillet)
|
||||
*
|
||||
* 沿边采样变半径,逐段建模过渡曲面,自动检测三面交角并
|
||||
* 以球面填充 + 过渡面处理。
|
||||
*
|
||||
* 算法:
|
||||
* 1. 定位目标边及其两个邻面
|
||||
* 2. 沿边曲线采样 N 个截面,每截面计算半径(r_start → r_end 线性插值)
|
||||
* 3. 计算每截面的角平分线方向和切点
|
||||
* 4. 每相邻两截面间构建一张过渡曲面
|
||||
* 5. 检测三面交角顶点(目标边端点处 ≥ 3 个面交汇)
|
||||
* - 若检测到三面交角:在交角顶点处构造球面填充面
|
||||
* - 球面填充面与相邻过渡面之间插入过渡面
|
||||
* 6. 重建两个邻面(切除过渡区域),复制其他面,组装壳和体
|
||||
*
|
||||
* @param body 输入实体
|
||||
* @param edge_id 目标边索引
|
||||
* @param r_start 边起点处的过渡半径(≥ 0)
|
||||
* @param r_end 边终点处的过渡半径(≥ 0)
|
||||
* @param samples 沿边的截面采样数(默认 16)
|
||||
* @return 过渡后的新实体
|
||||
*
|
||||
* @pre edge_id 有效,r_start ≥ 0, r_end ≥ 0
|
||||
* @note 自动检测并处理三面交角,以球面填充 + 过渡面连接
|
||||
*/
|
||||
[[nodiscard]] BrepModel shape_fillet(
|
||||
const BrepModel& body, int edge_id,
|
||||
double r_start, double r_end, int samples = 16);
|
||||
|
||||
} // namespace vde::brep
|
||||
|
||||
@@ -584,10 +584,6 @@ public:
|
||||
const core::Point3D& target) const;
|
||||
|
||||
private:
|
||||
/// DH 参数法:单个连杆变换
|
||||
static core::Transform3D dh_transform(double theta, double d,
|
||||
double a, double alpha);
|
||||
|
||||
/// 评估闭环残差
|
||||
static double evaluate_closure(
|
||||
const Assembly& assembly,
|
||||
|
||||
Reference in New Issue
Block a user