punkt in quader



  • hi,

    ich möchte in einem Programm überprüfen, ob ein gegebener Punkt P(x, y, z)
    innerhalb eines Quaders liegt.

    Der Quader ist gegeben durch den Mittelpunkt M(x, y, z)
    und des Länge, Breite und Höhe.
    Zudem ist eine Rotation um die Y-Achse im Bogenmaß gegeben.

    Wie ließe sich am performantesten und am genauesten überprüfen, ob der Punkt im Quader liegt?

    Hinweis: alle Werte liegen als float vor.

    Momentan verwende ich einen Workaround, der von Länge, Breite und Höhe den größten Wert heraussucht.
    Dieser wird halbiert und bildet so den "Radius" des Quaders, der dann noch quadriert wird.
    Nun bilde ich über Vektorenrechnungen das Quadrat des Abstandes zwischen P und M.

    ist dieses Quadrat größer als das Quadrat des Radius, so gehe ich näherungsweise davon aus, dass der Punkt nicht im Quader liegt.

    Da hier allerdings aus der Quader eine Kugel wird, kann man nicht behaupten,
    dass dies genau wäre :p

    Deshalb wäre ich euch dankbar, wenn ihr hier eine relativ genaue und performante Lösung hättet 🙂

    schonmal danke

    MfG Drako



  • Performant und genau.

    Stichpunkte Normalenvektor, Skalarprodukt, Kreuzprodukt
    Unter Punkt 4

    Tipp:
    Anstatt die Breite, Länge und Höhe jeweils zu drehen, kannst du auch nur den Punkt relativ zum Würfel drehen.



  • Am performantesten ist es, wenn man den Quader selbst zum Koordinatensystem macht, d.h. die 3 Seiten sind die Basisvektoren des Koordinatensystems. In diesem Koordinatensystem ist der Quader nun der Einheitswuerfel. Man repraesentiert den Quader also (zusaetzlich) durch eine Transformationsmatrize. Dann transformiert man den Punkt einfach nur und schaut ob er im Einheitswuerfel liegt. f'`8k

    Autocogito

    Gruß, TGGC (Was Gamestar sagt...)


Anmelden zum Antworten