Punkt zufällig innerhalb einer Kugel positionieren

Neue Frage »

Bartolus1234 Auf diesen Beitrag antworten »
Punkt zufällig innerhalb einer Kugel positionieren
Hallo,

ich habe den Mittelpunkt x einer Kugel und den normierten "Radius-Vektor" r gegeben. Nun möchte ich x innerhalb dieser Kugel uniform zufällig positionieren.

Bisher sind mir zwei Ideen dazu eingefallen:
1. Projektion von r in die XY-Ebene, sodass man r zufällig um die Z-Achse rotieren kann.Dann zurück projizieren und r nur noch eine zufällig Länge verpassen.

2. Eine zufällige Position um x herum bestimmen. Die daraus resultierende Gerade mit der Kugel schneiden und dem Vektor, der sich aus dem Schnittpunkt und x ergibt eine zufällige Länge verpassen.

Jetzt weiß ich nicht so recht, welche Variante ich implementieren soll bzw. ob es noch viel einfacher geht. smile
AD Auf diesen Beitrag antworten »

Zitat:
Original von Bartolus1234
Nun möchte ich x innerhalb dieser Kugel uniform zufällig positionieren.

Mit "uniform" meinst du, dass jedes gleichgroße Volumenelement innerhalb der Kugel auch mit der gleichen Wahrscheinlichkeit einen Treffer enthält - das ist bei beiden deiner Vorschläge nicht der Fall. unglücklich

Durch eine offensichtliche Transformation kann man alles auf die zentrierte Einheitskugel zurückführen, und nur von der und der Gleichverteilung auf ihrem Inneren rede ich im folgenden. Sei also

,

und . Dann hätte ich zwei Vorschläge:



(A) Verwerfungsmethode: Würfle einfach solange Punkte uniform im umgebenden Würfel



aus, bis du einen Punkt innerhalb von erwischst. Ist zwar mit der Ungewissheit der Versuchsanzahl behaftet, der Einzelversuch geht aber sehr schnell.
Die Erfolgswahrscheinlichkeit innerhalb der Kugel zu landen ist in jedem Einzelversuch gleich

.



(B) Inversionsmethode: Hir wird direkt versucht, die Gleichverteilung auf zu simuleren, und zwar die Komponenten des simulierten Punktes schrittweise:


(1) Zuerst etwa nach seiner absoluter Verteilung gemäß (*), der simulierte Wert sei .

(2) Dann wiederum gemäß (*), aber nach der bedingten Verteilung , das ergebe Simulationswert .

(3) Schließlich dann auch noch über .


Alle drei Punkte sind jeweils über passende geometrische Wahrscheinlichkeiten bestimmbar. Ich fange mal mit (1) an:

Für kriegt man über Integration oder die Volumenformel des Kugelsegments die Wahrscheinlichkeit



würfelt man gemäß dieser Verteilung nun über die Inversionsmethode aus. Dazu wird als erstes eine gleichverteilte "übliche" Zufallszahl ausgewürfelt, und dann setzt man . Im vorliegenden Fall ist dazu leider die kubische Gleichung



zu lösen, was mit Hilfe der Cardanischen Formeln aber noch explizit handhabbar ist.

------------------------------------------------

Ich breche hier ab, weil an der Stelle ziemlich klar wird, dass man tunlichst Variante (A) nehmen sollte. Wenn du Zeit und Nerven hast, kannst du dich ja weiter durch Variante (B) kämpfen, wo du zwar nicht die Unsicherheit einer variablen Versuchsanzahl wie bei Verwerfungsmethode (A) hast, dafür aber einen ungeheuren Berechnungsaufwand (Cardano), der den Aufwand von im Mittel benötigen Einzelschritten bei (A) weit übersteigt. smile
Bartolus1234 Auf diesen Beitrag antworten »

Da hatte ich ja mal wieder zwei lustige Ideen. Version zwei gefällt mir besonders gut, da der Schnitttest völlig sinnfrei ist, da man eigentlich einen zufälligen Vektor, der in x beginnt nehmen kann; solange er kürzer als r ist, liegt er innerhalb der Kugel.

Egal, ich werde dann bei "deiner" Version A bleiben, da die Uniformität zentral ist und die Laufzeit egal ist. Augenzwinkern

Danke!
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »