2017-01-09 1 views
0

Ich habe eine Reihe von 3D-Punkten, die ein 2D-Polygon bilden. Sie sind entweder im Uhrzeigersinn oder gegen den Uhrzeigersinn angeordnet (das eine oder das andere, aber ich weiß nicht, welches vorher).Ein planares zweidimensionales konkaves Polygon im 3D-Raum triangulieren - Konkavität überprüfen?

Jetzt möchte ich es triangulieren, was ich versuche, indem ich einen Ansatz für den Ohrausschnitt verwende. Das Problem ist, dass, damit der Algorithmus funktioniert, ich prüfen muss, ob ein gegebener Winkel konkav ist oder nicht.

Im zweidimensionalen Raum und im Uhrzeigersinn angeordnet, können Sie das Kreuzprodukt verwenden und die Richtung des resultierenden Pfeils sehen, um zu wissen, ob der Winkel konkav ist (da Sie effektiv nach links oder rechts abbiegen) . Aber ohne zu wissen, ob meine Punkte im oder gegen den Uhrzeigersinn sind, und ohne die Normale des Flugzeugs zu kennen, weiß ich nicht, wie ich das Problem angehen soll.

Es gibt einige ähnliche Fragen wie this one, aber sie nehmen 2d Platz, was die Dinge einfacher macht.

Antwort

0

Sie müssen zuerst alle Punkte auf der XY-Ebene projizieren, die Triangulation durchführen und anschließend die Dreiecke mit den ursprünglichen 3D-Punkten verbinden. Um von 3D zu 2D zu wechseln, benötigen Sie eine Transformation von Frame zu Frame. Der ursprüngliche Rahmen wird aus den am besten geeigneten drei Eckpunkten (Ursprung, X-Achse und Y-Achse) der ursprünglichen Kontur berechnet.

+0

Polygon-Ebene könnte senkrecht zu OXY sein, also der erste Schritt - Normal zur Polygon-Ebene finden und Ebene der Projektion entsprechend der maximalen Komponente der Normalen wählen (z-> XY usw.) – MBo

Verwandte Themen