С++ / sfml помогите пожалуйста
#include<SFML/Graphics.hpp>
using namespace sf;
int main()
{
RenderWindow window(VideoMode(600, 400), "Asteroids");
//угол поворота, наличие тяги, позиция
float angle = 0;
float x = 300, y = 200;
bool isMove = false;
float dx = 0, dy = 0;
//корабль
CircleShape ship(15);
ship.setFillColor(Color::White);
ship.setPointCount(3);
ship.setOutlineThickness(2);
ship.setPosition(x, y);
ship.setScale(0.7, 1);
ship.setOrigin(15, 10);
//проверка событий окна
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
{
window.close();
}
}
//проверка нажатия клавиш
if (Keyboard::isKeyPressed(Keyboard::A))
{
//поворачиваем корабль влево
angle -= 0.1;
}
if (Keyboard::isKeyPressed(Keyboard::D))
{
//поворачиваем корабль вправо
angle += 0.1;
}
if (Keyboard::isKeyPressed(Keyboard::W))
{
isMove = true;
}
else
{
isMove = false;
}
// проверка наличия тяги
if (isMove)
{
dx += cos(angle)*0.2;
dy += sin(angle)*0.2;
}
else
{
dx *= 0.99;
dx *= 0.99;
}
int maxSpeed = 10;
//вычисляем длину вектора
float speed = sqrt(dx * dx + dy * dy);
if (speed > maxSpeed)
{
dx *= maxSpeed / speed;
dy *= maxSpeed / speed;
}
x += dx;
y += dy;
if (x > 600) x = 0;
if (x < 0) x = 600;
if (y > 400) y = 0;
if (y < 0) y = 400;
ship.setPosition(x, y);
ship.setRotation(angle+90);
//очищаем экран и выводим все на монитор
window.clear(Color::Black);
window.draw(ship);
window.display();
}
}
пишу игру asteroids в 87 строке, где написано ship.setRotation(angle+90) я сначала писал ship.setRotation(angle) и кораблик при нажатии W летел вдоль оси х боком, и при запуске в состоянии покоя он был повернут вдоль оси у, и когда я решил прибавить к angle 90(просто оси х и у перпендикулярны и я подумал что надо 90 градусов добавить, но зачем я это делал я не знал) кораблик полетел вдоль оси x носом вперед как и задумывалось. Объясните пожалуйста почему так произошло и вообще в чем прикол.