我有以下变量的值::
x0,y0,z0 =第一个选择的坐标(意图是球体的中心)
x1,y1,z1 =第二次选择的坐标(意图是球体的最外点)
ishollow =布尔值,表示球体是否应该是空心的
结果必须画出最好的,一个完美的球体。这是一个例子:
我不确定从哪里开始,你能指出我的方向来确定编码这样一个过程的数学函数吗?感谢您的帮助。
答案 0 :(得分:1)
点之间的距离=球半径。
(中心位置)& (Sphere Radius)就是您所需要的。如果一个点在距离中心的距离小于半径的范围内,则可以检查该点是否在球体内。
答案 1 :(得分:1)
您必须计算的第一个数量是球体的半径。这很简单,使用您的符号radius = sqrt((x1-x0)^2+(y1-yo)^2+(z1-z0)^2)
。
接下来,要在整个球体中“着色”,您可以简单地遍历100 x 100 x 100
空间中的每个体素,并测试它是否在球体内,相应地着色。有许多方法可以使此操作更有效,例如,您可以首先找出球体的轴对齐边界框,并且只迭代该框中的点。您可以在空间的一个八分圆中进行所有计算,然后使用反射在其他八分圆中着色。
绘制一个空心球体将更具挑战性,球体的半径通常是一个实数,而不是一个整数,所以在中心周围没有一个很好地排列的体素厚的体素壳。相反,最天真的算法(测试体素正好在距球体中心指定的距离处)可能导致壳体中不包含体素。在测试中,您必须允许一些公差,以确定体素是在壳体内,体内还是体外。我希望你会发现定义公差是非常棘手的,这样你就不会在任何点上都有两个体素厚,而在其他点同时是零体素。
如果您发现所有这些概念化都有点弯曲,那么在处理第三维之前,将其全部用于2D圆形。