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...


Anmelden zum Antworten