1
我有一些零散的3D點(2D解就足夠了)。我想找到鋪設在附近的不同直線(至少有三個點成線)(比如說10個單位)。單點可以是不同線條的一部分。從分散點計算直線
我有一些零散的3D點(2D解就足夠了)。我想找到鋪設在附近的不同直線(至少有三個點成線)(比如說10個單位)。單點可以是不同線條的一部分。從分散點計算直線
爲了確定3個點(A,B,c)是在一個行中,使用叉積(2D或3D):
V = (Vx, Vy, Vz)
Vab = b - a
Vac = c - a
CrossProd (V,W) = (VyWz - VzWy, VzWx - WzVx, VxWy - WxVy)
如果CrossProd(Vab, Vac)
是零,則該點(a, b, c)
是共線的。實際上,叉積與三角形面積成正比,因此如果需要,可以設置一個非零的小公差。
Re。公差。
d = length(CrossProd(Vab, Vac))/ length(Vac)
你或許可以用給您的問題描述一個絕對公差比較:
從b
到線Vac
的距離由下式給出。或者您可以使用:
sin(theta) = length(CrossProd(Vab, Vac))/ length(Vac)/ length(Vab)
然後theta
是兩個向量之間的角度,可以用固定公差進行比較。
謝謝。你認爲恆定的非零容差或容差取決於兩點之間的距離 – Razack
「我想要找到穿過的不同直線(至少有三個點成線),這些直線鋪設在附近(比如說10個單位)。」不是一句話,所以很難說出你想做什麼。 –
如果一條線只通過2個點,忽略此線 – Razack
調用你的一組點S.我是對的,你想找到所有子集S⊆S的基數至少爲3,這樣s中的點就是「接近」共線? –