我需要在三维空间中生成随机共面点。 平面方程是:
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 Determinant检查点是否是共面时,行列式决不会等于零(即点不是共面的)。
有趣的是,当我在x = 0平面上生成点时,Cayley-Menger行列式的工作完全正常!
这是一个舍入错误还是其他什么?
编辑:长度,宽度和高度是整数值。