En essayant de trouver les composants/tête d'un vecteur en 3D avec Java. J'ai déjà obtenu la configuration des variables x, y, z et les variables de rotation correspondantes. En utilisant ces variables et les mathématiques vectorielles, je veux trouver les composants après qu'ils ont été tournés. Vous pouvez considérer les variables x, y, z comme un vecteur en cours de traduction.Essayer de faire pivoter le vecteur 3D en Java
En utilisant le calcul de ce poste: Rotating a Vector in 3D Space
j'ai écrit un code qui était censé calculer la position en fonction de ce dernier message:
//Rotate Z
x = ((x * Math.cos(radz)) - (y * Math.sin(radz)));
y = ((x * Math.sin(radz)) + (y * Math.cos(radz)));
//Ignore Z ###############################################
//Rotate Y
x = ((x * Math.cos(rady)) - (z * Math.sin(rady)));
//Ignore Y ###############################################
z = ((x * Math.sin(rady)) + (z * Math.cos(rady)));
//Rotate X
//Ignore X ###############################################
y = ((y * Math.cos(radx)) - (z * Math.sin(radx)));
z = ((y * Math.sin(radx)) + (z * Math.cos(radx)));
où x, y et z sont les positions besoin d'être changé et radx, rady et radz sont les degrés de rotation en radians.
En utilisant ce code, si vous définissez les variables comme si:
double radx = Math.toRadians(0f);
double rady = Math.toRadians(90f);
double radz = Math.toRadians(0f);
double x = 1;
double y = 0;
double z = 0;
System.out.println(x + " " + y + " " + z);
Il produit: 6.123233995736766E-17 0.0 6.123233995736766E-17
qui im assez sûr est pas exact. . .
Qu'est-ce que je fais de mal avec ce code? Y at-il un moyen plus facile de trouver la tête d'un vecteur 3D Java?
J'ai aussi la bibliothèque joml, mais il semble avoir le même problème avec la méthode vec.rotateX.
Fonctionne pour x, y et z individuellement. Fonctionne également pour x + y, x + z mais pas y + z pour une raison quelconque. Im regardant dans maintenant. Si possible, pouvez-vous comprendre celui-là? Éclate également – codedcosmos
Pas clair si les sommes ne fonctionnent pas. Veuillez fournir un exemple d'entrée et de sortie désirée que vous recherchez. – Doleron
Radx est très bien ne vous inquiétez pas à ce sujet et rady + radz sont également bien indifidually. Cependant, en changeant rady + radz ensemble, il se brise pour une raison quelconque. Notez que ces entrées sont en degrés, à convertir dans le code. Quand ayant radX 0, Rady comme 135 et Radz que 135. Le résultat devrait être d'environ: 0,5 -0,70710677 0,5 Lorsque son fait: 0,5 -0,70710677 -0,5 – codedcosmos