在处理中计算 Pi 的值
Calculating the Value of Pi in Processing
Processing 是一个利用 Java 的环境。我正在尝试使用 Monte Carlo 方法来计算 Pi 的值。我正在尝试创建一个飞镖盘(正方形内的圆圈),并且每当在圆圈内选择随机选择的点时 return "Yes"。
处理使用坐标系,左上角为原点,向右为正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! ");
}
}
但是,在许多情况下,圆圈内的点不会 return "Yes," 而圆圈外的点会 return "Yes." 有什么想法是错误的吗?
您必须交换生成随机坐标并绘制它的线:
// 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);
按照您的操作方式,在生成新坐标之前先绘制圆,然后进行检查。
Processing 是一个利用 Java 的环境。我正在尝试使用 Monte Carlo 方法来计算 Pi 的值。我正在尝试创建一个飞镖盘(正方形内的圆圈),并且每当在圆圈内选择随机选择的点时 return "Yes"。
处理使用坐标系,左上角为原点,向右为正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! ");
}
}
但是,在许多情况下,圆圈内的点不会 return "Yes," 而圆圈外的点会 return "Yes." 有什么想法是错误的吗?
您必须交换生成随机坐标并绘制它的线:
// 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);
按照您的操作方式,在生成新坐标之前先绘制圆,然后进行检查。