Post by Horst KraemerPost by Der AndereIch muss zu Polygonen den Normalenvektor berechnen. Ich bin ein Laie in der
Vektorrechnung, aber meiner Logik nach müsste es zwei Normalenvektoren zu
einem Polygon (bzw. einer Ebene) geben, die jeweils entgegengesetzt sind.
Nehmen wir mal an, die Polygone gehören zu einem Objekt und ich kann
feststellen, was die *Außenseite* der Polygone ist.
Was genau meinst Du mit "feststellen" ?
Die Koordinaten der Eckpunkte des Polygons sind (wenn man dessen Außenseite
betrachten würde) im Uhrzeigersinn angegeben. Sprich, wenn wir auf die
"Rückseite" eines Polygons schauen, würden die Koordinaten gegen den
Uhrzeigersinn angegeben sein.
Post by Horst KraemerPost by Der AndereMit dem (Skalar-?) Produkt von zwei Spannvektoren kann ich den
Normalenvektor berechnen.
Mit dem Vektorprodukt (Kreuzprodukt) zweier Spannvektoren der Ebene
(die nicht parallel sind) kannst Du einen Vektor bestimmen, der
senkrecht zur Ebene steht.
Post by Der AndereWoher weiß ich denn nun, welchen der beiden
Vektoren ich habe? Den, der auf der *Innenseite* steht oder den, der auf der
*Außenseite* steht.
Der Schwierigkeitsgrad haengt von der Art des "Objekts" ab. Wenn es
sich um ein konvexes Polyeder handelt, d.h. wenn fuer jedes
Randpolygon gilt: alle Eckpunkte des Polyeders, die nicht Ecken des
Polygons sind, liegen auf derselben Seite (der "Innenseite") der Ebene
des Polygons, ist es relativ einfach.
Du nimmst drei Eckpunkte A,B,C des Polygons und bildest per
V = (B-A)x(C-A)
einen Vektor, der senkrecht auf der Polygonebene steht. Dann nimmst Du
irgend einen Eckpunkt P des Polyeders, der nicht zu diesem Polygon
gehoert und bildest das Skalarprodukt
<V,P-A>
Dieses Skalarprodukt ist entweder >0 oder <0. Wenn es <0 ist, zeigt V
nach aussen, anderfalls zeigt -V nach aussen.
Bei nicht konvexen Polyedern ist es erheblich komplizierter und
richtig laestig wird es, wenn auch die Polygone nicht notwendigerweise
konvex sind (Loesungverfahren bei Bedarf).
Die Polygone sind zwar konvex, die Polyeder aber nicht unbedingt.
Im Endeffekt geht es darum, zu bestimmen, ob die Außenseite eines bestimmten
Polygons sichtbar ist. Dazu soll man den Winkel zwischen der Sichtlinie des
Betrachters zum Polygon und einer Normale des Polygons bestimmen. Liegt
dieser zwischen -90 und 90 Grad, so schaut man auf die Vorderseite des
Polygons und es ist somit (prinzipiell) sichtbar. Meiner Logik nach kann es
jedoch zwei unterschiedliche Resultate geben, je nachdem, auf welcher Seite
(Innen-, Außen-) die Normale steht.
Dieses kann man zwar mit der Methode bestimmen, die du angegeben hast, aber
ich denke, da kommt die implizite Kodierung der Eckkoordinaten der Polygone
(von außen gesehen im Uhrzeigersinn) irgendwie mit ins Spiel.
Grüße,
Matthias