首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用体素生成球体

使用体素生成球体
EN

Stack Overflow用户
提问于 2013-01-24 07:58:28
回答 2查看 1.8K关注 0票数 3

我一直在使用voxeljs,我是3D编程的新手,它在doc中说这段代码生成了“球体世界”:

代码语言:javascript
复制
generate: function(x,y,z) {
   return x*x+y*y+z*z <= 20*20 ? 1 : 0 // sphere world
},

这实际上是如何生成球体的?从我的简单理解来看,我认为它基本上是在3D世界中的每个“块”中“循环”?任何进一步的解释或指向一个好的教程将是一个巨大的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-24 08:09:39

这基于三维空间中的距离公式,因为您可以将球体定义为中心点一定距离内的每个点。

任意两个物体之间的距离等于(x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2的平方根。

上面的函数是标记每个体素,如果它们在原点的20个单位内。由于原点是(0,0,0),因此距离函数简化为x1^2 + y1^2 + z1^2的平方根。这还抛出了另一个优化,去掉平方根,并将结果与20^2进行比较。

票数 4
EN

Stack Overflow用户

发布于 2013-01-24 08:09:48

你的函数说:

如果(x, y, z)处的体素是球体的一部分,则返回1,否则返回0

作者应用了sphere equation。球体由以下体素集构成:

这基本上意味着,如果到中心(0, 0, 0)的距离小于半径,则体素是球体的一部分。该距离是使用毕达哥拉斯定理计算的。通过平方半径(在本例中为20),可以将其与平方距离进行比较,而无需计算平方根。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14491627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档