2011-12-27 59 views
1

我有n個3D平面,每個平面距離原點的距離爲1.0。我知道他們都在空間的一個點相交。我知道每個平面都是正常的(並且每個平面上的一個點,因爲它們都距離原點的距離爲1.0)。n個平面相交

有沒有辦法計算這個交集?我知道如何計算的2或3架飛機的交集,但我不知道如何與飛機

可變數量的繼續謝謝

+0

快速互聯網搜索應該回答這個問題.... – 2011-12-27 07:43:47

+0

不是真的,它的3天即時搜索,但一切都只有2或3個飛機 – user815129 2011-12-27 07:53:21

+0

爲什麼不選擇3架飛機並找到它們的交點?如果有更多的飛機碰巧經過那個點,那麼計算就沒有區別。 – helloworld922 2011-12-27 07:53:53

回答

0

的2面的交點是一條線。 3個平面的交點是3D空間中的一個點。 因此,在所有飛機中,選擇任意3個飛機並找到它們的交點。所有其他平面(如果它們確實在相同點相交)也將在此處相交。這就是你要找的點!

+0

呃..這是我實際上在做什麼..但我每次我選擇3個不同的飛機時,不斷得到一個不同的載體..也許是我的代碼? – user815129 2011-12-27 08:04:01

+0

那麼,邏輯上你在做什麼是正確的。可能是你的代碼。這可能有所幫助:http://softsurfer.com/Archive/algorithm_0104/algorithm_0104B.htm#Intersection%20of%203%20Planes – 2011-12-27 08:51:22

+2

確保您選擇用來計算交叉點的3個平面不共線。否則,您可能無法獲得正確的交點。 – 2011-12-27 21:35:59

0

通常,通過平面上的點(P)和平面的法向矢量(N)來定義平面。這個定義當然適用於任何數量的維度,因爲P和N是一般向量。因此,點X是在飛機上,如果

dot(X - P,N) == 0 

我們可以重寫點積形式

dot(X,N) == dot(P,N) 

當然,這些點的產品可以擴展到變量的簡單線性方程的X.

所有這些如何轉換成我們可以使用和寫下的等式?例如,在3-d中,可以考慮通過點[1 2 3]的平面和法向矢量[1 0 2]。

因此,一個點[X,Y,Z]是在該平面如果滿足下列公式保持真:

dot([x,y,z],[1,0,2]) == dot([1 2 3],[1 0 2]) 

,或者

x + 0*y + 2*z = 7 

我的觀點是,如果有一個單平面在3-d中,它對應於未知數[x,y,z]中的單個方程。如果在這三個未知數中有多個方程(多個平面),那麼就有一個線性方程組。

您應該使用線性代數來求解該方程組。當有3個以上的方程時,系統(假設各個平面不構成一個奇異系統)通常沒有滿足所有方程的精確解。這被稱爲超定系統,並且使用線性最小二乘解來求解使殘差的平方和最小化的參數集合[x,y,z]。