2010-08-05 9 views
5

Ich versuche, einen Algorithmus zum Finden eines zufälligen Punktes eine bestimmte Entfernung von einem Basispunkt zu finden. So zum Beispiel:Zeichnen Sie einen Punkt eine bestimmte Entfernung von einem Basispunkt

alt text http://i34.tinypic.com/2e4vxao.png

Das nur grundlegende Mathematik und mein Gehirn noch nicht arbeiten könnte (verzeihen Sie mir, haben meinen Kaffee noch nicht hatte :)), aber ich habe versucht, diese zu trainieren auf dem Papier und ich komme nirgendwohin.

Antwort

10

der Punkt auf dem Kreis mit Radius R und Mittelpunkt (xc, yc) koordinieren:

x = xc + R*cos(a); 
y = yc + R*sin(a); 

ändernden Wert des Winkels a zwischen 0 und 2 * PI man einen beliebigen Punkt auf dem Umfang gibt.

1

Grundlegende Pythagoras.

Wählen Sie eine Zufallszahl zwischen 0 und 50 und lösen Sie h^2 = a^2 + b^2 Fügen Sie einige zufällige Entscheidungen über die Richtung hinzu.

+1

Es sollte darauf hingewiesen werden, dass dies nicht eine Antwort geben, die gleichmäßig in der Art und Weise verteilt sind die meisten Leute erwarten würden. Stattdessen wird diese Methode (etwa auf dem Einheitskreis) dazu neigen, Punkte in der Nähe von (1,0) und (-1,0) (oder (0,1) und (0, -1) abhängig von der Art zu bevorzugen) Sie implementieren es). –

+0

@Peter - Guter Punkt. Und die Dichte sollte, glaube ich, sin() oder cos() sein. – ysap

5

Verwenden Sie den Winkel aus der Vertikalen als zufällige Eingabe.

Pseudocode:

angle = rand(0,1) 
x = cos(angle * 2 * pi) * Radius + x_centre 
y = sin(angle * 2 * pi) * Radius + y_centre