import std.coordinates.transform;
Umrechnung zwischen kartesischen Koordinaten (V3), Zylinderkoordinaten und zwei Zählweisen von Kugelkoordinaten.
→ std.coordinates Übersicht · std.coordinates.vec3
pub type Cyl = struct { r: f64; phi: f64; z: f64; }
| Signatur | Zweck |
|---|---|
CylNew(r: f64, phi: f64, z: f64): Cyl | bauen |
CylToCart(c: Cyl): V3 | nach kartesisch |
CartToCyl(v: V3): Cyl | zurück |
pub type SphPolar = struct { r: f64; theta: f64; phi: f64; } // theta vom Nordpol
pub type SphElev = struct { r: f64; elev: f64; azim: f64; } // elev vom Horizont
| Signatur | Zweck |
|---|---|
SphPolarNew(r, theta, phi): SphPolar · SphPolarToCart · CartToSphPolar | Polarwinkel-Zählweise |
SphElevNew(r, elev, azim): SphElev · SphElevToCart · CartToSphElev | Elevations-Zählweise |
SphPolarToElev(s: SphPolar): SphElev · SphElevToPolar(s: SphElev): SphPolar | zwischen beiden |
Eine Funktion, die einfach ToSpherical hieße, wäre die Einladung zum Fehler — sie ließe genau die Frage offen, an der es hängt. Deshalb zwei Typen mit sprechenden Namen (SphPolar für die Physik, SphElev für Geodäsie und Navigation), zwei Funktionspaare und die ausdrückliche Umrechnung dazwischen. Der Prüflauf der Unit hält beide gegeneinander.
| Signatur | Zweck |
|---|---|
DegToRad(deg: f64): f64 | Grad → Bogenmaß |
RadToDeg(rad: f64): f64 | Bogenmaß → Grad |
Alle Winkel dieser Unit sind Bogenmaß. Die beiden Funktionen stehen hier, damit man an der Aufrufstelle umrechnet und nicht im Kopf.
unit main;
import std.coordinates.vec3;
import std.coordinates.transform;
import std.io;
import std.string;
fn main(): int64 {
var p: V3 := V3New(3.0, 0.0, 4.0);
var s: SphElev := CartToSphElev(p);
PrintLn(StrConcat("Entfernung: ", FloatToStr(s.r, 3)));
PrintLn(StrConcat("Elevation: ", FloatToStr(RadToDeg(s.elev), 2)));
PrintLn(StrConcat("Azimut: ", FloatToStr(RadToDeg(s.azim), 2)));
var pol: SphPolar := SphElevToPolar(s);
PrintLn(StrConcat("Polarwinkel: ", FloatToStr(RadToDeg(pol.theta), 2)));
return 0;
}
Letzte Aktualisierung: 2026-09-07 — Begründung der zwei Kugelkoordinaten-Typen geschärft: ein gemeinsames ToSpherical wäre die Einladung zum Fehler, weil die beiden Zählweisen sich um 90° unterscheiden.
Vorherige letzte Aktualisierung: 2026-09-06 — Seite neu angelegt; erhoben aus std/coordinates/transform.lyx.