Почему вращение не работает, если более 45 градусов - PullRequest
0 голосов
/ 11 января 2012

Я пытаюсь повернуть волну на оси, но каким-то образом, если я перейду к греху, и потому что значение больше 45, то волна, кажется, искажается, или функция не поворачивается с правильным углом.

...
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];
}

Это весь код:

// 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);
}

1 Ответ

5 голосов
/ 11 января 2012

из вашего кода неясно, что именно вы делаете, но вы упоминаете 45 градусов

Math.sin() и Math.cos() работа с радианами http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Math.html

...