С++ / 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 носом вперед как и задумывалось. Объясните пожалуйста почему так произошло и вообще в чем прикол.


Ответы (0 шт):