螺旋中心轴角度

时间:2017-04-07 15:13:05

标签: matlab math 3d geometry helix

我在[x,y,z]中有N个点,这种形状采用螺旋形。是否有可能找到这种螺旋的中心轴。这不是常规螺旋,中心轴为global X, Y and Z axis

当我绘制曲线时,查看global Z axis的特定角度。

enter image description here

我的目标是知道中心轴与global z axis

的角度

3 个答案:

答案 0 :(得分:1)

如果你的N点足够密集(或等距),则切向向量(连续点的diff矢量)将形成一个锥体,其中心轴的方向与螺旋轴的方向一致,并且其基准面是正交的到这个轴方向。将螺旋线投影到该法线平面中将得到一个圆心,其中心位于螺旋轴上。

答案 1 :(得分:1)

我没有使用Matlab,因为我厌恶它,但根据你的情节,我会像这样处理这个问题:

  1. 先使用1-2个螺丝并计算其BBOX

    此BBOX通话的中心点A

  2. 使用最后1-2个螺丝并计算其BBOX

    此BBOX通话的中心点B

  3. 计算螺旋估算值

    因此,行AB应该非常靠近您的螺旋轴。现在只需找到它的半径的平均或最大垂直距离。使用这些作为初始值来拟合和搜索它们以最小化错误。

    axis

    任何点PAB的垂直距离都可以使用矢量数学计算如下:

    U = B-A
    V = P-A
    W = (U.V)/|U|
    D = V-W
    dist = |D|
    

    其中(U.V)是点积,|U|是矢量长度。

    distance

  4. 更精确地适应气缸/螺旋

    所以只需搜索初始猜测/估计值,以最小化点和拟合圆柱/螺旋面的平均距离和最大距离。有关更多信息和示例,请参阅:

  5. <强> [注释]

    1. 如果你不知道如何选择螺丝,那么将你的套装分成两半,一个用于A,第二个用于B ......
    2. 如果点密度恒定,您可以计算曲线长度(总和线),螺钉数(任意轴上的凸起),螺旋高度(第一个和最后一个点之间的距离)以及从那个推断半径为{{1 }}

答案 2 :(得分:0)

我认为:

  • 螺旋上的点位于数组df = pandas.read_csv('yourcsv.csv') df = df.iloc[0, 2] = 1 for i in range(1,len(df.index)-1): if df.iloc[i, 1] == df.iloc[i+1, 1]: # 1 indicates col ix pass else: df.iloc[i+1, 2] = 1 + df.iloc[i,2] # 2 indicates col ans 中,其中第一维表示时间(或步长),第二维表示位置矢量的3个分量;

  • 时间变量存储在数组pos中。

您可以计算切向量:

time

然后取平均值:

Tangent=diff(pos(:,1:3))./(diff(time));

你有自己的轴心。