J'ai un programme simple, il dessine un cercle:/ Cela fonctionne bien ...Calculer les sommets d'un cercle
for (k = 1; k < n+1+1; k++){
vertices[k].color = GU_COLOR(0.0f, 0.0f, 1.0f, 0.0f);
vertices[k].x = cos_d(360 - ((k-1) * dstep));
vertices[k].y = sin_d(360 - ((k-1) * dstep));
vertices[k].z = 0.0f;
}
...
//Now draw it
sceGumDrawArray(GU_TRIANGLE_FAN, GU_COLOR_8888|GU_VERTEX_32BITF|GU_TRANSFORM_3D, n+1+1, 0, vertices);
Mais cela ne veut pas:
for (k = 1; k < n+1+1; k++){
vertices[k].color = GU_COLOR(0.0f, 0.0f, 1.0f, 0.0f);
vertices[k].x = cos_d(((k-1) * dstep));
vertices[k].y = sin_d(((k-1) * dstep));
vertices[k].z = 0.0f;
}
Mais shouldn n'est-ce pas la même chose - juste avec la différence que la première boucle calcule les sommets dans le sens des aiguilles d'une montre et la seconde dans le sens inverse des aiguilles d'une montre? C'est juste bizarre que ça ne dessine pas les sommets en utilisant le second exemple ...
Ou suis-je stupide?
Si vous pouvez exécuter ceci dans un débogueur, ou imprimer les valeurs à l'écran, alors vous voudrez regarder les valeurs que vous calculez. Regardez ce qui est introduit dans cos_d/sin_d, et voyez si les valeurs sont ce que vous attendez. Une fois que vous faites cela, alimentez ces valeurs dans cos_d/sin_d, et comparez-les avec les types de valeurs que vous attendez, ou comparez-les aux valeurs crachées par une calculatrice scientifique. –
La raison pour laquelle vous voulez vous habituer à cela est que la programmation graphique nécessite un ** lot ** de maths, et est ** vraiment ** facile à se tromper. Les instructions d'impression du débogueur ou du débogage sont le seul moyen de ne pas devenir fou :) –