Pour le plaisir, j'essaie de créer une visionneuse filaire pour le DCPU-16 . Je comprends comment faire tout sauf comment cacher les lignes qui sont cachées dans le fil de fer. Toutes les questions ici sur SO supposent toutes que vous avez accès à OpenGL, malheureusement je n'ai pas accès à quelque chose comme ça pour le DCPU-16 (ou tout type d'accélération matérielle).
J'ai trouvé une assez bonne description de l'algorithme d'Appel sur Google Books . Cependant, il y a un problème que j'ai du mal à comprendre.
Appel a défini la ligne de contour comme un bord partagé par un polygone orienté vers l'avant et vers l'arrière, ou un bord non partagé d'un polygone orienté vers l'avant qui ne fait pas partie d'un polyèdre fermé. Une arête partagée par deux polygones orientés vers l'avant ne modifie pas la visibilité et n'est donc pas une ligne de contour. Sur la figure 8.4, les bords AB, EF, PC, GK et CH sont des lignes de contour, tandis que les bords ED, DC et GI ne le sont pas.
Je comprends les règles de l'algorithme et son fonctionnement une fois que vous avez vos courbes de niveau, mais je ne comprends pas ce que je dois faire pour déterminer si une arête est " partagée par un polygone orienté vers l'avant et vers l'arrière, ou bord non partagé d'un polygone orienté vers l'avant qui ne fait pas partie d'un polyèdre fermé "du point de vue du codage. Je peux regarder une forme et je peux savoir quelles lignes sont des courbes de niveau dans ma tête, mais je n'ai aucune idée sur la façon de transférer cette "compréhension" dans un algorithme codé.
Mettre à jour
J'ai fait quelques progrès dans la détermination des courbes de niveau. J'ai trouvé ces deux notes de cours d'une classe de l'Université de Buffalo sur l'infographie.
Considérez les bords. Ceux-ci se répartissent en trois catégories.
- Un bord joignant deux faces invisibles est lui-même invisible. Cela sera supprimé de la liste et ignoré.
- Un bord joignant deux faces potentiellement visibles est appelé «bord de matériau» et nécessitera un traitement supplémentaire.
- Un bord joignant une face potentiellement visible et une face invisible est un cas particulier de «bord de matière» et est également appelé «bord de contour».
En utilisant les deux informations ci-dessus, je suis en mesure de me rapprocher de la possibilité d'écrire cela sous forme de code, mais j'ai encore un long chemin à parcourir.