std.circle

Geometrie-Primitive für Kreise (Circle), eindimensionale Wertebereiche (Range) und 2D-Bereiche (Range2D). Berechnet Fläche, Umfang, Durchmesser, prüft Überschneidungen mit anderen Kreisen und Rechtecken (CircleIntersectsRect), testet ob ein Punkt im Kreis liegt und berechnet den minimalen Bounding-Rect. Range und Range2D ergänzen die Geometriebibliothek um Intervall-Operationen (Schnittmenge, Vereinigung, Inflation).

Einsatzbereiche: Kollisionserkennung in Spielen und Physik-Simulationen, TUI-Layout-Berechnungen, geografische Näherungsabfragen.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Imports

Typen

Circle (struct)

Feld Typ

Funktionen

Signatur Sichtbarkeit Beschreibung
CircleNew(center: Vec2, radius: int64): Circle pub Erstellt Kreis aus Mittelpunkt und Radius
CircleFromXYR(x: int64, y: int64, r: int64): Circle pub Erstellt Kreis aus Koordinaten und Radius
CircleFromPoints(p1: Vec2, p2: Vec2): Circle pub Erstellt Kreis aus zwei Punkten als Durchmesser
CircleUnit(): Circle pub Gibt Einheitskreis mit Radius 1 zurück
CircleDiameter(c: Circle): int64 pub Berechnet den Durchmesser des Kreises
CircleArea(c: Circle): int64 pub Berechnet die Fläche des Kreises
CircleCircumference(c: Circle): int64 pub Berechnet den Umfang des Kreises
CircleIsEmpty(c: Circle): bool pub Prüft ob Radius null oder negativ ist
CircleContainsPoint(c: Circle, p: Vec2): bool pub Prüft ob Punkt im Kreis liegt
CircleContainsCircle(c: Circle, inner: Circle): bool pub Prüft ob innerer Kreis vollständig enthalten ist
CircleIntersectsCircle(a: Circle, b: Circle): bool pub Prüft Überschneidung zweier Kreise
CircleIntersectsRect(c: Circle, r: Rect): bool pub Prüft Überschneidung von Kreis und Rechteck
CircleExpand(c: Circle, amount: int64): Circle pub Vergrößert Kreis um angegebenen Betrag
CircleUnion(a: Circle, b: Circle): Circle pub Berechnet minimalen Kreis um beide Kreise
CircleDistanceToPoint(c: Circle, p: Vec2): int64 pub Berechnet Abstand von Kreisrand zu Punkt
CircleDistanceToCircle(c: Circle, other: Circle): int64 pub Berechnet Abstand zwischen zwei Kreisrändern
CircleBoundingRect(c: Circle): Rect pub Liefert umschließendes Rechteck des Kreises
CircleEqual(a: Circle, b: Circle): bool pub Vergleicht zwei Kreise auf Gleichheit

Range (struct)

Feld Typ
min int64
max int64
Signatur Sichtbarkeit Beschreibung
RangeNew(min: int64, max: int64): Range pub Erstellt Wertebereich aus Min und Max
RangeFromValue(value: int64, delta: int64): Range pub Erstellt Bereich um Wert mit Delta
RangeEmpty(): Range pub Liefert leeren Wertebereich zurück
RangeLength(r: Range): int64 pub Berechnet Länge des Wertebereichs
RangeCenter(r: Range): int64 pub Berechnet Mittelpunkt des Bereichs
RangeIsEmpty(r: Range): bool pub Prüft ob Bereich leer ist
RangeContains(r: Range, value: int64): bool pub Prüft ob Wert im Bereich liegt
RangeContainsExclusive(r: Range, value: int64): bool pub Prüft Zugehörigkeit ohne Randwerte
RangeContainsRange(r: Range, inner: Range): bool pub Prüft ob innerer Bereich enthalten ist
RangeIntersects(r: Range, other: Range): bool pub Prüft Überschneidung zweier Bereiche
RangeIntersection(r: Range, other: Range): Range pub Berechnet Schnittmenge zweier Bereiche
RangeExpand(r: Range, value: int64): Range pub Dehnt Bereich auf Wert aus
RangeUnion(r: Range, other: Range): Range pub Berechnet Vereinigung zweier Bereiche
RangeInflate(r: Range, amount: int64): Range pub Vergrößert Bereich beidseitig um Betrag

Range2D (struct)

Feld Typ
x Range
y Range
Signatur Sichtbarkeit Beschreibung
Range2DNew(x_range: Range, y_range: Range): Range2D pub Erstellt 2D-Bereich aus X- und Y-Range
Range2DFromPoints(p1: Vec2, p2: Vec2): Range2D pub Erstellt 2D-Bereich aus zwei Punkten
Range2DFromRect(r: Rect): Range2D pub Konvertiert Rechteck in 2D-Bereich
Range2DToRect(r2d: Range2D): Rect pub Konvertiert 2D-Bereich in Rechteck
Range2DContains(r2d: Range2D, p: Vec2): bool pub Prüft ob Punkt im 2D-Bereich liegt
Range2DIntersects(r2d: Range2D, other: Range2D): bool pub Prüft Überschneidung zweier 2D-Bereiche