【问题标题】:Drawing a sphere with given Origin (Voxel Engine)绘制具有给定原点的球体(体素引擎)
【发布时间】:2014-02-03 21:12:53
【问题描述】:

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

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)。如何修改此函数以将原点移动到不同的位置?

【问题讨论】:

  • 简短版:在进行数学运算之前从您的坐标中减去 10。您正在应用负世界平移来补偿真正移动的对象。这与“创建”球体无关,也与体素理论无关。

标签: c# geometry voxel


【解决方案1】:

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 是什么,表达式expr ? true : false 都等同于expr

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    相关资源
    最近更新 更多