Warum Rotation nicht funktioniert, wenn mehr als 45 Grad
-
27-10-2019 - |
Frage
Ich versuche, eine Welle auf der Achse zu drehen, aber irgendwie, wenn ich zur Sünde übergehen werde und einen Wert mehr als 45 Die Welle scheint Verzerrung zu bekommen, oder die Funktion wird nicht mit dem richtigen Winkel gedreht.
...
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];
}
Dies ist der gesamte 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);
}
Lösung
Es ist unklar aus Ihrem Code, was Sie genau tun, aber Sie erwähnen 45 Grad
Math.sin()
und Math.cos()
Arbeiten mit Radianshttp://docs.oracle.com/javase/1.4.2/docs/api/java/lang/math.html
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow