Partage
  • Partager sur Facebook
  • Partager sur Twitter

Rotations de points autours d'axes 3d

    29 juin 2020 à 21:13:22

    Bonjour tout le monde,

    Tout d'abord mon objectif est de faire la rotation de plusieurs points autour de 3 axes : XYZ, alors voilà dans un premier temps j'ai fais des recherches et j'ai 3 méthodes qui me permettent de faire ces rotations les voici (j'utilise le langage Java):

    	public void rotateX() {
    		for(int i = 0; i < points.size(); i++) {
    			
    			Vector vector = points.get(i);
    			
    			double cosTheta = Math.cos(eulerAngle.getX());
    			double sinTheta = Math.sin(eulerAngle.getX());
    			
    			double y = vector.getY();
    			double z = vector.getZ();
    			
    			vector.setY(y * cosTheta - z * sinTheta);
    			vector.setZ(z * cosTheta + y * sinTheta);
    		}
    	}
    	
    	public void rotateY() {
    		for(int i = 0; i < points.size(); i++) {
    			
    			Vector vector = points.get(i);
    			
    			double cosTheta = Math.cos(eulerAngle.getY());
    			double sinTheta = Math.sin(eulerAngle.getY());
    			
    			double x = vector.getX();
    			double z = vector.getZ();
    	        
    	        vector.setX(x * cosTheta + z * sinTheta);
    	        vector.setZ(z * cosTheta - x * sinTheta);
    		}
    	}
    	
    	public void rotateZ() {
    		for(int i = 0; i < points.size(); i++) {
    			
    			Vector vector = points.get(i);
    			
    			double cosTheta = Math.cos(eulerAngle.getZ());
    			double sinTheta = Math.sin(eulerAngle.getZ());
    			
    			double x = vector.getX();
    			double y = vector.getY();
    			
    			vector.setX(x * cosTheta - y * sinTheta);
    			vector.setY(y * cosTheta + x * sinTheta);
    		}
    	}

    Alors voilà je me sers aussi de Geogebra comme appui pour voir ce qui se passe, et il semblerait que ces méthodes effectuent les rotations seulement pour un repère ou Z est définit comme la "hauteur":

     Alors que dans mon environnement le Z est inversé par le Y comme ceci: 

    La seule méthode qui marche est celle de la rotation d'axe Y, et j'ai remarqué que quand Z n'est pas inversé par Y, la rotation autour le l'axe Y correspond à celle de l'axe Z dans un repère ou Y serait la "hauteur" en occurrence c'est ce que je recherche. Si quelqu'un pourrait m'éclairer sur le sujet ou me donner les formules pour par rapport à mon environnement, ou juste me dire si je fais fausse route ce serait génial, merci (ps je n'ai jamais utilisé de repère en 3 dimensions avant ce projet).



    -
    Edité par AntonioAliot 29 juin 2020 à 22:10:33

    • Partager sur Facebook
    • Partager sur Twitter
      18 juillet 2020 à 11:19:44

      Bonjour,

      Déplacement vers un forum plus approprié

      Le sujet est déplacé de la section Graphisme 3D vers la section Langage Java

      • Partager sur Facebook
      • Partager sur Twitter

      Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script

      Rotations de points autours d'axes 3d

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown