Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1560 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  rotation dans l'espace (fonction java)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

rotation dans l'espace (fonction java)

n°664722
John_Hide
Posté le 05-03-2004 à 18:55:42  profilanswer
 

Salut, je fais appel a votre savoir pour m'aider dans la résolutino d'un problème.
Savez vous si il existe en java une fonction qui permet de transformer les coordonnées d'un point en 3 dimensions par rapport a un angle téta, et un axe quelconque (le quelconque est très important), autrament faire une rotation par rapport a un axe quelconque.
 
Si y a pas de fonctions, connaissez vous la formule de la matrice de transformation (c plutot un truc de trigo ça, mais bon, g pas réussi a la trouver en entier).
 
Merci

mood
Publicité
Posté le 05-03-2004 à 18:55:42  profilanswer
 

n°664730
darkoli
Le Petit Dinosaure Bleu
Posté le 05-03-2004 à 19:00:29  profilanswer
 

Pour faire cette rotation, tu peux utiliser les quaternions. C'est pas très compliqué en fait (Je vais rechercher des infos et je reviens poster) !
 
Sinon je ne connais pas Java ! :D

n°664765
John_Hide
Posté le 05-03-2004 à 19:31:56  profilanswer
 

hhmm
oula, bon, merci, v voi ça.
Jamais entendu parler en tout cas

n°664767
darkoli
Le Petit Dinosaure Bleu
Posté le 05-03-2004 à 19:33:39  profilanswer
 

Alors voilà (c'est du javascrip) !
 
Donc premier il faut initialiser ton quaternion et pour cela tu le fais à partir de l'angle a et de l'axe représenté par x, y et z.
 

function rq(_q,a,x,y,z)
{
 var sin_a = Math.sin(a/2);
 var cos_a = Math.cos(a/2);
 
 _q.x = x * sin_a;
 _q.y = y * sin_a;
 _q.z = z * sin_a;
 _q.w = cos_a;
 
 nq(_q);
}


 
Il faut ensuite le normaliser (appel à la fonction nq).
 

function nq(q_)
{
 var l=Math.sqrt(q_.w*q_.w + q_.x*q_.x + q_.y*q_.y + q_.z*q_.z);
 l=1/l;
 q_.w=q_.w*l;
 q_.x=q_.x*l;
 q_.y=q_.y*l;
 q_.z=q_.z*l;
}


 
Et il reste à creer la matrice de transformation :

function qm(mat,q)
{
 var xx = q.x * q.x;
 var xy = q.x * q.y;
 var xz = q.x * q.z;
 var xw = q.x * q.w;
 
 var yy = q.y * q.y;
 var yz = q.y * q.z;
 var yw = q.y * q.w;
 
 var zz = q.z * q.z;
 var zw = q.z * q.w;
 
 mat[0]  = 1 - 2 * ( yy + zz );
 mat[1]  =     2 * ( xy - zw );
 mat[2]  =     2 * ( xz + yw );
 
 mat[4]  =     2 * ( xy + zw );
 mat[5]  = 1 - 2 * ( xx + zz );
 mat[6]  =     2 * ( yz - xw );
 
 mat[8]  =     2 * ( xz - yw );
 mat[9]  =     2 * ( yz + xw );
 mat[10] = 1 - 2 * ( xx + yy );
 
 mat[3]  = mat[7] = mat[11] = mat[12] = mat[13] = mat[14] = 0;
 mat[15] = 1;
}


 
Et voilà tu a une jolie matrice de transformation !
Donc c'est une matrice 4x4 en notation française ! :D


Message édité par darkoli le 05-03-2004 à 19:34:48
n°664775
John_Hide
Posté le 05-03-2004 à 19:47:20  profilanswer
 

rolalalala
Bon, ca doit marcher :)
Je vais potasser ça ce week end, suis crevé la.
merci en tout cas :D
 
juste un der truc, g pas trouvé de quaternion dans la doc java.
Tu sais pas dans kelle bibli je peux trouver les methodes d'initialisation de quaternions ou de normalisation ??

n°664805
darkoli
Le Petit Dinosaure Bleu
Posté le 05-03-2004 à 21:00:11  profilanswer
 

John_Hide a écrit :

rolalalala
Bon, ca doit marcher :)
Je vais potasser ça ce week end, suis crevé la.
merci en tout cas :D
 
juste un der truc, g pas trouvé de quaternion dans la doc java.
Tu sais pas dans kelle bibli je peux trouver les methodes d'initialisation de quaternions ou de normalisation ??


Absoluement pas, je n'ai jamais fait de java ! :D

n°664809
John_Hide
Posté le 05-03-2004 à 21:03:19  profilanswer
 

oki ...
bon, bon, bon
v me taper un bouquin de méca du solide je sens ...

n°722452
karua54
Posté le 11-05-2004 à 20:23:34  profilanswer
 

Salut,
 
 
je t'ecris pour que tu me sauves la vie j'ai vu ta question concernant la rotation 3D sur le forum hardware.fr; et je suis a la recherche d'exactement la meme chose: permettre la rotation 3D de points par rapport a un axe quelconque en JAVA; donc si tu pouvais me transmettre ton savoir tu m'enleverais une grosse epine du pied d'autant que je suis en perdition depuis un moment a cause de ce probleme, faut dire que la geo c'est pas mon truc!
 
P.S.: excuse les accents je suis au states!

n°722893
pascal34
one point !
Posté le 12-05-2004 à 11:09:32  profilanswer
 

karua54 a écrit :

Salut,
 
 
je t'ecris pour que tu me sauves la vie j'ai vu ta question concernant la rotation 3D sur le forum hardware.fr; et je suis a la recherche d'exactement la meme chose: permettre la rotation 3D de points par rapport a un axe quelconque en JAVA; donc si tu pouvais me transmettre ton savoir tu m'enleverais une grosse epine du pied d'autant que je suis en perdition depuis un moment a cause de ce probleme, faut dire que la geo c'est pas mon truc!
 
P.S.: excuse les accents je suis au states!


 
http://membres.lycos.fr/villeminge [...] agQuat.htm

n°736312
pitiana
Posté le 24-05-2004 à 15:50:01  profilanswer
 

salut pascal,
 
j'avais ^le meme probleme que toi et j'ai peut etre trouvé un truc : public final void setRotation(AxisAngle4d a1)
je crois que ca a macrhé pour moi. et ca :AxisAngle4d(Vector3d axis, double angle)  
          Constructs and initializes an AxisAngle4d from the specified axis and angle.
 
voila

mood
Publicité
Posté le 24-05-2004 à 15:50:01  profilanswer
 

n°736452
pascal34
one point !
Posté le 24-05-2004 à 16:41:59  profilanswer
 

pitiana a écrit :

salut pascal,
 
j'avais ^le meme probleme que toi et j'ai peut etre trouvé un truc : public final void setRotation(AxisAngle4d a1)
je crois que ca a macrhé pour moi. et ca :AxisAngle4d(Vector3d axis, double angle)  
          Constructs and initializes an AxisAngle4d from the specified axis and angle.
 
voila


 
C'est pas dans le JDK ça  :heink:  
Peut-être Java3D ??

n°737160
pitiana
Posté le 25-05-2004 à 09:25:12  profilanswer
 

ben oui c ets dans java 3D mais c 'étét pas une question de java 3d que tu posais?  ciao

n°737171
pascal34
one point !
Posté le 25-05-2004 à 09:31:31  profilanswer
 

pitiana a écrit :

ben oui c ets dans java 3D mais c 'étét pas une question de java 3d que tu posais?  ciao


 
Au départ, c'est pas moi qui ai créé le sujet  :D  
 
Ceci dit, ça me fait penser que dans Java3D il y a une partie de l'api (javax.vecmath) qui est indépendant du moteur 3D. C'est un package de calcul matriciel 2D/3D qui est dans un jar à part. Peut-être qu'on a le droit de l'utiliser hors Java3D.

n°737391
pitiana
Posté le 25-05-2004 à 11:16:24  profilanswer
 

alors la j'en sais rien moi j'ai installé java 3d donc... lol   bon courage


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  rotation dans l'espace (fonction java)

 

Sujets relatifs
faire un tableau en Java[JAVA]tite question bête!
Java et BDD accessbase Access et Java grrrrrrrrrrrr
IPC avec JAVAAppel de fonction php dans lien html
[Résolu] Existe-t-il une fonction si sous access?[JAVA] NullPointer Exception : JVM Symantec ???
VB-ACCESS fonction rechercher dans un champ[WBEM] Comment peut on connaitre la config de son PC en java ??
Plus de sujets relatifs à : rotation dans l'espace (fonction java)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR