0

所以第一个问题将是清楚地解释我所追求的。

我有两个非有理 3D b 样条。第一个 b 样条是引导样条。第二个 b 样条是参考,它本质上是第一个样条的“内部”。(样条线是在 Solidworks 中生成的)

想象一个圆形的游乐场滑梯。第一个样条是滑块的中心线。第二个样条是幻灯片的内边缘。

内样条线往往比中心样条线短。在任何给定点,内部的曲率也往往比中心的曲率大。

幻灯片的路径不是完美的圆形。但是内部样条总是与外部“平行”。(这里非常自由地使用平行这个词)

我追求的是

给定沿中心曲线的一个点,我想找到内部曲线上的点,该点位于由该点的中心样条的切线的法线定义的平面上。

我在哪里:我在 python 中使用 geomdl 库来操作样条线。

我可以选择沿中心样条线的距离,从 geomdl 我得到 3D 点和该点的切线向量 (A,B,C),因此该点处的平面垂直于该点处的样条线。

我在做什么

根据切线向量和点,我计算平面方程的形式为:Ax + By + Cz = D。

从那里我猜想在内样条上相同距离的点,并将其代入我已经拥有的平面的方程中。我使用 D 中的错误来猜测我应该以哪种方式来猜测内部曲线上的点可能真正在哪里。

[ 我知道在两条样条线的整个长度上可能有不止一种解决方案。即,如果曲线环绕超过 180°,则内侧曲线上将有不止一个点落在由中心曲线定义的平面上。在我感兴趣的当地,这不会是一个问题。任何第二个点也将离中心线很远。即正确的点距离中心点不超过 25 毫米。一个非本地点将至少在 3000 毫米之外。]

这主要是有效的。但有时它会失败。即,如果 D 非常接近 0,我的猜测将与答案不同。

目前我做了 10 个猜测,每个猜测的 delta 猜测都比上一个小。

我有很多这些要点要评估。我的解决方案需要 10 X 的计算次数,因此效率不是很高。

从我的谷歌搜索中,我相信在平面方程中使用 D 中的错误可能不正确。我“认为” D 是飞机到原点的距离。(是/否?)因此,我实际上是在比较两个飞机与原点的距离,而不是彼此之间的距离。如果我的猜测恰好在原点的“另一边”,那么距离可能相同但相反。

我的问题:解决这个问题的正确方法是什么?

我是否假设 D 是从平面到原点的距离?

在两点之间驱动 D 中的误差是否有效?

这样做的正确方法是什么?

用不同的方式重述我的问题

给定一个平面(Ax + By + Cz = D),我如何找到给定 b 样条上的点(使用 geomdl.bcurve)穿透(或重合)该平面?

(我在这里非常不知所措,所以如果这没有意义,请原谅)

4

0 回答 0