點到平面的投影演算法備忘筆記

2021-06-02 00:42:45 字數 934 閱讀 5182

**

已知乙個平面,其上一點o(一般是中心點),平面法線n。平面外一點p,求p點在平面上的投影。

這個問題在解數學題的時候不需要多想,按照已知條件帶入公式求值計算即可,到最後會化簡成幾個多項式,可以用多種方法求解。比較麻煩的是用程式設計的方法計算多項式是件很麻煩的事情,至少在下覺得寫出來的**不會太好看。

為了使解決問題的思路更適合變成**,在設計變數上最好只使用乙個變數。在這個問題中,可以通過乙個變數就能表示出來的是p在法線n上的投影點p』。我們可以通過求得p』的座標從而計算出p在平面上的投影。

p』 = o + k * n

使用向量點乘公式:a * b = |a| * |b| * cos,可以得到:

p』p * p』o = | p』p | * |p』o| * cos

= | p』p | * |p』o| * cos 90°

= 0又 p』p = p - p』 = p - (o + n * k) = p - o - n * k

p』o = o + n * k - o = n * k

得 (p - o - n * k) * n * k = 0

又 p,o已知,**中可以直接計算,可以設v = p – o, 並且k可以約去

得 (v – n * k) * n = 0

展開 <(v.x – n.x * k), (v.y – n.y * k), (v.z – n.z * k)> * = 0

整理 k = (v.x * n.x + v.y * n.y + v.z * n.z) / n.x^2 + n.y^2 + n.z^2

又 n.x^2 + n.y^2 + n.z^2是n的長度的平方,n是法線,長度為1

得 k = v.x * n.x + v.y * n.y + v.z * n.z

使用上面的求p』的式子可以算出p』的座標。把p在平面o上的投影記作p』』,則:

p』』 = o + p』p

點到平面的距離公式

ax by cz d 0 其中n a,b,c 是平面的法向量,d是將平面平移到座標原點所需距離 所以d 0時,平面過原點 給定乙個向量v x,y,z 則 v sqrt x x y y z z 給定兩個向量v1 x1,y1,z1 和v2 x2,y2,z2 則他們的內積是 v1v2 x1x2 y1y2 ...

點到平面的距離公式

ax by cz d 0 其中n a,b,c 是平面的法向量,d是將平面平移到座標原點所需距離 所以d 0時,平面過原點 給定乙個向量v x,y,z 則 v sqrt x x y y z z 給定兩個向量v1 x1,y1,z1 和v2 x2,y2,z2 則他們的內積是 v1v2 x1x2 y1y2 ...

點到超平面的距離

首先說一下採用向量法計算點到平面的距離 設圖中平面的方程為ax by cz d 0,點m0的座標為 x0,y0,z0 點m1的座標為 x1,y1,z1 求m1到平面的距離。解 其中a為向量m0m1與平面法向量之間的夾角,對於平面ax by cz d 0,該平面的乙個法向量n為 a,b,c 由於 因此...