Я много часов пытаюсь перевести математический путь (синусоидальную волну) из одной координатной позиции в другую ... но либо я тупой, либо что-то идет не так.
Я попробовал это
// Translate
for (int i=0; i < 300; i++) {
coordinatesX[i] = coordinatesX[i] + ( 80 - coordinatesX[i]);
coordinatesY[i] = coordinatesY[i] + (100 - coordinatesY[i]);
}
Где 80 и 100 - это новая координата, в которую я хочу перевести мой объект.
Я попробовал это
// Translate
for (int i=0; i < 300; i++) {
coordinatesX[i] = coordinatesX[i] + 80;
coordinatesY[i] = coordinatesY[i] + 100;
}
Но все, кажется, частично работает или работает, только если волна имеет некоторый угол?
Я думаю, что мне не хватало математики в школе. Я программирую на Java, используя AndEngine. Может быть, есть несколько ярлыков для этой элементарной функции.
Весь код:
// 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]);
//coordinatesX[i] = coordinatesX[i] + centerX;
//coordinatesY[i] = coordinatesX[i]+centerY;
}
// 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);
}