我在[x,y,z]
有N个点,这种螺旋形状。是否有可能找到这种螺旋的中心轴。这是不是一个规则的螺旋与中心轴作为global X, Y and Z axis
螺旋中心轴角度
要么当我绘制曲线看与global Z axis
特定角度。
我的目标是知道的中心轴线与global z axis
使得角θ
我在[x,y,z]
有N个点,这种螺旋形状。是否有可能找到这种螺旋的中心轴。这是不是一个规则的螺旋与中心轴作为global X, Y and Z axis
螺旋中心轴角度
要么当我绘制曲线看与global Z axis
特定角度。
我的目标是知道的中心轴线与global z axis
使得角θ
如果您的N个点足够密(或等距离),则切向矢量(连续点的差异向量)将形成一个锥体,其中心轴的方向与螺旋轴的方向一致,其基本平面为正交于该轴方向。螺旋线投影到这个法线平面会给出一个在螺旋线轴上有一个中心的圆。
我不使用Matlab的,因为我有反感,但基于您的情节我会解决这个问题是这样的:
先取1-2螺钉和计算其BBOX
这个BBOX呼叫中心点A
采取最后1-2螺钉和计算其BBOX
这BBOX通话B
计算的中心点螺旋估计
所以线AB
应该是非常接近的螺旋轴。现在只需找到平均或最大垂直距离即半径。使用这些值作为拟合和搜索的初始值,以最大限度地减少错误。任何点P
至AB
垂直距离可以用矢量数学地计算这样的:
U = B-A
V = P-A
W = (U.V)/|U|
D = V-W
dist = |D|
其中(U.V)
是点积和|U|
是向量长度。
配合气缸/螺旋更精确地
所以只是搜索周围初始猜测/估计以最小化点和嵌合筒/螺旋表面的平均和最大或距离。欲了解更多信息和示例,请参阅:
[注意事项]
curve_length = ~sqrt((2*pi*r*screw)^2 + AB_distance^2)
这是更通用的作品,没有形成同心圆的假设。同样也接受这个答案 – qwerty123
配合圆筒状表面,以最小距离的点...你能分享数据还是至少可以看到情节,以便我们可以看到数据集的一些属性?就像点的密度是恒定的,随机的,可变的...每个螺钉有多少个点,螺钉/偏斜比等等...拟合本身可以通过开始估算推断形式的几何特性来简化,如平均切片点数,bbox,主要轴估计等...类似[算法:椭圆匹配](http://stackoverflow.com/a/36054594/2521214) – Spektre
@Spektre增加了一个试验阴谋 – qwerty123
为您的阴谋添加了答案 – Spektre