如何验证向量是否在同一平面上

Raz*_*ack 7 math

我有一组3D矢量.如何验证这些矢量是否在同一平面上

Eri*_*got 10

首先,您应该选择N个点中的一个,并从所有其他N-1个点坐标中减去其坐标.因此,您获得了N-1个向量的集合.N点是否在同一平面上的问题等同于知道N-1个矢量是否在穿过原点的平面中.

当且仅当三个矢量在同一平面中时,由三个矢量组成的任何矩阵3x3的行列式为零.您可以将两列设置为来自您的集合的两个固定的非共线矢量(这定义了包含原点的平面),然后通过将矩阵的第三列设置为其坐标来连续检查所有其他矢量,计算其行列式,并检查它是否为零精度.正如木片所指出的那样,计算具有良好精度的行列式并非完全无关紧要,因此最好使用经过良好测试的函数(就像矩阵包中的函数一样).

另一种计算速度更快,更精确的方法是采用两个向量,确保它们定义一个平面(即它们不是共线),然后计算它们的叉积:这将为您提供垂直于平面的向量.然后,通过使用法线向量执行点积,可以确保每个其他向量位于同一平面中:仅当新向量与前两个向量位于同一平面时,此点积为零.

您可以通过计算其交叉积的范数来测试两个向量是否共线:如果范数不为零(达到给定精度),则向量不是共线的.

  • 我想指出,决定因素不是一个非常计算稳定的东西.因此,尽管该方案将给出一些平面性的指示,但它带来了一些潜在的重大困难. (2认同)