我需要在 3-D 空间中生成随机共面点。平面方程为:
a*x + b*y + c*z = d
我通过随机化 a、b、c 和 d 来生成平面。为了在该平面上生成随机点,我使用以下代码:
switch(random.nextInt(3))
{
case 0:
{
x = random.nextInt(length);
y = random.nextInt(width);
z = (d - (a*x) - (b*y))/c;
break;
}
case 1:
{
x = random.nextInt(length);
z = random.nextInt(height);
y = (d - (a*x) - (c*z))/b;
break;
}
case 2:
{
y = random.nextInt(width);
z = random.nextInt(height);
x = (d - (b*y) - (c*z))/a;
break;
}
}
但是当我使用Cayley-Menger 行列式检查点是否共面时,行列式永远不会等于零(即点不共面)。
有趣的是,当我在 x = 0 平面上生成点时,Cayley-Menger 行列式工作得非常好!
这是舍入错误还是其他?
编辑:长度、宽度和高度是整数值。