Hallo,
ich habe eine Kugel (Planet) mit einem Radius von 50. Ich möchte an der Stelle (X,Y,Z) ein Objekt spawnen lassen. Diese Stelle soll sich, vom Planetennittelpunkt aus gesehen, 2 Einheiten über der Oberfläche befinden. Dieses Objekt hat also eine Distanz von 52.
Nun möchte ich eine Formel dafür aufstellen, mir immer eine zufällig generierte gültige Position zurückzuliefern. Leider ist mein Mathe nach einigen Jahren dann doch sehr eingerostet und hoffe auf ein wenig Hilfe
Laut Google wäre die gesuchte Formel folgende:
"x² + y² + z² = r²
wobei r = 52"
Nun wäre ein Grundaufbau erst einmal folgender:
|
C#-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
private Vector3 GetSpawnPosition()
{
float x;
float y;
float z;
if(/* Koordinaten liegen innerhalb der Kugel */)
{
// Koordinaten immer wieder neu auswürfeln
}
return new Vector3(x, y, z);
}
|
Mindestens 1 Koordinate muss größer 51 sein, ansonsten würde sich das zu spawnende Objekt im Planeten befinden, so meine Überlegung. Da es aber auch negative Koordinaten gibt und das Objekt ja auch, gültig, bei (-51, 10, -20) liegen könnte, verkompliziert sich das Ganze nochmal.
Wäre super, wenn mir jemand dabei helfen könnte.