Я в одной игре, хочу сделать механизм, который, поворачивает башню, на необходимые мне координаты, состоящие из Х и Y. Координаты что цели, что башни постоянно известны. Так же при необходимости может быть известен угол поворота башни. Который считывается от 0 до 360 (Так же можно и в минус от 0 до -360), так же и с координатами, они могут идти в минусовые значения.
Вот для примера:
Башня:
Х1- 1;
Y1- 3;
Поворот: 30 градусов;
Цель:
X2- 5
Y2- 9
Что мне поможет это решить?
В школе у меня была крайне отталкивающая учительница по геометрии, от чего мои познания геометрии, оканчиваются лишь тем, что Пифагор придумал теорему Пифагора. По этому, я буду крайне рад, если вы мне поможете решить мою проблему. Заранее спасибо!
CosmoAriral, вы хотите посчитать некий угол, но угол бывает между прямыми (отрезками), но никак не между точками. Так какой угол вы хотите высчитать если у вас есть две точки.
Возьмите листочек бумаги и нарисуйте чего вам надо.
Я понял вас так, что нужна не наводка, а моментальная смена положения: вот башня была нацелена на север, а в следующее мгновение она направлена уже на восток. Если так, то действительно надо знать угол, на который надо довернуть башню.
Но в реальных системах наводка - это процесс, проходящий не мгновенно. Угол там знать не надо, а нужно направление воздействия и его интенсивность. При приближении к нужному положению интенсивность надо уменьшить, и в момент точного совпадения прекратить совсем. Очевидно, что тут важнее не величина угла, а его знак (т.е. в какую сторону крутить).
Координаты что цели, что башни постоянно известны.
В реальных условиях цель подвижна, и её координаты меняются, т.е. формально говоря они неизвестны. В таких условиях знание угла ничего вам не даст, нужна именно вышеописанная наводка как процесс. В оружейной технике этот процесс имеет специальное название - "захват цели", а последующее постоянное удержание цели на линии стрельбы - "сопровождение цели".
Угол 0 куда смотрит? Куда смотрит 90 градусов? Обычно считают, что 0 смотрит строго враво, а 90 - вверх.
Шаг 1. Вам неважно, где именно находятся башня и цель, важно их относительное положение, поэтому посчитайте dx=x2-x1, dy = y2-y1
Шаг 2. Подставьте в какую-нибудь обратную тригонометрическую функцию, например arctan(dy/dx). Тут правда незадача, если dx=0, то надо смотреть на знак dy и выдавать sign(dy)*90. Еще проблема, что arctan вам вернет значение от -90 до 90 всегда. Если dx отрицательно, то надо прибавить 180.