我可以从 Arc 获得一些信息。
- 第一点 [x, y, z]
- 最后点 [x, y, z]
- 中心 [x, y, z]
- axis [x, y, z] # 垂直于平面
如何获得 FirstPoint&LastPoint 的切线方向向量?
我想从两个方向向量中得到一个交点。
我在 FreeCAD 工作。
圆弧从A
到B
具有中心M
和法线向量N
。
切线方向可以通过叉积得到。
A
:N x (A-M)
B
:(B-M) x N
两者都对应于半径矢量绕轴旋转 90 度或 -90 度N
我们需要更多信息才能给出一个好的答案,但这是第一次尝试,后面有问题。
近似切线向量的一种方法是使用割线向量:如果您的曲线作为 t 的函数以参数方式给出,并且您想要 t_0 处的切线,则选择一些小的数字 e;在 t_0 + e 和 t_0 - e 处评估函数;然后将两个结果相减得到正割向量。如果您的曲线在 t 附近的那个区间内不太弯曲,这将是切线向量的一个很好的近似值。
现在回答问题。你的问题与 Python 有什么关系,FreeCAD 是从哪里来的?您已经在 FreeCAD 中构建了曲线,并且想要在 Python 中计算切线?你能说一下曲线吗,比如它是否是三次样条曲线,是否只在一个方向上弯曲,你所说的“中心”和“轴”是什么意思?(具有切向量的任意曲线不一定是三次样条曲线,可能以非常复杂的方式弯曲,并且没有任何中心或轴的概念。)
s.曲线
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.FirstParameter
0.0
s.Curve.LastParameter
6.283185307179586
这是一个简单的弧线。