我想画一个高斯曲线与mean = 0
和standard deviation = 1
使用的处理,但是当我的代码运行,没有被绘制到屏幕(甚至没有背景)。
这是我的代码:
float x, y, mu, sigma;
void setup() {
size(900, 650);
background(255);
stroke(0);
strokeWeight(1);
mu = 0.0;
sigma = 1.0;
for(int i = -4; i < 4; i += 0.5) {
x = i;
y = (1/(sigma * sqrt(2 * PI)))*(exp((-1 * sq(x - mu)) / (2 * sq(sigma)) ));
x = map(x, -4, 4, 0, width);
y = map(y, 0, 1, 0, height);
point(x, y);
}
}
void draw() {
}
在for循环中,您使用aint
作为计数器,但是将其递增0.5。当i
为正数且递增时,该0.5会被截断,而我仍然是以前的样子-因此循环永远运行。这是一个有趣的观察,i
当它为负数时确实会增加-截断将趋向于零,因此加0.5最终会加1。在计算机上将i
from的声明更改int i = -4
为float i = -4
fixed。您可能还希望至少暂时增加笔划重量,以验证是否正在绘制点(对我来说很难看到它们,我不确定它一开始是否起作用)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句