我在[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