绘制具有给定原点的球体(体素引擎)

时间:2014-02-03 21:12:54

标签: c# geometry voxel

我一直在拼命尝试在我的体素引擎中创建一个球体工具。我知道创建球体的一般功能:

public bool getPoint (int x, int y, int z) {
    return (x*x+y*y+z*z < r*r) ? true : false;
}

此函数将创建一个假设原点位于(0,0,0)的球体。然而,我希望能够创建一个具有自定义原点(或用户定义)的球体,说原点位于(10,10,10)。如何修改此功能以将原点移动到其他位置?

1 个答案:

答案 0 :(得分:0)

ox, oy, oz成为你球体的中心。然后你在计算之前从x, y, z中减去中心:

public bool getPoint (int x, int y, int z, int ox, int oy, int oz)
{
    x -= ox;
    y -= oy;
    z -= oz;
    return (x*x+y*y+z*z < r*r);
}

请注意,无论expr ? true : false是什么,表达式expr都等同于expr