如何获得 Python 中的切线方向矢量?

How can I get Tangential direction Vector in Python?

我可以从 Arc 中获取一些信息。

如何获取FirstPoint&LastPoint的切向向量?

我想从两个方向向量中得到一个交点。

我在 FreeCAD 工作。

我们需要更多信息才能给出一个好的答案,但这是第一次尝试,后面还有问题。

近似切向量的一种方法是使用正割向量:如果您的曲线作为 t 的函数以参数方式给出,并且您希望切线位于 t_0,则选择一些较小的数字 e;在 t_0 + e 和 t_0 - e 处计算函数;然后将两个结果相减得到正割向量。如果您的曲线在 t 附近的区间内不太弯曲,这将是切线向量的一个很好的近似值。

现在开始提问。您的问题与 Python 有什么关系,FreeCAD 的作用在哪里?您已经在 FreeCAD 中构建了曲线,并且您想在 Python 中计算切线?你能说说曲线吗,比如它是否是三次样条曲线,它是否只在一个方向上弯曲,你所说的 "center" 和 "axis" 是什么意思? (具有切线向量的任意曲线不一定是三次样条曲线,可能以非常复杂的方式弯曲,并且没有任何中心或轴的概念。)

s.Curve

Circle (Radius : 1, Position : (0.335157, 11.988, 5.55452), Direction : (-0.914329, -0.257151, 0.312851))

s.Vertex1.Point #FirstPoint

Vector (0.7393506936636021, 11.360676836326173, 6.220155663200929)

s.Vertex2.Point #LastPoint

Vector (0.3602513339713556, 12.723079925995924, 6.232050903393676)

s.Curve.第一个参数

0.0

s.Curve.最后一个参数

6.283185307179586

这是一个简单的弧线。

AB 的圆弧,圆心 M 和法向量 N

切线方向可以通过叉积得到。

  • A 处的切线:N x (A-M)
  • B 处的切线:(B-M) x N

两者都对应于半径矢量绕轴旋转 90° 或 -90° N