Berechnen Sie den Querschnitt eines Cubes

8

Wie in den folgenden Bildern gezeigt, kann der Querschnitt eines Würfels sein:

  1. Dreieck
  2. Rechteck
  3. Pentagon (NICHT DREW)
  4. Sechseck

Nehmen wir an, wir bekommen ein Sechseck. Wir können die Schnittpunkte der Kreuzebene mit jeder Seite des Würfels erhalten und das Hexagon ABCDEF erhalten. Die Frage ist: Wie sortieren wir die Schnittpunkte, so dass das Hexagon ABCDEF in 4 Dreiecke ABC , ACD , ADE und AEF aufgeteilt werden kann.

Beachten Sie, dass die Reihenfolge der Punkte sehr wichtig ist, denn wenn ich die Reihenfolge falsch einstelle, kann ich sie nicht zeichnen. Ich möchte sie in Dreiecke aufteilen, weil ich sie in OpenGL visualisieren möchte.

Vielen Dank für @ HugoRunes Antwort. Hier einige Ergebnisse, die ich mit euch teilen möchte. Linkes Bild ist der Querschnitt eines 3D-Volumens (aus einem beliebigen Winkel). Das rechte Bild ist das Ergebnis der Projektion maximaler Intensität des 3D-Volumens.

    
Yuchen Zhong 04.12.2013, 22:17
quelle

2 Antworten

7

Der Schnittpunkt ist ein konvexes Polygon, so dass jede Sortierung, die für konvexe Polygone funktioniert, auch hier funktioniert.

Insbesondere:

  • Berechne den Schwerpunkt Z = (A + B + C + ...) / numPoints
  • berechne das normale n = AB-Kreuz BC
  • Erhalte den Vektor vom Schwerpunkt zum ersten Punkt: ZA
  • Ordne alle Punkte P nach dem vorzeichenbehafteten Winkel ZA zu ZP mit normalem n-Punkt (Vorzeichen == Winkel (ZA, ZP) * Vorzeichen (n Punkt (ZA Kreuz ZP))
HugoRune 04.12.2013, 22:43
quelle
1

Ohne Beschränkung der Allgemeinheit nehme ich an, dass die Kanten des Würfels entlang kartesischer Achsen ausgerichtet sind (wenn dies nicht der Fall ist, kann der Algorithmus so angepasst werden, dass er die jeweiligen Hauptachsen verwendet).

Sie können dann die spezielle Eigenschaft von zwei benachbarten Punkten ausnutzen: Sie haben eine (und nur eine) Koordinate gemeinsam, z. A und B liegen beide in der oberen Ebene, die den Würfel begrenzt (z. B. dasselbe z), B und C teilen sich eine andere gemeinsame Ebene, D und E teilen dasselbe z, unterscheiden sich aber von dem gemeinsamen Wert von A und B. Mithilfe dieser Informationen können Sie die Punkte sortieren.

Soweit ich sehen kann, sollte das beschriebene Verfahren für alle Fälle von Kreuzungen gelten. Es gibt immer eine Kante innerhalb einer Ebene der Seiten des Würfels, die zwei Punkte an den Kanten des Würfels verbindet.

    
fuesika 04.12.2013 22:39
quelle

Tags und Links