Переместите объект по кривой Безье в сочетании с вращением

Мой движок (AndEngine) предоставляет модификатор для перемещения объекта по кривой Безье, просто предоставляя координаты 3 или 4 точек.

В моей игре я перемещаю некоторых птиц с определенными 3 очками. Однако это выглядит фальшиво, потому что птицы всегда указывают направление.

Это похоже на математический вопрос, но я думаю, что мне следует опубликовать на StackOverflow вместо Math Exchange: как определить угол поворота (в радианах или градусах) для птиц за раз?


person Luke Vo    schedule 14.11.2011    source источник
comment
en.wikipedia.org/wiki/Tangent Возможно, это вам очень поможет.   -  person execc    schedule 14.11.2011


Ответы (2)


Вы возьмете две точки, скажем P1 и P2, и найдете угол между ними, а затем повернете птицу на этот угол.

    deltaX = nextPointX - YourBirdX;
    deltaY = NextPointY - YourBirdY;
    degree = ((Math.atan2(deltaY, deltaX)));
    angle = degree * 180 / 3.14;

    if(angle<0)
    {
        angle = 360+angle;
    }

Я надеюсь, что это поможет вам.

person Jawad Amjad    schedule 19.11.2011
comment
float angleRad =(float)Math.atan2(deltaY, deltaX); float Vx = 50* (float)Math.cos(angleRad); float Vy = 50 * (float)Math.sin(angleRad); body.setVelocity(vX,vY); - person AZ_; 16.02.2012

А как насчет (bezier(path, position + epsilon) - bezier(path, position)) / epsilon? Или, если вы хотите без эпсилона, найдите первый вывод кривой Безье.

person Roland Illig    schedule 14.11.2011
comment
Я ничего не знаю о кривой Безье! Я просто ввожу координаты 3 точек, а движок делает все остальное, так что я понятия не имею, что это такое. - person Luke Vo; 15.11.2011
comment
не могли бы вы мне помочь? с этим вопросом, связанным с этим stackoverflow.com/questions/18651025/ - person User 1531343; 06.09.2013