Я пишу кривую змейку, как эта http://www.gamekb.com/thumbs_v2/01872/1872657-85play-curve-fever-2.gif на Java. Если я хочу двигаться под определенным углом, это:
posX += cos(angle);
posY += sin(angle);
Когда я нажимаю влево или вправо, он вычисляет середину вращения (влево и вправо), а затем
posX = middleX + sin(angle) * radius;
posY = middleY + cos(angle) * radius;
angle += PI/180;
И если я отпущу клавишу, он должен рассчитать новый угол:
vectorx = middleX - posX; /*normal vector to tangent*/
vectory = middleY - posY;
k = -(vectorx/vectory); /*directiv of tangent. Should be angle in radians but not
in all cases */
angle = k;
Этот фрагмент кода означает, что я вычисляю вектор [vectorx, vectory], который перпендикулярен моей новой прямой с углом, который я вычисляю, и k
из параметрической формы прямой, и это угол в радианах, в основном я пытаюсь сделать касательную к круг в точке, где я выпускаю стрелу.