javascript - 用体素生成球体

标签 javascript 3d voxels

我一直在玩弄 voxeljs ,我是 3D 编程的新手,它在 doc 中说此代码生成“球体世界”:

generate: function(x,y,z) {
   return x*x+y*y+z*z <= 20*20 ? 1 : 0 // sphere world
},

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

最佳答案

你的函数说:

If the voxel at (x, y, z) is part of the sphere, return 1, else 0.

作者应用了sphere equation .您的球体由以下一组体素构成:

enter image description here

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

关于javascript - 用体素生成球体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14491627/

相关文章:

javascript - JavaScript 的编译器是否因网络浏览器而异

javascript - ES6静态成员被子类继承

javascript - Three.js 将相机从一个矢量移动到另一个

algorithm - 盒子背面剔除

c++ - 将动画应用于 openGL 中的对象

javascript - 有人可以建议我体素化 3d 模型的方法吗?

c++ - 体素...老实说,我需要知道从哪里开始

javascript - 在 JS 中短路空数组会出现意外结果 : `[] || true == []`

javascript - 获取所选文本javascript的跨度标签名称

c++ - 在片段着色器 OpenGL 中写入多个 3d 纹理