CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

rotation dans l'espace

Chaos_Clad
Chaos_Clad
Niveau 10
18 juillet 2005 à 11:00:58

Mouarf bon comme j´ai rien à faire je vais essayer de te traduire group rotation :rouge:

Comme il était expliqué plus en détails dans le paragraphe : " Quaternions et rotation spatiale". La multiplication de quaternions non-nuls se fait par par la conjugaison sur la copie de R^3 comprenant des quaternions avec une partie réelle nulle. ( là je suis vraiment sur de rien niveau traduction :malade: ) . La conjugaison par un quaternion unitaire ( avec une valeur absolue de 1) avec une partie réelle cos(t) est une rotation par un angle 2t, l´axe de la rotation étant la direction de la partie imaginaire. Les avantages des quaternions sont :

1. Pas de représentation singulière ( comparer avec les angles d´Euler pour exemples)
2. Plus compact et rapide que les matrices
3. Une paire de quaternions unitaires peut représenter une rotation dans un espace à quatre dimensions

L´ensemble des quaternions unitaires forment une sphère en trois dimensions S^3 et un groupe ( groupe de Lie) sous la multiplication. S^3 est la double cover ( ?) du groupe SO(3,R) des matrices orthogonales réelles 3x3 et de déterminant 1 tandis que deux quaternions unitaires peuvent représenter toutes les rotations sous les conditions ci-dessus. Le groupe S^3 est isomorphe au groupe SU(2), le groupe des complexes de matrices unitaires 2x2 et de déterminant 1.

Supposons que A soit l´ensemble des quaternions de la forme a + bi + cj + dk ( où a, b, c et d peuvent être soit tous entiers soit tous rationnels avec un numérateur bizarre et de dénominateur 2). L´ensemble A est un anneau et un treillis ( à mon avis à comprendre comme un tissage). Ils sont 24 quaternions unitaires dans cet anneau… après je ne comprends pas.

Voilà, à toi de comprendre ce que tu veux, moi je me suis bien marré :rire:

le_duche
le_duche
Niveau 10
18 juillet 2005 à 11:08:28

et ben moi aussi je me suis bien marré :rire:

il y aurais qqun qui a deja utilisé ca ?

LGV t´es là ?

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 11:18:28

Je suis nul en quartenions... a l´occas, j´aimerais bien apprendre a m´en servir.

La méthode que je vais te donner est différente ( vetcorielle et matricielle)

Moi je vais te donner autre chose :
( je fais la fonction a la volée, l´algorithme est formel pas vérifiée, de plus, j´emploie des fonctions que tu devas implémenter)

void Rotation(float *x,float *y,float *z,float nx,float ny,float nz,float mx,float my,float mz,float a)
{
point A(nx,ny,nz); / / point de départ de ton axe de rotation
point B(mx,my,mz); / / point d´arrivée
point P(*x,*y,*z); / / point a faire tourner.
vecteur z(A,B); / / vecteur directeur de ton axe.
normalise(z); / / faut que la norme vale 1.
point O = projection_orthogonale_point_sur_vecteur(P,A,z); / / te trouve le point projeté orthogonal de P sur ton vecteur.
vecteur x(O,P); / / vecteur x du repere, non normalisé.
vecteur y = produit_vectoriel(z,x); / / y fera la meme norme que x.
point resultat = O + x*cos(a) + y*sin(a); / / je te renvoie a l´algebre des vecteurs, c´est tres facile.
}

Je te fais la fonciotn délicate suivante :

point projection_orthogonale_point_sur_vecteur(point P,point A,vecteur z)
{
float k;
/ / k sera le parametre ou le point O sera sur z avec A comme origine.
/ / OP.z = 0 --> produit scalaire < => OPx*zx + OPy*zy + OPz*zz = 0
/ / < => ( Px-Ax-k*zx)*zx + ( Py-Ay-k*zy)*zy + ( Pz-Az-k*zz)*zz =0
/ / 1 equation, 1 inconnue ( k)
/ / < => Px*zx-Ax*zx - k*zx² + Py*zy-Ay*zy - k*zy² + Px*zz-Ax*zz - k*zz² = 0

k = ( Px*zx-Ax*zx + Py*zy-Ay*zy + Px*zz-Ax*zz)/(zx²+zy²+zz²);
return A+k*z; / / point O retourné.
}

Je te laisse vérifier les calculs, il se peut qu´ils soient faux ( j´ai fait ça de tete rapidos)

le_duche
le_duche
Niveau 10
18 juillet 2005 à 11:24:55

ouais mais en programmation c´est toujours l´idée qui compte, apres c´est au programmeur de mettre en place et d´optimiser !

le_duche
le_duche
Niveau 10
18 juillet 2005 à 11:26:07

nb est ce que ce truc est dans ton tuto ?
pcq en fait, comme j´ai pas le net chez moi, j´ai ramené tout ton tuto dans mon ordi, et donc c´est pour savoir si ca vaut la peine que je ramène cette page ci aussi ?

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 11:27:22

cet algo de rotation n´est pas dans mon tuto
( pas encore)
un jour, peut etre, ferais je une lib de maths...

le_duche
le_duche
Niveau 10
18 juillet 2005 à 11:38:14

si ca t´interesse j´ai fait une classe qui gère une chaine de caractère ( qui est sencée représenter une formule de math comme 3*2+sin(x+1)-ln(2) ) et qui renvoie la valeur de la fonction en fonction de la valeur du x fournie indépendamment. C´est peut etre pas du tout opptimisé maisfaudrait que tu vois si ca peut t´interesser ( elle est pas tout à fait finie, mais il ne manque pas grand chose...)

le_duche
le_duche
Niveau 10
18 juillet 2005 à 11:39:19

mais bon je suis qu´un débutant, en fait j´aurais plutot du te demander de jetter un oeuil et de me dire ce que tu en pense plutot que de te demander si ca t´interesse... :rouge:

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 11:42:54

bien ça ! une classe d´analyse de chaine ? de maths :)
Apres, si elle marche bien, rien ne t´empeche de faire des fonctions de factorisation, de devloppement, de dérivée...
Comme ça, tu reprogrammes Maple :-)

le_duche
le_duche
Niveau 10
18 juillet 2005 à 11:54:30

j´ai essayé la dérivation formelle, mais c´est tout plein de cas particulier :malade:

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 12:00:37

Attend les primitives ! :lol:

le_duche
le_duche
Niveau 10
18 juillet 2005 à 12:03:08

ouais mais ca c´est déja du calcul symbolique de haut vol, ca ne se programme pas du tout de la même manière. Je ne sais pas du tout comment ca marche mais ce que je vois, c´est qu´il faut bien 1/4 de seconde pour que ma calculette en calcul symbolique fasse 1+1 alors que c´est infinitésimal dans la mode de calcul normal ! C´est bien la preuve que ca tourne tout autrement...

JeanYvesYves
JeanYvesYves
Niveau 10
18 juillet 2005 à 12:15:38

le_duche > en fait, tout est basé sur une analyse de grammaire ( oui, c´ets le mot) et ensuite ta chaine est sous forme d´arbre :)
a partir de la, tu la manipule bien mieux :)

exemple :

2* ( 3 + 5)

le pere, c´est le *, a gauche tu as le 2
a droite tu as le +
et les 2 fils de + sont 3 et 5 . ..

LGV
LGV
Niveau 28
18 juillet 2005 à 12:16:55

je bosse en ce moment ( ´passe sur le net entre deux compilations..) et n´ai pas vraiment le temps de me lancer dans des explications detaillees ; j´essayerai cependant de te trouver un lien potable en francais sur les quaternions et les rotations.

le_duche
le_duche
Niveau 10
18 juillet 2005 à 12:22:45

ouais j´ai un peu codé comme ca pour mon analyse de chaine:
En gros, quand je pard de ma chaine de départ
3*sin(2+5*x)+ln(2+3)
je la transforme en deux listes pointées
+ * v s + v * v x v
et
3 2 5 1.6094379

cad que je transforme en notation polonaise et chaque fois que je rencontre une valeur réelle je met un v et je calcule cette valeur queje rajoute dans ma deuxième liste.
de plus chacune de mes fonction est codée par une seule lettre ( s pour sin(), l pour ln(),...) de facon à avancer d´un caractère à chaque étape

le_duche
le_duche
Niveau 10
18 juillet 2005 à 12:23:16

oki LGV :merci:

Chaos_Clad
Chaos_Clad
Niveau 10
18 juillet 2005 à 22:50:40

http://membres.lycos.fr/villemingerard/Type/ImagQuat.htm

le_duche
le_duche
Niveau 10
19 juillet 2005 à 09:33:14

je sais pas si c´est pcq je suis sous Linux mais ta page est complètement buguée au niveau des caractères... et c´est incompréensible !

LGV
LGV
Niveau 28
19 juillet 2005 à 09:49:31

essaye celle la p-e alors http://artemmis.univ-mrs.fr/cybermeca/Formcont/mecaspa/SCAO/QUATERN/QUATERN0.HTM :-?

Chaos_Clad
Chaos_Clad
Niveau 10
19 juillet 2005 à 14:08:32

Oui le_duche car moi c´est parfait.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment