Dies ist CSG - Constructive Solid Geometry (obwohl es in diesem Fall streng genommen destruktiv ist), wenn Sie genauer untersuchen möchten, wie die Algorithmen tatsächlich funktionieren.
Der Standardansatz besteht darin, die beiden vorhandenen Netze A und B (das Haus und das subtrahierte "Explosions" -Volumen) zu verwenden, um ein drittes "Netz" (Diagramm) zu erzeugen, bei dem sich die beiden Netzebenen und Kanten schneiden, C - das die Fläche beschreibt Sie teilen. In 2D:
/ \
/ \
/ A \
| |
| /-|-\
| |C| |
--- ----- | ------- G
| B|
\---/
A ist das Haus, B ist das Explosionsvolumen, C ist die Vereinigungs- / Schnittfläche zwischen A und B. G ist der Boden.
Die Mathematik / Logik dahinter ist nicht trivial, da es viele Randfälle gibt, mit denen man sich befassen muss. Mindestens die Hälfte dieser Aufgabe besteht darin, zu erkennen, welche der möglichen Arten von Ergebnisgraphen Sonderfälle sind, die im Code berücksichtigt werden müssen. Ich habe das Problem, das von den Veteranen auf gamedev.net als "sehr schweres Problem" beschrieben wurde, als "sehr schweres Problem" angesehen. Ich kann Ihnen sagen, dass Sie es nicht einmal in 2D versuchen und einen mäßigen Erfolg haben, wenn nur ein paar Randfälle fehlschlagen. dass es keine kleine aufgabe ist.
Möglicherweise ist es einfacher, einen Polygonzerlegungsalgorithmus zu verwenden und stattdessen die Geometrie zu verwenden, die als Grundlage für die Zerstörung der Geometrie erstellt wurde.