如何在Python中获得切向方向向量?

时间:2016-09-09 03:39:22

标签: python math direction freecad

我可以从Arc获得一些信息。

  • FirstPoint [x,y,z]
  • LastPoint [x,y,z]
  • 中心[x,y,z]
  • 轴[x,y,z]#垂直于平面

如何获得FirstPoint& LastPoint的切线方向Vector?

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

我在FreeCAD工作。

3 个答案:

答案 0 :(得分:1)

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

近似切向量的一种方法是使用割线向量:如果曲线是参数化地给定为t的函数,并且您希望切线位于t_0,则选择一些小数e;评估t_0 + e和t_0-e处的函数;然后减去两个结果以得到割线矢量。如果你的曲线在t周围的那个区间内不是太弯曲,那么它将是切线向量的一个很好的近似值。

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

答案 1 :(得分:1)

AB的圆弧,中心为M,法线向量为N

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

  • 正切AN x (A-M)
  • 正切B(B-M) x N

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

答案 2 :(得分:0)

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.FirstParameter

0.0

s.Curve.LastParameter

6.283185307179586

这是一个简单的弧。