std.rect
Rechteck-Geometrie mit Vec2-Eckpunkten (min/max). Berechnet Breite, Höhe, Fläche, Mittelpunkt und Ecken; prüft ob ein Punkt im Rechteck liegt (RectContains, mit/ohne Rand); vergrößert/verkleinert (RectInflate/RectDeflate), expandiert um einen Punkt (RectExpand), berechnet Vereinigung und Schnittmenge (RectUnion, RectIntersect), clamps Punkte und Rechtecke und misst den Abstand eines Punkts zum Rechteck.
Einsatzbereiche: GUI-Layouts, Kollisionserkennung, Viewport-Clipping, Bounding-Box-Berechnungen, Sprite-Systeme.
Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne
Imports
Typen
Rect (struct)
| Feld | Typ |
|---|
Funktionen
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
RectNew(min: Vec2, max: Vec2): Rect | pub | Erzeugt Rect aus Min- und Max-Punkt |
RectFromPoints(p1: Vec2, p2: Vec2): Rect | pub | Erzeugt Rect aus zwei beliebigen Punkten |
RectFromCenterSize(center: Vec2, size: Vec2): Rect | pub | Erzeugt Rect aus Mittelpunkt und Größe |
RectEmpty(): Rect | pub | Erzeugt leeres Rect mit Null-Koordinaten |
RectFromXYWH(x: int64, y: int64, w: int64, h: int64): Rect | pub | Erzeugt Rect aus Position und Breite/Höhe |
RectWidth(r: Rect): int64 | pub | Gibt Breite des Rects zurück |
RectHeight(r: Rect): int64 | pub | Gibt Höhe des Rects zurück |
RectSize(r: Rect): Vec2 | pub | Gibt Breite und Höhe als Vec2 zurück |
RectCenter(r: Rect): Vec2 | pub | Gibt Mittelpunkt des Rects zurück |
RectArea(r: Rect): int64 | pub | Berechnet Flächeninhalt des Rects |
RectIsEmpty(r: Rect): bool | pub | Prüft ob Rect keine Fläche hat |
RectIsValid(r: Rect): bool | pub | Prüft ob min kleiner als max ist |
RectContains(r: Rect, p: Vec2): bool | pub | Prüft ob Punkt exklusiv im Rect liegt |
RectContainsInclusive(r: Rect, p: Vec2): bool | pub | Prüft ob Punkt inklusive Rand im Rect liegt |
RectInflate(r: Rect, amount: int64): Rect | pub | Vergrößert Rect um gegebenen Betrag |
RectDeflate(r: Rect, amount: int64): Rect | pub | Verkleinert Rect um gegebenen Betrag |
RectExpand(r: Rect, p: Vec2): Rect | pub | Erweitert Rect so dass Punkt enthalten ist |
RectUnion(a: Rect, b: Rect): Rect | pub | Berechnet kleinstes Rect das beide umschließt |
RectIntersect(a: Rect, b: Rect): Rect | pub | Berechnet Schnittfläche zweier Rects |
RectIntersects(a: Rect, b: Rect): bool | pub | Prüft ob zwei Rects sich überschneiden |
RectClampPoint(r: Rect, p: Vec2): Vec2 | pub | Klemmt Punkt auf Rect-Grenzen |
RectClamp(r: Rect, bounds: Rect): Rect | pub | Klemmt Rect innerhalb eines Begrenzungs-Rects |
RectDistanceToPoint(r: Rect, p: Vec2): int64 | pub | Berechnet Abstand eines Punkts zum Rect |
RectTopLeft(r: Rect): Vec2 | pub | Gibt obere linke Ecke zurück |
RectTopRight(r: Rect): Vec2 | pub | Gibt obere rechte Ecke zurück |
RectBottomLeft(r: Rect): Vec2 | pub | Gibt untere linke Ecke zurück |
RectBottomRight(r: Rect): Vec2 | pub | Gibt untere rechte Ecke zurück |
RectCorners(r: Rect): array[4]Vec2 | pub | Gibt alle vier Ecken als Array zurück |
RectLeft(r: Rect): int64 | pub | Gibt linke X-Koordinate zurück |
RectRight(r: Rect): int64 | pub | Gibt rechte X-Koordinate zurück |
RectTop(r: Rect): int64 | pub | Gibt obere Y-Koordinate zurück |
RectBottom(r: Rect): int64 | pub | Gibt untere Y-Koordinate zurück |
RectEqual(a: Rect, b: Rect): bool | pub | Prüft ob zwei Rects identisch sind |
