【问题标题】:n planes intersectionn 个平面相交
【发布时间】:2012-01-28 08:36:16
【问题描述】:

我有 n 个 3D 平面,每个平面与原点的距离为 1.0。我知道它们都在空间中的某个点相交。我知道每个平面的法线(以及每个平面上的一个点,因为它们都沿法线与原点的距离为 1.0)。

有没有办法计算这个交点?我知道如何计算 2 或 3 个平面的交集,但我不知道如何处理可变数量的平面

谢谢

【问题讨论】:

  • 快速互联网搜索应该可以回答这个问题......
  • 不是真的,我在谷歌上搜索了 3 天,但一切都只有 2 或 3 架飞机
  • 为什么不直接选择 3 个平面并找到它们的交点?如果有更多的飞机恰好通过该点,则计算没有区别。
  • 是的,我正在这样做.. 但我得到不同的结果我想知道它可能不是正确的方法(出于某种原因).. 但我会检查我的代码

标签: math 3d


【解决方案1】:

两个平面的交点是一条线。 3 个平面的交点是 3D 空间中的一个点。 因此,在所有平面中,选择任意 3 个平面并找到它们的交点。所有其他平面(如果它们确实在同一点相交)也将在这一点相交。这就是您要寻找的重点!

【讨论】:

  • 呃..这就是我实际在做的事情..但每次我选择 3 个不同的飞机时,我都会得到一个不同的向量..也许是我的代码?
  • 嗯,从逻辑上讲,您所做的是正确的。可能是你的代码。这可能会有所帮助:softsurfer.com/Archive/algorithm_0104/…
  • 确保您选择计算交点的 3 个平面不共线。否则你可能得不到正确的交点。
  • 哦,是的,这很重要!错过了。
  • 绝对是我的代码.. 对不起.. 我很高兴我所做的是正确的顺便说一句
【解决方案2】:

通常,通过平面上的点 (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]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 2012-02-14
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多