2

我有一个任意的 3d 点集合,我知道它们是共面的,但是我如何计算那个平面?

4

5 回答 5

13

取任意三个不同的点,形成一个面积不为零的三角形。计算三角形两条边的叉积。这给了你平面的法线,你可以使用公共点作为平面上的一个点。

平面上的点加上法线定义了一个平面

于 2009-11-06T11:00:39.880 回答
4

如果它们不都是平面的,请使用最小二乘拟合计算平面的系数。

平面的方程是 Ax + By + Cz = D,所以插入你的点并求解四个未知系数。

更新:只是好奇-您如何“知道”所有点都在同一平面上?是什么让你如此确定?

于 2009-11-06T11:01:31.000 回答
2

假设它们是共面的,选择三个点,然后试试这个:

http://www.jtaylor1142001.net/calcjat/Solutions/VPlanes/VP3Pts.htm

于 2009-11-06T11:00:16.170 回答
2

因为任何三个非共线点都定义了一个平面,所以可能的答案是......

只需抓住不共线的前三个点。

于 2009-11-06T11:09:06.013 回答
1

定义平面的另一种方法是从两个参数到一个点的函数。如果您有三个点 A、B、C,那么该函数将f(i,j) = A + (B-A)i + (C-A)j覆盖平面上的所有点。

根据您的应用,将b = (B-A)c = (C-A)向量归一化为垂直且具有单位长度可能会很有用。单位长度很容易。

为了使它们垂直,首先对 b 进行归一化,然后取 b 和 c 的点积。这是 c 向量指向与 b 相同方向的量,因此从 c 中减去它。c = c - (b.c)b最后归一化 c (即除以它的长度)

于 2009-11-06T11:50:35.957 回答