2011-12-27 56 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]。