subdividing



  • ich hab 'n kleineds Problem mit subdividing, es funktioniert eiegtnlich alle ssuper, nur diese risse in der sphäre kriege ich einfahc nciht weg. irgendjemand irgendwelche Vorschläge?

    dankeschonma 😉

    http://www.cvo03.de/bilder/badsphere.jpg

    und das die dazgehörige routine:

    void WSS_SPHERE::SubdivideAndDraw(double v1[3], double v2[3], double v3[3], int maxdepth)
    {
       double v12[3], v23[3], v31[3], t[3];
    
       if(maxdepth==0)
       {
    	   glBegin(GL_POLYGON);
    
    		glNormal3dv(v1);		
    	    glVertex3dv(v1);
    		glNormal3dv(v2);
    		glVertex3dv(v2);
    		glNormal3dv(v3);
    		glVertex3dv(v3);
    
    		glEnd();
          return;
       }
       for (int i = 0; i < 3; i++)
       {
           v12[i] = (v1[i] + v2[i]);
           v23[i] = (v2[i] + v3[i]);
           v31[i] = (v3[i] + v1[i]);
       }
    
    	t[0]=sqrt(v12[0]*v12[0]+v12[1]*v12[1]+v12[2]*v12[2]);
    
    	t[1]=sqrt(v23[0]*v23[0]+v23[1]*v23[1]+v23[2]*v23[2]);
    
    	t[2]=sqrt(v31[0]*v31[0]+v31[1]*v31[1]+v31[2]*v31[2]);
    
    	for(int j=0; j<3;j++)
    	{
    		v12[j]/=t[j];
    		v23[j]/=t[j];
    		v31[j]/=t[j];
    	}
    
    	SubdivideAndDraw(v1, v12, v31, maxdepth-1);
    	SubdivideAndDraw(v2, v23, v12, maxdepth-1);
    	SubdivideAndDraw(v3, v31, v23, maxdepth-1);
    	SubdivideAndDraw(v12, v23, v31, maxdepth-1);
    }
    


  • hast ja schon bei gamedev.net gefragt ... :p



  • hehe ;)) tach auch, so sieht man sich wieder 😉



  • Sieht für mich nach profanen T-Cracks aus.

    Bye, TGGC (Der Held ist zurück)


  • Mod

    yeus schrieb:

    .
    .
    .
    	t[0]=sqrt(v12[0]*v12[0]+v12[1]*v12[1]+v12[2]*v12[2]);
    
    	t[1]=sqrt(v23[0]*v23[0]+v23[1]*v23[1]+v23[2]*v23[2]);
    
    	t[2]=sqrt(v31[0]*v31[0]+v31[1]*v31[1]+v31[2]*v31[2]);
    
    	for(int j=0; j<3;j++)
    	{
    		v12[j]/=t[j];
    		v23[j]/=t[j];
    		v31[j]/=t[j];
    	}
    
    .
    .
    .
    

    das normalisieren ist falsch, du teilst v12[0] durch die länge von dem vector v12, dann v12[1] durch die länge vom vector v23 und v12[2] durch die länge von 31... das könnte der bug sein.

    rapso->greets();



  • shit.. stimmt ... man was man so alles übersshen kann.. direkt mal ausprobieren 😉 war schon am verzweifeln



  • rapso schrieb:

    yeus schrieb:

    .
    .
    .
    	t[0]=sqrt(v12[0]*v12[0]+v12[1]*v12[1]+v12[2]*v12[2]);
    
    	t[1]=sqrt(v23[0]*v23[0]+v23[1]*v23[1]+v23[2]*v23[2]);
    
    	t[2]=sqrt(v31[0]*v31[0]+v31[1]*v31[1]+v31[2]*v31[2]);
    
    	for(int j=0; j<3;j++)
    	{
    		v12[j]/=t[j];
    		v23[j]/=t[j];
    		v31[j]/=t[j];
    	}
    
    .
    .
    .
    

    das normalisieren ist falsch, du teilst v12[0] durch die länge von dem vector v12, dann v12[1] durch die länge vom vector v23 und v12[2] durch die länge von 31... das könnte der bug sein.

    rapso->greets();

    jetz gehts 😉 hab nur die for-schleife falsch gesetzt, thx 😉

    for(int j=0; j<3;j++)
    	{
    		v12[j]/=t[0];
    	}
    	for(j=0; j<3;j++)
    	{
    		v23[j]/=t[1];
    	}
    	for(j=0; j<3;j++)
    	{
    		v31[j]/=t[2];
    	}
    

Anmelden zum Antworten