И так, преобразование координат.
Код:
/**
* повернуть координаты (x,y) относительно точки (rotatex, rotatey) на угол rotate
* **/
public double[] newCoordinate(double x, double y, double rotate, double rotatex, double rotatey)
{
double[] result = newCoordinateAt00(x - rotatex, y - rotatey, rotate);
result[0] = result[0] + rotatex;
result[1] = result[1] + rotatey;
return result;
}
public double[] newCoordinateAt00(double x, double y, double rotate)
{
double phi = getPhi(x, y);
phi+=rotate;
double[] result = new double[2];
double lenght = Math.sqrt(x*x+y*y);
result[0] = lenght*Math.cos(phi);
result[1] = lenght*Math.sin(phi);
return result;
}
public double getPhi(double x, double y)
{
double phi;
if(x == 0)
{
if(y>0)
return Math.PI/2;
else
return -Math.PI/2;
}
if(y == 0)
{
if(x>0)
return 0;
else
return -Math.PI;
}
phi = Math.atan(y/x);
if(x < 0)
phi+=Math.PI;
return phi;
}
Вот это преобразование координат для поворота.
Также, необходимо изменить yaw у стендов на тот же угол.
Правда, я не тестил, но вроде должно работать.
Очевидно, все углы в радианах.