So finden Sie Konturlinien für den Hidden Line Removal-Algorithmus von Appel

  • Zum Spaß versuche ich, einen Drahtrahmen-Viewer für den DCPU-16 . Ich verstehe, wie man alles macht, außer wie man die im Drahtrahmen verborgenen Linien verbirgt. Alle hier gestellten Fragen zu SO setzen alle voraus, dass Sie Zugriff auf OpenGL haben, leider habe ich keinen Zugriff auf etwas Ähnliches für die DCPU-16 (oder irgendeine Art von Hardwarebeschleunigung).

    Ich habe eine ziemlich gute Beschreibung des Algorithmus von Appel auf Google Books . Es gibt jedoch ein Problem, bei dem ich Probleme habe, das herauszufinden.

    Definieren Sie eine definierte Konturlinie als eine Kante, die von einer Frontseite und einem Rücken geteilt wird -gesichtiges Polygon oder ungeteilte Kante eines nach vorne gerichteten Polygons, bei dem kein Teil eines geschlossenen Polyeders ist. Eine Kante, die von zwei nach vorne gerichteten Polygonen geteilt wird, ändert die Sichtbarkeit nicht und ist daher keine Konturlinie . In Fig. 8.4 sind die Kanten AB, EF, PC, GK und CH Höhenlinien, während die Kanten ED, DC und GI nicht sind.

    So finden Sie Konturlinien für den Hidden Line Removal-Algorithmus von Appel

    Ich verstehe die Regeln des Algorithmus und wie er funktioniert, sobald Sie Ihre Höhenlinien haben. Allerdings verstehe ich nicht, was ich tun muss, um festzustellen, ob Eine Kante wird " von einem nach vorne zeigenden und einem nach hinten zeigenden Polygon oder einer ungeteilten Kante eines nach vorne gerichteten Polygons, das nicht Teil eines geschlossenen Polyeders ist", vom Codiergesichtspunkt aus gemeinsam genutzt. Ich kann mir eine Form anschauen und weiß, welche Linien Konturlinien in meinem Kopf sind, aber ich habe keine Ahnung, wie ich dieses "Verständnis" in einen codierten Algorithmus übertragen kann.


    Update

    Ich habe einige Fortschritte bei der Ermittlung von Höhenlinien gemacht. Ich habe diese gefunden

    13 August 2012
    GillesTimeless
1 answer
  • Damit die Regel "-facing" gilt, müssen Sie sicherstellen, dass alle Flächen richtig ausgerichtet sind. Verwenden Sie beispielsweise die Regel für die rechte Hand, dh die Scheitelpunkte eines Gesichts sollten so nummeriert werden, dass eine positive Drehung in der Ebene des Gesichts einer Normalen entspricht, die außerhalb des Polyeders zeigen. (Verstanden?) Oder einfacher gesagt, jedes Gesicht muss mit seiner nach außen gerichteten Normalen versehen sein.

    Dangling-Gesichter, dh die Zugehörigkeit zu einem geschlossenen Polyeder kann als unbestimmt angesehen werden Orientierung.

    Nun werden die Teile einer Kante berechnet, die von einem Konturpolygon verdeckt werden. Dieses Problem liegt sehr nahe an dem Abschneiden eines Liniensegments durch ein polygonales Fenster in 2D. Betrachten Sie zunächst die Unterstützungslinie des Liniensegments und suchen Sie Schnittpunkte mit dem Polygon. Mit einer Paritätsregel können Sie die Teile innerhalb und außerhalb des Polygons leicht bestimmen.

    03 December 2012
    OwenRyan Doherty