曲面曲面解析求交方案-平面曲面文章目录曲面曲面解析求交方案-平面曲面一. 通用约定1. 输入对象2. 平面表达3. 容差规则4. 结果规则5. 建模空间范围与样条退化策略二. 平面与平面求交1. 分类2. 非平行交线3. 结果表达三. 平面与圆柱面求交1. 平面垂直圆柱轴线圆2. 平面平行圆柱轴线两条直线 / 一条切线 / 无交3. 一般斜截椭圆4. 病态斜截转成两条样条曲线四. 平面与圆锥面求交1. 分类原则2. 平面垂直圆锥轴线圆3. 平面过顶点退化线或点4. 一般斜截椭圆 / 抛物线 / 双曲线5. 圆锥截线的样条构造五. 平面与球面求交1. 几何分类2. 相交圆构造3. 相切点六. 平面与圆环面求交1. 水平截面平面法向平行圆环面轴线2. 子午截面平面包含圆环面轴线3. 竖直偏置截面平面平行圆环面轴线但不包含轴线4. 其他圆环面平面截线七. 关键注意事项本文档记录曲面-曲面解析求交中“平面 曲面”的第一阶段实现方案。这里的“解析”不是强制所有结果都必须用精确二次曲线表达而是优先通过几何分类得到稳定的交线类型当精确圆锥曲线表达在当前尺度下数值不稳定或结果本身是抛物线、双曲线、四次曲线时统一转成带明确参数范围和拟合容差的 B 样条曲线。目标是让平面参与的曲面-曲面求交先覆盖常用二次曲面和圆环面特例为后续通用曲面-曲面数值求交提供可复用的解析优先分支。一. 通用约定1. 输入对象固定有一个平面对象LGKPlane另一个曲面对象第一阶段覆盖平面LGKPlane圆柱面LGKEntCylinder圆锥面LGKEntCone球面LGKEntSphere圆环面LGKEntTorus若当前实体类型尚未落地可先以设计预留2. 平面表达平面统一表达为Π: N · (X - Q) 0其中N是单位法向Q是平面上一点平面局部坐标系为(U, V, N)满足U × V N。任意 3D 点P到平面的有向距离d(P, Π) N · (P - Q)平面参数反算u (P - Q) · U v (P - Q) · V3. 容差规则平行、垂直、同向、反向等方向关系使用角度容差LGKConstants::AngleTolerance。点到平面、点到曲面、半径差、轴线距离等几何量使用调用方传入的长度容差例如曲面-曲面求交 option 中的m_tol。参数域边界不能只用参数差判断几何存在性最终需要回到空间距离校验。分支边界必须带容差例如平面与轴线是否平行平面是否过球心/圆锥顶点/圆环面轴线相切、无交、穿越分类椭圆长短轴比是否过大。4. 结果规则曲面-曲面求交结果不应只返回散点。平面-曲面的解析结果至少需要支持三类输出m_intCurves交线曲线。3D 曲线直线、圆、椭圆或 B 样条曲线。曲线参数范围。曲线类型普通相交、相切、反切等。其他端点类型等数据。// 可参考求交结果调研数据文档这篇主要讲方法思路。m_intPoints孤立接触点或退化交点。例如平面与球面相切时得到一个点。平面与圆锥仅在顶点接触时得到一个点。m_overlapRegions重合区域。// 此为增强功能前期不做重点处理例如平面-平面重合。当前接口若还没有重合区域表达可先通过状态码或单独结果类型保留信息不要伪造成一条交线。每条交线加入结果前必须满足采样点或端点到两个原始曲面的距离在容差内若上层传入 face 参数域需要能被裁剪到有效参数域若交线由 B 样条拟合得到需要记录拟合容差和来源参数范围。5. 建模空间范围与样条退化策略某些数学上可精确表达的圆锥曲线在建模尺度中会出现极端长轴或参数数值过大。例如平面几乎平行于圆柱轴线时平面截圆柱得到的椭圆长轴会趋近无穷。此时不强行构造病态椭圆而是在有限建模空间内生成 B 样条交线。第一阶段约定建模空间范围[-5000, 5000]病态阈值长轴 / 短轴 10000或等价使用轴线方向与平面法向夹角中的稳定性指标|N · Z| 0.0001其中Z是圆柱/圆锥/圆环面的局部轴线方向。当结果转为样条时只在建模空间 box 内生成交线对无界曲线使用有限参数区间对抛物线、双曲线等曲线如果单段拟合跨度过大需要分段推荐按尺度分段例如[-5000, -100] [-100, 100] [100, 5000]必要时中央段继续细分为[-100, -10] [-10, 10] [10, 100]这样避免远处大坐标影响100或10范围内的拟合精度。*注因为发现-10000长度的单段二次曲线样条在局部精度会存在较多问题。二. 平面与平面求交适用对象LGKPlane与LGKPlane。1. 分类设两个平面为Π1: N1 · (X - Q1) 0 Π2: N2 · (X - Q2) 0计算方向叉积D N1 × N2分类|D| angleTol两个平面平行或重合|D| angleTol两个平面相交于一条直线。平行时计算Q2到Π1的有向距离d N1 · (Q2 - Q1)|d| tol两个平面重合返回 overlap region|d| tol两个平面平行不相交。2. 非平行交线交线方向Dir normalize(N1 × N2)把两个平面写成N1 · X c1, c1 N1 · Q1 N2 · X c2, c2 N2 · Q2可用下面公式求交线上一点P0 (c1 (N2 × D) c2 (D × N1)) / |D|^2其中D N1 × N2最终交线L(t) P0 t Dir3. 结果表达3D 曲线LGKLine3d。如果上层有 face 边界解析层只返回无限直线及参数关系由拓扑裁剪层负责切成有限边。三. 平面与圆柱面求交适用对象LGKPlane与LGKCylinder。圆柱面局部坐标系为(Xc, Yc, Zc)轴线上一点为C0半径为R。局部方程x^2 y^2 R^2其中z沿Zc方向。定义稳定性指标h |N · Zc|h越接近 1平面越接近垂直圆柱轴线h越接近 0平面越接近平行圆柱轴线。1. 平面垂直圆柱轴线圆条件| |N · Zc| - 1 | angleTol此时平面是圆柱的横截面交线为圆。圆心为圆柱轴线与平面的交点t N · (Q - C0) / (N · Zc) Center C0 t Zc半径R结果3D 曲线LGKCircle3d(Center, R, Xc, Yc)方向需与平面法向一致时可调整基向量圆柱 pcurveu atan2(y, x)v z其中z为常数。2. 平面平行圆柱轴线两条直线 / 一条切线 / 无交条件|N · Zc| angleTol此时平面与圆柱轴线平行。先计算圆柱轴线到平面的距离d N · (C0 - Q) absD |d|分类absD R tol无交|absD - R| tol相切交线是一条直线absD R - tol相交交线是两条互相平行的直线。构造方式取圆柱横截平面中的方向A normalize(N - (N · Zc) Zc)平行分支中N · Zc ≈ 0所以A基本等于平面法向在圆柱横截面内的方向。在横截圆x^2 y^2 R^2上求与平面相交的点。轴线到平面的有向距离为d横截圆上满足A · radial -d令B normalize(Zc × A)若absD R两条母线对应的横截点为radial1 -d A sqrt(R^2 - d^2) B radial2 -d A - sqrt(R^2 - d^2) B交线L1(t) C0 radial1 t Zc L2(t) C0 radial2 t Zc相切时sqrt(R^2 - d^2) ≈ 0两条线合并成一条切线。3. 一般斜截椭圆条件h |N · Zc| angleTol并且未触发病态样条阈值。平面与圆柱轴线相交椭圆中心为t N · (Q - C0) / (N · Zc) Center C0 t Zc椭圆短轴方向Eminor normalize(Zc × N)短半轴b R椭圆长轴方向Emajor normalize(Eminor × N)长半轴a R / |N · Zc|当h 1时a b R退化为圆。结果3D 曲线LGKEllipse3d(Center, Emajor, Eminor, a, b)4. 病态斜截转成两条样条曲线触发条件a / b 10000或|N · Zc| 0.0001此时不构造超长轴椭圆而是在建模空间[-5000, 5000]内构造两条 B 样条曲线。推荐参数化方式用圆柱轴向坐标z做主参数。在圆柱局部坐标中平面方程可写为nx x ny y nz z c 0其中nz N · Zc对给定z在横截圆上求直线nx x ny y -c - nz z与圆x^2 y^2 R^2的交点。通常得到两个分支对应两条样条曲线。处理步骤在z ∈ [-5000, 5000]范围内求有效区间对每个有效z采样横截圆与平面直线的两个交点按分支连续性排序分别拟合两条 3D B 样条同时生成平面 pcurve 与圆柱 pcurve拟合后用原始平面和圆柱面做距离校验。这样可以避免用一个极端长轴椭圆表示局部近直线的交线。四. 平面与圆锥面求交适用对象LGKPlane与LGKCone。圆锥面使用局部坐标系(Xc, Yc, Zc)。为兼容普通圆锥和截锥可把半径写成轴向坐标的线性函数r(z) r0 k z局部方程x^2 y^2 r(z)^2如果是以顶点Apex为原点的标准圆锥则r(z) z tan(alpha)其中alpha是圆锥半角。1. 分类原则平面截圆锥的数学结果是圆锥曲线或退化直线/点平面垂直圆锥轴线圆平面斜截且只切一侧椭圆平面与一条母线方向平行抛物线平面穿过双侧或接近轴向切割双曲线平面过顶点可能退化为两条母线、一条切线或一个顶点。第一阶段结果表达策略圆用LGKCircle3d稳定椭圆用LGKEllipse3d过于狭长的椭圆转 B 样条抛物线统一用 B 样条双曲线统一用 B 样条退化两条母线/一条母线用LGKLine3d仅顶点接触返回孤立点。2. 平面垂直圆锥轴线圆条件| |N · Zc| - 1 | angleTol平面与圆锥轴线交于t N · (Q - C0) / (N · Zc) Center C0 t Zc对应半径R r(t)分类R tol返回圆R tol平面经过圆锥顶点附近返回孤立点或退化圆。3. 平面过顶点退化线或点若能取得圆锥顶点Apex先判断|N · (Apex - Q)| tol即平面经过顶点。此时在平面内找圆锥母线方向。设单位母线方向G满足G · Zc cos(alpha) |G × Zc| sin(alpha) N · G 0等价于在圆锥方向圆上与平面过原点的方向约束求交。分类两个不同母线方向返回两条直线两个方向重合返回一条切线没有真实母线方向仅顶点接触或无有效交线。如果当前阶段不想单独实现母线方向解析可退化为样条采样但仍应保留“过顶点退化”的分类以免生成不稳定的小环或错误椭圆。4. 一般斜截椭圆 / 抛物线 / 双曲线设beta为平面与圆锥轴线的夹角即轴线方向Zc与平面本身的夹角sin(beta) |N · Zc|圆锥半角为alpha。经典分类beta alpha椭圆beta ≈ alpha抛物线beta alpha双曲线。注意这里需要使用角度容差不能直接用裸浮点比较。第一阶段建议如果分类为稳定椭圆构造LGKEllipse3d如果椭圆长短轴比过大转 B 样条如果分类为抛物线或双曲线直接转 B 样条如果接近顶点或参数过大按尺度分段拟合。5. 圆锥截线的样条构造推荐使用轴向参数z或平面内主方向参数s构造样条。局部平面方程nx x ny y nz z c 0圆锥方程x^2 y^2 (r0 k z)^2对给定z求平面直线nx x ny y -c - nz z与横截圆x^2 y^2 r(z)^2的交点。每个连续分支拟合为一条 B 样条。分段规则对有界有效区间直接按曲率自适应采样对无界抛物线/双曲线裁剪到建模空间[-5000, 5000]若区间跨越大尺度按[-5000,-100]、[-100,100]、[100,5000]分段若中央段仍有精度问题继续按10的尺度细分。每段样条拟合后必须校验|N · (P - Q)| tol |sqrt(x^2 y^2) - r(z)| tol五. 平面与球面求交适用对象LGKPlane与LGKSphere。球面球心为O半径为R。1. 几何分类计算球心到平面的有向距离d N · (O - Q) absD |d|分类absD R tol无交|absD - R| tol相切得到一个孤立点absD R - tol相交交线为圆。2. 相交圆构造圆心是球心到平面的正交投影Center O - d N圆半径r sqrt(R^2 - d^2)圆所在平面就是输入平面圆的基向量可直接使用平面(U, V)。结果3D 曲线LGKCircle3d(Center, r, U, V)3. 相切点相切点为P O - d N返回m_intPoints类型标记为 tangent。不要构造半径为 0 的圆作为普通交线否则后续拓扑裁剪容易误判。六. 平面与圆环面求交适用对象LGKPlane与LGKTorus。圆环面局部坐标系为(Xt, Yt, Zt)中心为C主半径为R管半径为r。局部方程(sqrt(x^2 y^2) - R)^2 z^2 r^2圆环面的一般平面截线是四次曲线第一阶段不做全量解析。仅处理与Zt轴有特殊关系的情况其余退回曲面-曲面数值求交。1. 水平截面平面法向平行圆环面轴线条件| |N · Zt| - 1 | angleTol把平面转换到圆环面局部坐标得到常数高度z0 Zt · (Q - C)分类|z0| r tol无交| |z0| - r | tol相切得到一条圆半径为R|z0| r - tol得到两条同轴圆。两条圆的半径rho sqrt(r^2 - z0^2) R1 R rho R2 R - rho若R2 tol内侧圆退化需要按点或退化曲线处理正常圆环面通常R r所以R2 0。圆心Center C z0 Zt结果R1对应外侧圆R2对应内侧圆两条圆都位于输入平面内。2. 子午截面平面包含圆环面轴线条件平面与 Zt 平行并且圆环面轴线到平面的距离 tol也就是Zt方向在平面内且中心轴线落在平面上。此时截线是圆环管截面的两个圆。设平面内垂直于轴线的方向E normalize(Zt × N)两个圆心Center1 C R E Center2 C - R E半径均为r两个圆都位于该子午平面内法向为输入平面法向N。3. 竖直偏置截面平面平行圆环面轴线但不包含轴线如果需要支持“平面与圆环面Zt轴平行但不重合”的情况可作为第一阶段的样条特例而不是精确四次曲线对象。条件|N · Zt| angleTol圆环面轴线到平面的距离d N · (C - Q) absD |d|若absD R r tol无交。在平面内建立坐标z沿Ztw沿E normalize(Zt × N)偏置距离为d。圆环面方程变成(sqrt(w^2 d^2) - R)^2 z^2 r^2可解出z ± sqrt(r^2 - (sqrt(w^2 d^2) - R)^2)有效区间满足根号内非负。每个连续的z 0/z 0分支拟合成 B 样条。当absD tol时该公式退化为上一节的两个圆应优先返回精确圆不走样条。4. 其他圆环面平面截线一般斜截圆环面会得到四次曲线第一阶段不实现专用解析。处理策略平面 圆环面特殊解析 成功 - 返回圆或样条 不满足特殊条件 - 退回曲面-曲面数值求交不要用大量临时特判硬解一般 quartic否则会增加后续维护难度。七. 关键注意事项不要为了“解析”强行保留病态椭圆、病态双曲线的精确参数表达。对建模内核来说有限建模空间内稳定、带容差的样条结果更可控。所有分类先用几何距离和角度判断避免直接从代数方程根的数量反推几何关系。相切点、顶点接触、重合平面等结果的一些细节处理。
曲面曲面解析求交方案-平面+曲面
发布时间:2026/7/6 3:32:07
曲面曲面解析求交方案-平面曲面文章目录曲面曲面解析求交方案-平面曲面一. 通用约定1. 输入对象2. 平面表达3. 容差规则4. 结果规则5. 建模空间范围与样条退化策略二. 平面与平面求交1. 分类2. 非平行交线3. 结果表达三. 平面与圆柱面求交1. 平面垂直圆柱轴线圆2. 平面平行圆柱轴线两条直线 / 一条切线 / 无交3. 一般斜截椭圆4. 病态斜截转成两条样条曲线四. 平面与圆锥面求交1. 分类原则2. 平面垂直圆锥轴线圆3. 平面过顶点退化线或点4. 一般斜截椭圆 / 抛物线 / 双曲线5. 圆锥截线的样条构造五. 平面与球面求交1. 几何分类2. 相交圆构造3. 相切点六. 平面与圆环面求交1. 水平截面平面法向平行圆环面轴线2. 子午截面平面包含圆环面轴线3. 竖直偏置截面平面平行圆环面轴线但不包含轴线4. 其他圆环面平面截线七. 关键注意事项本文档记录曲面-曲面解析求交中“平面 曲面”的第一阶段实现方案。这里的“解析”不是强制所有结果都必须用精确二次曲线表达而是优先通过几何分类得到稳定的交线类型当精确圆锥曲线表达在当前尺度下数值不稳定或结果本身是抛物线、双曲线、四次曲线时统一转成带明确参数范围和拟合容差的 B 样条曲线。目标是让平面参与的曲面-曲面求交先覆盖常用二次曲面和圆环面特例为后续通用曲面-曲面数值求交提供可复用的解析优先分支。一. 通用约定1. 输入对象固定有一个平面对象LGKPlane另一个曲面对象第一阶段覆盖平面LGKPlane圆柱面LGKEntCylinder圆锥面LGKEntCone球面LGKEntSphere圆环面LGKEntTorus若当前实体类型尚未落地可先以设计预留2. 平面表达平面统一表达为Π: N · (X - Q) 0其中N是单位法向Q是平面上一点平面局部坐标系为(U, V, N)满足U × V N。任意 3D 点P到平面的有向距离d(P, Π) N · (P - Q)平面参数反算u (P - Q) · U v (P - Q) · V3. 容差规则平行、垂直、同向、反向等方向关系使用角度容差LGKConstants::AngleTolerance。点到平面、点到曲面、半径差、轴线距离等几何量使用调用方传入的长度容差例如曲面-曲面求交 option 中的m_tol。参数域边界不能只用参数差判断几何存在性最终需要回到空间距离校验。分支边界必须带容差例如平面与轴线是否平行平面是否过球心/圆锥顶点/圆环面轴线相切、无交、穿越分类椭圆长短轴比是否过大。4. 结果规则曲面-曲面求交结果不应只返回散点。平面-曲面的解析结果至少需要支持三类输出m_intCurves交线曲线。3D 曲线直线、圆、椭圆或 B 样条曲线。曲线参数范围。曲线类型普通相交、相切、反切等。其他端点类型等数据。// 可参考求交结果调研数据文档这篇主要讲方法思路。m_intPoints孤立接触点或退化交点。例如平面与球面相切时得到一个点。平面与圆锥仅在顶点接触时得到一个点。m_overlapRegions重合区域。// 此为增强功能前期不做重点处理例如平面-平面重合。当前接口若还没有重合区域表达可先通过状态码或单独结果类型保留信息不要伪造成一条交线。每条交线加入结果前必须满足采样点或端点到两个原始曲面的距离在容差内若上层传入 face 参数域需要能被裁剪到有效参数域若交线由 B 样条拟合得到需要记录拟合容差和来源参数范围。5. 建模空间范围与样条退化策略某些数学上可精确表达的圆锥曲线在建模尺度中会出现极端长轴或参数数值过大。例如平面几乎平行于圆柱轴线时平面截圆柱得到的椭圆长轴会趋近无穷。此时不强行构造病态椭圆而是在有限建模空间内生成 B 样条交线。第一阶段约定建模空间范围[-5000, 5000]病态阈值长轴 / 短轴 10000或等价使用轴线方向与平面法向夹角中的稳定性指标|N · Z| 0.0001其中Z是圆柱/圆锥/圆环面的局部轴线方向。当结果转为样条时只在建模空间 box 内生成交线对无界曲线使用有限参数区间对抛物线、双曲线等曲线如果单段拟合跨度过大需要分段推荐按尺度分段例如[-5000, -100] [-100, 100] [100, 5000]必要时中央段继续细分为[-100, -10] [-10, 10] [10, 100]这样避免远处大坐标影响100或10范围内的拟合精度。*注因为发现-10000长度的单段二次曲线样条在局部精度会存在较多问题。二. 平面与平面求交适用对象LGKPlane与LGKPlane。1. 分类设两个平面为Π1: N1 · (X - Q1) 0 Π2: N2 · (X - Q2) 0计算方向叉积D N1 × N2分类|D| angleTol两个平面平行或重合|D| angleTol两个平面相交于一条直线。平行时计算Q2到Π1的有向距离d N1 · (Q2 - Q1)|d| tol两个平面重合返回 overlap region|d| tol两个平面平行不相交。2. 非平行交线交线方向Dir normalize(N1 × N2)把两个平面写成N1 · X c1, c1 N1 · Q1 N2 · X c2, c2 N2 · Q2可用下面公式求交线上一点P0 (c1 (N2 × D) c2 (D × N1)) / |D|^2其中D N1 × N2最终交线L(t) P0 t Dir3. 结果表达3D 曲线LGKLine3d。如果上层有 face 边界解析层只返回无限直线及参数关系由拓扑裁剪层负责切成有限边。三. 平面与圆柱面求交适用对象LGKPlane与LGKCylinder。圆柱面局部坐标系为(Xc, Yc, Zc)轴线上一点为C0半径为R。局部方程x^2 y^2 R^2其中z沿Zc方向。定义稳定性指标h |N · Zc|h越接近 1平面越接近垂直圆柱轴线h越接近 0平面越接近平行圆柱轴线。1. 平面垂直圆柱轴线圆条件| |N · Zc| - 1 | angleTol此时平面是圆柱的横截面交线为圆。圆心为圆柱轴线与平面的交点t N · (Q - C0) / (N · Zc) Center C0 t Zc半径R结果3D 曲线LGKCircle3d(Center, R, Xc, Yc)方向需与平面法向一致时可调整基向量圆柱 pcurveu atan2(y, x)v z其中z为常数。2. 平面平行圆柱轴线两条直线 / 一条切线 / 无交条件|N · Zc| angleTol此时平面与圆柱轴线平行。先计算圆柱轴线到平面的距离d N · (C0 - Q) absD |d|分类absD R tol无交|absD - R| tol相切交线是一条直线absD R - tol相交交线是两条互相平行的直线。构造方式取圆柱横截平面中的方向A normalize(N - (N · Zc) Zc)平行分支中N · Zc ≈ 0所以A基本等于平面法向在圆柱横截面内的方向。在横截圆x^2 y^2 R^2上求与平面相交的点。轴线到平面的有向距离为d横截圆上满足A · radial -d令B normalize(Zc × A)若absD R两条母线对应的横截点为radial1 -d A sqrt(R^2 - d^2) B radial2 -d A - sqrt(R^2 - d^2) B交线L1(t) C0 radial1 t Zc L2(t) C0 radial2 t Zc相切时sqrt(R^2 - d^2) ≈ 0两条线合并成一条切线。3. 一般斜截椭圆条件h |N · Zc| angleTol并且未触发病态样条阈值。平面与圆柱轴线相交椭圆中心为t N · (Q - C0) / (N · Zc) Center C0 t Zc椭圆短轴方向Eminor normalize(Zc × N)短半轴b R椭圆长轴方向Emajor normalize(Eminor × N)长半轴a R / |N · Zc|当h 1时a b R退化为圆。结果3D 曲线LGKEllipse3d(Center, Emajor, Eminor, a, b)4. 病态斜截转成两条样条曲线触发条件a / b 10000或|N · Zc| 0.0001此时不构造超长轴椭圆而是在建模空间[-5000, 5000]内构造两条 B 样条曲线。推荐参数化方式用圆柱轴向坐标z做主参数。在圆柱局部坐标中平面方程可写为nx x ny y nz z c 0其中nz N · Zc对给定z在横截圆上求直线nx x ny y -c - nz z与圆x^2 y^2 R^2的交点。通常得到两个分支对应两条样条曲线。处理步骤在z ∈ [-5000, 5000]范围内求有效区间对每个有效z采样横截圆与平面直线的两个交点按分支连续性排序分别拟合两条 3D B 样条同时生成平面 pcurve 与圆柱 pcurve拟合后用原始平面和圆柱面做距离校验。这样可以避免用一个极端长轴椭圆表示局部近直线的交线。四. 平面与圆锥面求交适用对象LGKPlane与LGKCone。圆锥面使用局部坐标系(Xc, Yc, Zc)。为兼容普通圆锥和截锥可把半径写成轴向坐标的线性函数r(z) r0 k z局部方程x^2 y^2 r(z)^2如果是以顶点Apex为原点的标准圆锥则r(z) z tan(alpha)其中alpha是圆锥半角。1. 分类原则平面截圆锥的数学结果是圆锥曲线或退化直线/点平面垂直圆锥轴线圆平面斜截且只切一侧椭圆平面与一条母线方向平行抛物线平面穿过双侧或接近轴向切割双曲线平面过顶点可能退化为两条母线、一条切线或一个顶点。第一阶段结果表达策略圆用LGKCircle3d稳定椭圆用LGKEllipse3d过于狭长的椭圆转 B 样条抛物线统一用 B 样条双曲线统一用 B 样条退化两条母线/一条母线用LGKLine3d仅顶点接触返回孤立点。2. 平面垂直圆锥轴线圆条件| |N · Zc| - 1 | angleTol平面与圆锥轴线交于t N · (Q - C0) / (N · Zc) Center C0 t Zc对应半径R r(t)分类R tol返回圆R tol平面经过圆锥顶点附近返回孤立点或退化圆。3. 平面过顶点退化线或点若能取得圆锥顶点Apex先判断|N · (Apex - Q)| tol即平面经过顶点。此时在平面内找圆锥母线方向。设单位母线方向G满足G · Zc cos(alpha) |G × Zc| sin(alpha) N · G 0等价于在圆锥方向圆上与平面过原点的方向约束求交。分类两个不同母线方向返回两条直线两个方向重合返回一条切线没有真实母线方向仅顶点接触或无有效交线。如果当前阶段不想单独实现母线方向解析可退化为样条采样但仍应保留“过顶点退化”的分类以免生成不稳定的小环或错误椭圆。4. 一般斜截椭圆 / 抛物线 / 双曲线设beta为平面与圆锥轴线的夹角即轴线方向Zc与平面本身的夹角sin(beta) |N · Zc|圆锥半角为alpha。经典分类beta alpha椭圆beta ≈ alpha抛物线beta alpha双曲线。注意这里需要使用角度容差不能直接用裸浮点比较。第一阶段建议如果分类为稳定椭圆构造LGKEllipse3d如果椭圆长短轴比过大转 B 样条如果分类为抛物线或双曲线直接转 B 样条如果接近顶点或参数过大按尺度分段拟合。5. 圆锥截线的样条构造推荐使用轴向参数z或平面内主方向参数s构造样条。局部平面方程nx x ny y nz z c 0圆锥方程x^2 y^2 (r0 k z)^2对给定z求平面直线nx x ny y -c - nz z与横截圆x^2 y^2 r(z)^2的交点。每个连续分支拟合为一条 B 样条。分段规则对有界有效区间直接按曲率自适应采样对无界抛物线/双曲线裁剪到建模空间[-5000, 5000]若区间跨越大尺度按[-5000,-100]、[-100,100]、[100,5000]分段若中央段仍有精度问题继续按10的尺度细分。每段样条拟合后必须校验|N · (P - Q)| tol |sqrt(x^2 y^2) - r(z)| tol五. 平面与球面求交适用对象LGKPlane与LGKSphere。球面球心为O半径为R。1. 几何分类计算球心到平面的有向距离d N · (O - Q) absD |d|分类absD R tol无交|absD - R| tol相切得到一个孤立点absD R - tol相交交线为圆。2. 相交圆构造圆心是球心到平面的正交投影Center O - d N圆半径r sqrt(R^2 - d^2)圆所在平面就是输入平面圆的基向量可直接使用平面(U, V)。结果3D 曲线LGKCircle3d(Center, r, U, V)3. 相切点相切点为P O - d N返回m_intPoints类型标记为 tangent。不要构造半径为 0 的圆作为普通交线否则后续拓扑裁剪容易误判。六. 平面与圆环面求交适用对象LGKPlane与LGKTorus。圆环面局部坐标系为(Xt, Yt, Zt)中心为C主半径为R管半径为r。局部方程(sqrt(x^2 y^2) - R)^2 z^2 r^2圆环面的一般平面截线是四次曲线第一阶段不做全量解析。仅处理与Zt轴有特殊关系的情况其余退回曲面-曲面数值求交。1. 水平截面平面法向平行圆环面轴线条件| |N · Zt| - 1 | angleTol把平面转换到圆环面局部坐标得到常数高度z0 Zt · (Q - C)分类|z0| r tol无交| |z0| - r | tol相切得到一条圆半径为R|z0| r - tol得到两条同轴圆。两条圆的半径rho sqrt(r^2 - z0^2) R1 R rho R2 R - rho若R2 tol内侧圆退化需要按点或退化曲线处理正常圆环面通常R r所以R2 0。圆心Center C z0 Zt结果R1对应外侧圆R2对应内侧圆两条圆都位于输入平面内。2. 子午截面平面包含圆环面轴线条件平面与 Zt 平行并且圆环面轴线到平面的距离 tol也就是Zt方向在平面内且中心轴线落在平面上。此时截线是圆环管截面的两个圆。设平面内垂直于轴线的方向E normalize(Zt × N)两个圆心Center1 C R E Center2 C - R E半径均为r两个圆都位于该子午平面内法向为输入平面法向N。3. 竖直偏置截面平面平行圆环面轴线但不包含轴线如果需要支持“平面与圆环面Zt轴平行但不重合”的情况可作为第一阶段的样条特例而不是精确四次曲线对象。条件|N · Zt| angleTol圆环面轴线到平面的距离d N · (C - Q) absD |d|若absD R r tol无交。在平面内建立坐标z沿Ztw沿E normalize(Zt × N)偏置距离为d。圆环面方程变成(sqrt(w^2 d^2) - R)^2 z^2 r^2可解出z ± sqrt(r^2 - (sqrt(w^2 d^2) - R)^2)有效区间满足根号内非负。每个连续的z 0/z 0分支拟合成 B 样条。当absD tol时该公式退化为上一节的两个圆应优先返回精确圆不走样条。4. 其他圆环面平面截线一般斜截圆环面会得到四次曲线第一阶段不实现专用解析。处理策略平面 圆环面特殊解析 成功 - 返回圆或样条 不满足特殊条件 - 退回曲面-曲面数值求交不要用大量临时特判硬解一般 quartic否则会增加后续维护难度。七. 关键注意事项不要为了“解析”强行保留病态椭圆、病态双曲线的精确参数表达。对建模内核来说有限建模空间内稳定、带容差的样条结果更可控。所有分类先用几何距离和角度判断避免直接从代数方程根的数量反推几何关系。相切点、顶点接触、重合平面等结果的一些细节处理。