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
| Feld | Typ |
|---|
| 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 |
| 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 |
| 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 |