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)
-
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]; }