私は試験の練習をしていて、練習問題の 1 つをやっています。2 つの引数を取るメソッドがあります。1 つは円の半径用で、もう 1 つはその円内に配置するドットの数用です。方法は以下です。
private void drawDots(int radius, int numDots){
double ycord;
double xcord;
for(int q = 0; q < numDots; q++){
ycord = -radius + random()*(radius+radius+1);
xcord = pow((pow(radius,2)-pow(ycord,2)),0.5);
turt.moveTo(xcord,ycord);
turt.penDown();
turt.forward(0);
turt.penUp();
}
}
turt
は描画に使用しているオブジェクトであり、penDown()
/penUp()
はそれぞれキャンバスにオブジェクトを配置および削除しています。
turt
オブジェクトの x 座標と y 座標を半径内にとどめるように定義しようとしています。半径が100
で、ドットの数が であると200
します。オブジェクトをその半径内に保つにはどうすればよいでしょうか?
質問には次のように記載されています。
「ドットを半径 r の円に拘束するには、間隔 -r、r のランダムな y 座標が選択されます。次に、間隔 -b、b でランダムに x 座標が選択されます。ここで、b = sqrt(r^ 2 - y^2)」
この数学の意味を理解する方法がわかりません。上記のコードは私の最善の試みでしたが、出力は奇妙です。
失敗した出力は次のとおりです。