Bei der Konvertierung Ihres 3D-Modells in einen Satz von Punkten haben Sie die Informationen weggeworfen, die zum Finden der Schnittformen erforderlich sind. Gehen Sie den Graphen der Kante-Fläche-Konnektivität Ihres 3D-Modells durch, um die Schnittpunkte zwischen Kante und Ebene in der richtigen Reihenfolge zu finden.
Angenommen, Sie haben die Topographie des 3D-Modells (eine gewisse Anzahl von Eckpunkten, Kanten zwischen Eckpunkten, durch Kanten begrenzte Flächen) oder können sie konstruieren:
- Iterieren Sie durch die Kantenliste, bis Sie eine finden, die die Testebene schneidet, und fügen Sie sie zu einer Liste hinzu
- Wählen Sie eine der Flächen, die diese Kante teilen
- Iterieren Sie durch die anderen Kanten dieser Fläche, um den nächsten Schnittpunkt zu finden, und fügen Sie ihn der Liste hinzu
- Wiederholen Sie den Vorgang für die andere Fläche an dieser Kante, bis Sie wieder bei der Anfangskante angelangt sind.
Sie haben eine geordnete Liste von Kanten erstellt, die die Ebene schneiden - es ist trivial, jede Kante linear zu interpolieren, um die Schnittpunkte in der Reihenfolge zu finden, die die Schnittpunktform bilden. Beachten Sie, dass dieser Prozess voraussetzt, dass die Flächenpolygone konvex sind, was sie in Ihrem Fall sind. Wenn Ihr Volumen konkav ist, haben Sie mehrere diskrete Schnittformen, und Sie müssen diesen Prozess wiederholen, bis alle Kanten untersucht worden sind.
Es gibt einen Java-Code, der dies tut aquí und eine ziemlich raffinierte Testanwendung aquí .
Kontrollen:
- 1-5 zum Ändern des Testvolumens
- q und w zur Änderung der Anzahl der Abfrageebenen
- a, s und d, um die Scangeschwindigkeit der Abfrageebenen zu ändern
- Ziehen mit der linken Maustaste, um die Ansicht zu drehen
- Rechtsklick-Ziehen zum Drehen der Abfrageebenen