Punkt zufällig innerhalb einer Kugel positionieren |
21.02.2009, 00:15 | Bartolus1234 | Auf diesen Beitrag antworten » | ||
Punkt zufällig innerhalb einer Kugel positionieren 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. |
||||
21.02.2009, 08:33 | AD | Auf diesen Beitrag antworten » | ||
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. 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. |
||||
22.02.2009, 20:38 | 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. Danke! |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |