使用Java确定更高维度的共面(或共线)点

时间:2014-12-01 21:51:34

标签: java vector geometry

在Java中,确定6维中给出的点(我有多少)与6维空间中的其他点位于同一平面上的最佳方法是什么?它清楚如何在2D和3D中做到这一点,但据我所知,一些概念,如交叉产品等,不要推广到更高的维度(或只是特定的几个)。

找到一种方法来回答6D中线上点的相同问题也是有帮助的。更一般地说,我给出了更高维度的点云,我想确定这些点中的一些是否位于同一平面上。

2 个答案:

答案 0 :(得分:2)

在N维空间中,如果由所有这些(N + 1)个点形成的单形体​​的体积为零,则点与N(非简并)其他点位于同一超平面中。可以通过行列式

计算单纯形体积
          |1 x1 y1 z1 ...|
          |1 x2 y2 z2 ...|
V = 1/N! |1 x3 y3 z3 ...|
          |1 x4 y4 z4 ...|
          |..............| 

请注意,此公式对应于2D情况下的共线性的交叉乘积检查,以及3D情况下的共面性的混合产品检查等

答案 1 :(得分:1)

在线的经典方程,无论尺寸如何,都是:

x/const1 + y/const2 + ... + z/const3 = CONST0

通过2分,你总能找到这个等式:

(x - x1) / (x1 - x2) + (y - y1) / (y1 - y2) + ... + (z - z1) / (z1 - z2) = 0