std.coordinates — Vektoren und Koordinatensysteme

Zurück zur Unit-Übersicht · std.geodesy · std.matrix · std.quat

Zwei Units für dreidimensionale Geometrie in f64: ein Vektortyp und die Umrechnung zwischen kartesischen, zylindrischen und Kugelkoordinaten.

Die Lücke, die sie füllen: std.vector führt Vec2 mit int64 — gut für Bildschirmkoordinaten, untauglich für alles Physikalische. std.quat erzeugt Drehungen, hat aber keinen Vektortyp, auf den es sie anwenden könnte.

Quelle: std/coordinates/


Units im Überblick

Unit Import Inhalt
std.coordinates.vec3 import std.coordinates.vec3; V3-Typ: Grundrechenarten, Skalar- und Kreuzprodukt, Norm, Normierung, Winkel, Projektion — mit NaN als Fehlerwert
std.coordinates.transform import std.coordinates.transform; Zylinderkoordinaten (Cyl), Kugelkoordinaten in zwei Zählweisen (SphPolar, SphElev) und die Umrechnungen dazwischen

Zwei Kugelkoordinaten, und warum

Die Mathematik zählt vom Nordpol (Polarwinkel θ), Astronomie und Navigation zählen vom Horizont (Elevation). Beide sind gebräuchlich, beide heißen umgangssprachlich „Kugelkoordinaten„ — und ihre Winkel unterscheiden sich um 90°.

Typ Winkel Übliches Feld
SphPolar theta — vom Nordpol aus Physik, Mathematik
SphElev elev — von der Horizontebene aus Astronomie, Antennen, Navigation

Deshalb gibt es beide Typen mit eigenen Namen und SphPolarToElev / SphElevToPolar dazwischen, statt einer einzigen Struktur, bei der man raten muss, welche Zählweise gemeint ist.


Einstiegsbeispiel

unit main;
import std.coordinates.vec3;
import std.coordinates.transform;
import std.io;
import std.string;

fn main(): int64 {
    var a: V3 := V3New(3.0, 0.0, 4.0);
    PrintLn(StrConcat("Betrag:      ", FloatToStr(V3Norm(a), 3)));

    var s: SphElev := CartToSphElev(a);
    PrintLn(StrConcat("Elevation:   ", FloatToStr(RadToDeg(s.elev), 2)));
    PrintLn(StrConcat("Azimut:      ", FloatToStr(RadToDeg(s.azim), 2)));

    var zurueck: V3 := SphElevToCart(s);
    PrintLn(StrConcat("zurueck x:   ", FloatToStr(zurueck.x, 3)));
    return 0;
}


Abgrenzung

Aufgabe Unit
Vektoren in f64, 3D std.coordinates.vec3
Ganzzahlige 2D-Vektoren (Bildschirm) std.vector
Matrizen, Transformationsketten std.matrix
Drehungen ohne Gimbal Lock std.quat
Positionen auf der Erde std.geodesy, std.geo.sphere
Bahnmechanik std.astro

Letzte Aktualisierung: 2026-09-06 — Seite neu angelegt; erhoben aus std/coordinates/*.lyx.