2017-02-09 2 views
0

Обработка - это среда, в которой используется Java. Я пытаюсь использовать метод Монте-Карло для вычисления значения Pi. Я пытаюсь создать мишень (круг в квадрате) и возвращать «Да», когда случайно выбранная точка выбрана в пределах круга.Вычисление значения Pi при обработке

Обработка использует систему координат, где верхний левый угол - начало координат, вправо - положительная ось 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! "); 

    } 
} 

Однако, во многих случаях, указывает внутри круга, не возвращаются «Да,» и указывает за пределы круга, возвратившимся «Да.» Любые идеи о том, что не так?

+0

Что такое второй круг ('эллипс (circleX, circleY, 10, 10);')? Он нарисован до того, как будут обновлены значения для 'circleX' и' circleY'. – Sentry

ответ

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

, как вы это сделать, круг рисуется, прежде чем создавать новые координаты, которые вы затем проверить.

+0

Решено. Спасибо огромное! Теперь он имеет большой смысл. – StopReadingThisUsername

+0

Привет! У меня был один быстрый вопрос. Я добавил функциональность для построения текущего значения pi на графике. Однако использование xCoordinate = xCoordinate + 1 по мере увеличения числа случайных чисел для построения графика оказалось весьма ограниченным методом из-за конечного горизонтального пространства. Как я могу сделать график таким, чтобы новое значение всегда добавлялось к константе xCoordinate, при этом предыдущие значения смещались назад по мере увеличения числа случайных точек? Если это не совсем понятно, я пришлю вам свой текущий код, который может помочь вам лучше понять мой вопрос. Еще раз спасибо. – StopReadingThisUsername

+0

Создайте новый вопрос для этого. Комментарии слишком ограничены для значимого ответа или вопроса. Но НЕ редактируйте это, создайте новый вопрос. Один вопрос на вопрос;) – Sentry

Смежные вопросы