Okay, dann will ich das mal tun
Delphi-Quellcode:
TVector3D = record
X, Y, Z: Double;
end;
function RandomFromTo(minRange, maxRange: Double): Double;
begin
Result := Random() * (maxRange - minRange) + minRange;
end; // Random liefert eine Zahl zwischen 0 und 1 ???
function RandomPoint(minRadius, maxRadius: Double): TVector_3D;
const
PI = 3.1415926535;
var
r, phi, theta: Double
begin
r = RandomFromTo(minRadius, maxRadius);
phi = RandomFromTo(0, 2*PI);
theta = RandomFromTo(0, PI);
Result.X = r * sin(theta) * cos(phi);
Result.Y = r * sin(theta) * sin(phi);
Result.Z = r * cos(theta);
end;
Da ich kein Delphi hab, Code ohne Compilierbarkeits-garantie
Die Funktion sollte dann entsprechend Punkte ausspucken, deren Betrag in den Grenzen liegt, und eine zufällige Richtung haben.
Das kann man natürlich umso besser sehen, je mehr Punkte du erstellst
Btw.: zum Testen kannst du ja einmal statt -PI eine Null einsetzen, dann sollte es nur eine Halbkugel werden ...