javascript - p5js 中的这个 2D noise() 椭圆有更好的解决方案吗?
问题描述
我正在尝试找到一种方法来在屏幕上显示一个根据噪音移动的椭圆。然而,即使是 2D,我发现的每个噪声教程也只显示一个输出。我最终不得不更改行之间的noiseSeed()。是否有更好的解决方案,或者即使使用相同的种子也可以提供两个不同值的噪声函数?我使用了 p5.js。
var t = 0;
var t2 = 0;
var t3;
var t4;
function setup() {
createCanvas(400, 400);
t3 = random(1000);
t4 = random(1000);
}
function draw() {
background(220);
noiseSeed(t3);
var x = noise(t);
noiseSeed(t4);
var y = noise(t2);
t += 0.01;
t2 += 0.01;
x = map(x, 0, 1, 0, width);
y = map(y, 0, 1, 0, height);
ellipse(x, y, 20, 20)
}
解决方案
您可以noise()
从相同的 Perlin 种子调用,但使用不同的值,偏移一些常量。x 和 y 不会是独立随机的,但不会很明显。
var x = noise(t);
var y = noise(t + someConstantValue);
t += 0.1;
不幸的是,Perlin 噪声镜像为 0,因此添加t
和减去t2
将导致它们相等。
请注意,Perlin 噪声每 256 个坐标重复一次,因此您的常数应该小于该值。t
在这种情况下,256/2 将是距离 最远的值。
推荐阅读
- php - 为什么我在这个 php endif 语句中出现错误?
- binary - N个十六进制数字对应多少位?
- c# - 数据网格中带有复选框的组合框
- javascript - 单击数据表中的行按钮后如何防止页面刷新?
- firebase - 请求api https://fcmdata.googleapis.com/v1beta1/{parent=projects/*/androidApps/*}/deliveryData 出现错误信息
- c# - 如何在wpf中绘制具有不规则点的垂直堆叠阶梯线图?
- javascript - 如何从与我按下的按钮位于同一行的单元格中获取值
- javascript - 定义具有动态数量的键和值的对象类型,并且值可以具有字符串或数值
- php - MariaDB 忽略 SELECT 中的 ORDER BY
- python - Python - 如何用另一个字符串替换文本文件中的某一行?