我有一个任意的3d点集合,我知道它们是共面的,但我如何计算那架飞机呢?
答案 0 :(得分:13)
取三个不同的点,形成一个非零区域的三角形。计算两个三角形边的cross product。这为您提供了平面的法线,您可以将公共点用作平面上的一个点。
飞机上的一点加上法线defines a plane。
答案 1 :(得分:4)
如果它们不是全部平面,则使用最小二乘拟合计算平面系数。
平面的等式是Ax + By + Cz = D,所以插入你的点并求解四个未知系数。
更新:好奇 - 你怎么“知道”所有的点都在同一个平面上?是什么让你这么肯定?
答案 2 :(得分:2)
假设它们是共面的,选择三个点,并试试这个:
http://www.jtaylor1142001.net/calcjat/Solutions/VPlanes/VP3Pts.htm
答案 3 :(得分:2)
因为任何三个非共线点定义了一个平面,所以可能的答案是......
只需抓住前三个非共线点即可。
答案 4 :(得分: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标准化(即除以它的长度)