bonjour à tous,
je cherche depuis longtemps, une réponse à cette question,
j'ai posé cette question sur plusieurs sites et je n'ai pas de réponse.
je cherche les formules mathematiques pour faire des rotations dans l'espace
un centre c(0,0,0) d'un objet
un point p(-1,1,-1) de l'objet
repère orthogonal
1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 ------------------------/-z ----------/p .......................-y vue dessous /-x_________________c centre_______________/x .......................+y vue dessus ------------------------/+z
formule mathematique pour une rotation du point p par rapport au centre c
sur l'axe y
formule mathematique pour une rotation du point p par rapport au centre c
sur l'axe x
formule mathematique pour une rotation du point p par rapport au centre c
sur l'axe z
2)
formule mathematique pour une rotation du point p par rapport à l'axe -y+y
sur l'axe y
formule mathematique pour une rotation du point p par rapport à l'axe -x+x
sur l'axe x
formule mathematique pour une rotation du point p par rapport à l'axe -z+z
sur l'axe z
je ne sais pas si je m'explique bien
exemple
si rotation du point p par rapport au centre c sur l'axe x
les coordonnées du point p varie
p(px,py,pz)
px varie
py varie
pz varie
par contre
si rotation du point p par rapport à l'axe -x+x, sur l'axe x
les coordonnées du point p varie
p(px,py,pz)
py varie
pz varie
mais la coordonnées px ne varie pas
en effet, un objet ( exemple => rectangle ), les rotations, sur l'axe x, ou y, ou z par rapport au centre de cet objet les formules mathématiques sont différentes que lors d'une rotation sur l'axe x, ou l'axe y, ou l'axe z, par rapport à
un axe -z +z pour une rotation sur l'axe z
un axe -y +y pour une rotation sur l'axe y
un axe -x +x pour une rotation sur l'axe x
j'aimerais connaitre les formules pour chaque cas
sur internet j'ai vu des formules de rotations avec une matrice de rotation
mais je ne sais pas si c'est une rotation par rapport au centre ou par rapport aux axes -x+x -y+y -z+z
voici les formules
j'ai utilisé ces formules avec le VRML cela ne marche pas.# voila ce code n'a rien d'extraordinaire, il n'affiche qu'un cube en rotation,
# mais son utilité principale est la suivante :
# A partir d'un point dans un repere 3D, on applique une rotation de centre O(Origine) sur les 3 axes,
# et on retrouve les coordonées du point.
# Ce code va, dans mon cas, servir pour un moteur physique (gestion chute des objets etc...)
# j'ai mis dans le projet un exemple d'un cube qui illustre la fonction principale.
# Vous passez en parametre a cette fonction, les coordonnées du point, les rotations, et elle retourne
# les nouvelles coordonnées.
# En fait c'est juste une matrice de rotation appliquée aux coordonnées du point.
# je remercie par ailleur VBLover pour ses conseils sur le forum
# La matrice est :
# Cos(Z)Cos(Y) Sin(Z)Cos(X)-Cos(Z)Sin(Y)Sin(X) Sin(Z)Sin(X)+Cos(Z)Sin(Y)Cos(X)
# -Sin(Z)Cos(Y) Cos(Z)Cos(X)+Sin(Z)Sin(Y)Sin(X) Cos(Z)Sin(X)-Sin(Z)Sin(Y)Sin(X)
# -Sin(Y) -Cos(Y)Sin(X) Cos(Y)Cos(X)
# Et la fonction de transformation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Type PointType X As Double Y As Double Z As Double End Type Private Function rotate(Point As PointType, R As PointType) As PointType rotate.X = Point.X * (Cos(R.Z) * Cos(R.Y)) + Point.Y * (Sin(R.Z) * Cos(R.X) - Cos(R.Z) * Sin(R.Y) * Sin(R.X)) + Point.Z * (Sin(R.Z) * Sin(R.X) + Cos(R.Z) * Sin(R.Y) * Cos(R.X)) rotate.Y = Point.X * (-Sin(R.Z) * Cos(R.Y)) + Point.Y * (Cos(R.Z) * Cos(R.X) + Sin(R.Z) * Sin(R.Y) * Sin(R.X)) + Point.Z * (Cos(R.Z) * Sin(R.X) + Sin(R.Z) * Sin(R.Y) * Cos(R.X)) rotate.Z = Point.X * (-Sin(R.Y)) + Point.Y * (-Cos(R.Y) * Sin(R.X)) + Point.Z * (Cos(R.Y) * Cos(R.X)) End Function
maintenant je commence à apprendre le C, j'ai choisi la bibliothéque SDL pour la gestion des événements et des fenêtres, et OpenGL pour la 3D.
et j'aimerais arriver à connaitre la position x,y,z d'un point faisant parti d'un objet o qui est à une distance dx,dy,dz de son centre c quelque soit les angles de rotation de l'objet dont le centre est c.
sachant que les rotaions se font soit par rapport à un axe ou soit par rapport au centre de l'objet.
si vous avez les formules
ou une adresse internet d'un cour de mathematique assez clair
merci d'avance
Partager