tomart2005
Messages postés6Date d'inscriptionlundi 15 mai 2006StatutMembreDernière intervention19 janvier 2007
-
12 juil. 2006 à 17:12
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 2008
-
13 juil. 2006 à 08:52
Bonjour
je cherche la formule pour calculer les coordonee d'une sphere en 3d (x,y,z). Je souhaite par la suite adapter cette formule avec des instructions FPU et afficher les points avec l'api Setpixel.
cs_Nasman
Messages postés202Date d'inscriptionmardi 17 mai 2005StatutMembreDernière intervention29 septembre 20083 13 juil. 2006 à 08:52
Bonjour tomart2005,
D'un point de vue mathématique une sphère de centre x0,y0,z0 et de rayon R est l'ensemble des points satisfaisant la formule:
(x-x0)²+(y-y0)²+(z-z0)²=R²
Par compte comme je suppose que tu n'as pas d'écran tridimensionnel, tu va devoir afficher non pas la sphère mais une projection de celle si sur un plan (2D).
Pour afficher tes points tu vas devoir faire un maillage de ta sphère et dans ce cas il serait préférable d'utiliser les coordonnées polaires R,Theta,Phi avec:
R=constante
Theta ("latitude") compris entre -pi/2 et +pi/2
Phi ("longitude") compris entre 0 et 2.pi
Pour convertir tu auras:
x=x0+R.cos(Theta).cos(Phi)
y=y0+R.cos(Theta).sin(Phi)
z=z0+R.sin(Theta)
Inversement si x,y,z sont sur la sphère:
R²=(x-x0)²+(y-y0)²+(z-z0)²
Theta=arcsin((z-z0)/R)
Phi=arccos((x-x0)/(R.cos(Theta))) ou Phi=-arccos((x-x0)/(R.cos(Theta)))
Phi=arcsin((y-y0)/(R.cos(Theta))) ou Phi=pi-arcsin((y-y0)/(R.cos(Theta)))
Une seule solution est possible : le calcul à partir des x te donne deux solutions
le calcul à partir des y te donne deux autres solutions dont une commune avec celles des x.