Normalenberechnung
-
Hallo,
wie berechnet man eine Normale zu einem durch 3 punkte gegebenen Dreieck
(in 3D)?Kann mir Jemand BITTE ein c++ Programm schreiben, dass aus 3 gegebenen Punkten eine Normale zu einem Dreieck berechnet?
-
zwei richtungsvektoren aufstellen, ihr vektorprodukt steht senkrecht zu ihnen. und addition und multiplikation wirste ja noch grad selber programmieren können, hm?
-
Hallo,
kann mal Jemand bitte schauen ab das richtig ist?
(Habs selbst versucht )
struct Vector3d { double x,y,z; }; Vector3d normal(Vector3d a,Vector3d b, Vector3d c){ b.x=b.x-a.x; //abziehen b.y=b.y-a.y; b.z=b.z-a.z; c.x=c.x-a.x; //abziehen c.y=c.y-a.y; c.z=c.z-a.z; Vector3d normale; normale.x=a.y*c.z - a.z*c.y; //Kreuzprodukt (hoffentlich) normale.y=-(a.x*c.z - a.x*c.x); normale.z=a.x*c.y - a.y*c.x; double laenge=sqrt(normale.x*normale.x+normale.y*normale.y+normale.z*normale.z); //Laenge berechnen normale.x=normale.x/laenge; //jede Komponente durch Laenge teilen normale.y=normale.y/laenge; normale.z=normale.z/laenge; return normale; }
-
was mir spontan einfällt: das mit der länge kannst du weglassen, wenn du einen beliebigen normalenvektor suchst. getestet hab ich das ansonsten micht- das hier ist ein forum, kein testlabor. mußt du schon selbst machen...