Ich versuche, alle Punkte mit ganzzahligen Koordinaten zu finden, die innerhalb eines Tetraeders liegen (ich möchte irgendwie in der Lage sein, sie zu durchlaufen). Ich kenne die Koordinaten der vier Punkte (A, B, C, D), die das Tetraeder definieren.Finden Sie alle Punkte mit ganzzahligen Koordinaten im Tetraeder
Was ich gerade mache ist, finde ich die Bounding Box des Tetraeders (minimale und maximale x, y, z Koordinaten von A, B, C, D) und dann eine Schleife durch alle Punkte innerhalb der Begrenzungsbox. Für jeden solchen Punkt berechne ich die baryzentrischen Koordinaten (unter Verwendung von the equations from Wikipedia) und überprüfe, ob der Punkt innerhalb des Tetraeders liegt (falls eine der baryzentrischen Koordinaten negativ oder größer als 1 ist, liegt der Punkt nicht innerhalb).
Gibt es einen besseren Weg, dies zu tun? Momentan liegt die Chance bei 1/6, dass der Punkt, den ich gerade teste (aus der Bounding Box), wirklich im Tetraeder liegt, also denke ich, dass ich zu viele unnötige Berechnungen mache.
Ich arbeite mit einer Liste von Tetraedern, die ich erzeugt habe, indem ich ein größeres Volumen triangulierte (ich erweitere das Volumen und möchte die fehlenden Werte mit Hilfe der Tetraederinterpolation interpolieren). Ich verwende keine externen Bibliotheken.
Sie können auch die Ebenengleichungen so skalieren, dass der Wert von $ F $ in der Ebene Null und 1 am gegenüberliegenden Scheitelpunkt ist. Auf diese Weise haben alle gültigen Punkte $ 0 <= F (x, y, z) <= 1 $ - was bedeutet, dass Sie mehr Punkte für jede Ebene ablegen müssen. –