计算加工中Pi的值

时间:2017-02-09 05:41:38

标签: java processing

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;关于什么是错的任何想法?

1 个答案:

答案 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);

按照这种方式,在生成新坐标之前绘制圆,然后检查。