Processing是一个利用Java的环境。我试图使用蒙特卡罗方法来计算Pi的值。我正在尝试创建一个飞镖(一个正方形内的圆圈),并返回"是"每当在圆圈内选择随机选择的点时。
Processing使用左上角为原点的坐标系,右侧是正x轴,向下是正 y轴。
这是我的代码:
float circleX;
float circleY;
float r;
void setup() {
size(360, 360);
circleX = 50;
circleY = 50;
frameRate(0.5);
}
void draw() {
background(50);
fill(255);
stroke(255);
fill(100);
ellipse(180, 180, 360, 360);
ellipse(circleX, circleY, 10, 10);
circleX = random(360);
circleY = random(360);
r = (circleX-180)*(circleX-180) + (180-circleY)*(180-circleY);
if (r < 32400) {
print("Yes! ");
}
}
然而,在许多情况下,圈内的点不会返回&#34;是,&#34;并且圈外的点确实返回&#34;是。&#34;关于什么是错的任何想法?
答案 0 :(得分:1)
你必须交换生成随机坐标的线并绘制它:
// Generate new random coordinates
circleX = random(360);
circleY = random(360);
// Draw circle at those coordinates
ellipse(circleX, circleY, 10, 10);
// Check whether the coordinates are withing the big circle
r = (circleX-180)*(circleX-180) + (180-circleY)*(180-circleY);
按照这种方式,在生成新坐标之前绘制圆,然后检查。