Pourquoi la rotation ne fonctionne pas si plus de 45 degrés
-
27-10-2019 - |
Question
Je suis en train de tourner une vague sur l'axe, mais en quelque sorte si je vais passer au péché et cos une valeur de plus de 45 la vague semble obtenir la distorsion ou la fonction ne tourne pas avec l'angle approprié.
...
wave
// ROtate
for (int i=0; i<300; i++){
coordinatesX[i] = ((coordinatesX[i] * (float)Math.cos(60)) - (coordinatesY[i] * (float)Math.sin(60))) + coordinatesX[i];
coordinatesY[i] = (coordinatesX[i] * (float)Math.sin(60)) + (coordinatesY[i] * (float)Math.cos(60)) + coordinatesY[i];
}
Ceci est tout le code:
// define newpath
float[] coordinatesX = new float[300];
float[] coordinatesY = new float[300];
// wave
for (int i=0; i<300; i++){
coordinatesX[i] = i;
coordinatesY[i] = (float)(20 * (Math.sin((-0.10 * coordinatesX[i]))));
System.out.println(coordinatesX[i]);
System.out.println(coordinatesY[i]);
}
// ROtate
for (int i=0; i<300; i++){
coordinatesX[i] = ((coordinatesX[i] * (float)Math.cos(-10)) - (coordinatesY[i] * (float)Math.sin(-10))) + coordinatesX[i];
coordinatesY[i] = (coordinatesX[i] * (float)Math.sin(-10)) + (coordinatesY[i] * (float)Math.cos(-10)) + coordinatesY[i];
}
// Translate
for (int i=0; i < 300; i++) {
coordinatesX[i] = coordinatesX[i]+ (200);
coordinatesY[i] = coordinatesY[i] + (300);
}
La solution
on ne sait pas à partir de votre code ce que vous faites exactement, mais vous parlez de 45 degrés
Math.sin()
et travail Math.cos()
avec radians
http://docs.oracle.com/javase /1.4.2/docs/api/java/lang/Math.html
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow