3

我需要在 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 行列式工作得非常好!

这是舍入错误还是其他?

编辑:长度、宽度和高度是整数值。

4

0 回答 0