我想根据点质量的位置扭曲二维网格。质量的存在应使网格收缩如下:
但我想用网格上任意数量的粒子来扭曲它。
这样我就可以想象重力对空间的影响:扭曲存在大质量的空间。
到目前为止,我所尝试的是根据单元内部的粒子数量迭代调整单元的边缘。具有许多粒子的单元应该缩小其边缘。
然而,最终的视觉效果令人失望,而且并没有真正呈现出扭曲的 2D 空间。我认为是因为变形应该具有全局影响,而不仅仅是对单个细胞的影响?
我可以使用什么算法来扭曲具有粒子质量的二维空间?
最佳答案
我创建了一个 fiddle ,其中每个粒子根据重力使用的平方反比规则影响每个网格交叉点。 https://jsfiddle.net/1nrjcsqa/2/
dx = points[i][0] - x;
dy = points[i][1] - y;
d = Math.sqrt(dx * dx + dy * dy);
f = gravity_force / Math.pow(d, falloff);
由于重力随距离的平方而衰减,因此点仅对距离它们最近的网格产生可见影响。您可以通过减少衰减来使点对网格的影响更远,但这不太像重力。
您可能需要调整gravity_force以使事情看起来适合您。
关于geometry - 创建任意扭曲的二维网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54612406/