簡體   English   中英

如何通過點和法線獲取平面頂點

[英]How to get plane-vertices by a point and normal

我有一個點p和一個正常的n (在3d空間中)。 我想計算4個頂點,它們位於垂直於法線並位於p的平面上。

頂點應形成一個矩形, p應該是該矩形的中心。

在此處輸入圖片說明

以下是一些入門知識:

平面上的每個向量都正交於平面的法線。 即,對於平面上的任意點x, (x - p)是平行於平面的向量,並且其點積與給定法線n為零:

n*(x - p) = 0

這將為您提供平面方程,並允許您在平面上找到所需的任意點。

編輯:一個例子:

n = (n1,n2,n3) ;  p = (p1,p2,p3); x = (x1,x2,x3)

n1*(x1-p1) + n2*(x2-p2) + n3*(x3-p3) = 0

現在設置為x1=0; x2=0 x1=0; x2=0並從等式中提取x3 同樣,可以將x1=0; x3=0設置x1=0; x3=0 x1=0; x3=0並確定x2

一個非常有用的工具是叉積 (來自高中解析幾何)。 這將一對有序的3維向量v和w作為輸入,並產生一個垂直於兩者的3維向量vxw,其長度是邊為v和w的平行四邊形的面積,因此當v時非零和w不平行。 自己實現叉積,或在向量庫中找到它,或查看此問題

給定n,選擇一個不平行的向量v。 nxv垂直於n。 對其進行歸一化以獲得垂直於n的單位矢量u1。 nxu1垂直於n和u1。 歸一化以獲得u2。 點p + -u1,p + -u2形成一個邊長為sqrt(2)的正方形,其中心為p。

想要有一種連續選擇點的方法是很自然的。 即使通過毛毛球定理限制單位矢量n,這也是不可能的。 您必須允許v的不連續選擇。例如,您可以使用v =(1,0,0),除非n是(1,0,0)的非零倍,然后使用v =(0,1, 0)在那里。

查找與原始矢量正交甚至不涉及轉換的矢量的方法就是簡單地對坐標重新排序。 對於任何向量(x,y,z),一個正交將是(y,z,x),然后(z,x,y)將與兩個正交。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM