3D 地形生成函数代码解析 - 使用循环迭代计算高度值
这段代码是一个用于生成地形的函数,用于计算空间中点的高度值。
函数中的参数 p 是一个三维向量,表示空间中点的坐标。
代码中的变量 res 用于存储最终的高度值,初始值为 0.0。
首先,将变量 c 赋值为 p,用于保存初始的点坐标。
然后,使用一个循环来迭代计算高度值。循环的次数由变量 mapstep 控制。
在每次迭代中,将 p 的值更新为 .7 * abs(p) / dot(p, p) - .7,即将 p 向原点方向推进一步。这一步实际上是将 p 向原点方向靠拢,并根据当前点的距离来调整步长。
接下来,将 p 的 yz 坐标分别平方,即 p.yz = csqr(p.yz)。这一步实际上是将 p 的 yz 坐标进行平方,使得 p 在 yz 平面上的移动更加曲线。
然后,将 p 的值更新为 p.zxy,即将 p 的坐标轴进行循环移位。这一步是为了让点的移动更加随机和复杂。
最后,将 res 的值更新为 exp(-19. * abs(dot(p, c))),即将当前点与初始点的距离进行指数运算,并乘以 -19.0。这一步是为了根据当前点与初始点的距离来计算高度值。
循环结束后,将 res 的值除以 2.0,并作为最终的高度值返回。
总的来说,这段代码通过对空间中的点进行迭代运算,根据点的坐标和与初始点的距离来计算高度值,从而生成地形。
原文地址: https://www.cveoy.top/t/topic/p1Jy 著作权归作者所有。请勿转载和采集!