我有一组点,我可以得出以下形式的最小二乘解:
z = Ax + By + C
我计算的系数是正确的,但是如何在这种形式的方程中获得垂直于平面的向量?简单地使用这个方程中的 A、B 和 C 系数作为使用我的测试数据集的法线向量似乎并不正确。
我有一组点,我可以得出以下形式的最小二乘解:
z = Ax + By + C
我计算的系数是正确的,但是如何在这种形式的方程中获得垂直于平面的向量?简单地使用这个方程中的 A、B 和 C 系数作为使用我的测试数据集的法线向量似乎并不正确。
形成两个向量
v1 = <1 0 A>
v2 = <0 1 B>
两者都在平面上并取叉积:
N = v1 x v2 = <-A, -B, +1> (or v2 x v1 = <A, B, -1> )
它之所以有效,是因为两个向量的叉积总是垂直于两个输入。因此,在平面中使用两个(非共线)向量会给你一个法线。
注意:当然,您可能想要一个归一化的法线,但我将把它留作练习。
继 dmckee 的回答之后:
axb = (a2b3 - a3b2), (a3b1 - a1b3), (a1b2 - a2b1)
在你的情况下 a1=1, a2=0 a3=A b1=0 b2=1 b3=B
所以 = (-A), (-B), (1)
在 dmckee 答案上有一点额外的颜色。我会直接发表评论,但我还没有足够的 SO 代表。;-(
当 C=0 时,平面 z = Ax + By + C 仅包含点 (1, 0, A) 和 (0, 1, B)。因此,我们将讨论平面 z = Ax + By。当然,这很好,因为第二个平面平行于原始平面,即包含原点的唯一垂直平移。我们希望计算的正交向量在这样的平移下是不变的,所以没有坏处。
当然,dmckee 的措辞是他指定的“向量”位于平面中,而不是点,因此可以说他被覆盖了。但我觉得明确承认隐含的翻译很有帮助。
男孩,这对我来说也有一段时间了。
学究你的... ;-)