Блин... есть тут функция... на выдумку уходит минут 15, и поскольку она в себе ничего серьезного не несет, после того как выдумана и закодена - сразу забывается... но когда снова приходится такое писать опять получается стопр минут на 10-15... вот думаю где бы ее записать, так чтобы ее потом можно было в любое время посмотреть... и надумал напостить тут! (да и новичкам в программировании поможет)
Описание:
Функция поворота объекта на нужный угол по минимальному пути поворота...
Поподробнее... Допустим у нас есть танк, повернут на угол в 248 градусов (система 0-360)... теперь в программе нам надо его повернуть на угол в 54 градуса в какую сторону нам его поворачивать?
итак сама функция:
[highlight=java]if (Tank.Angle != Tank.TargetAngle) {
int T=Tank.Angle-Tank.TargetAngle;
if (T>0) {
if (T>
{Tank.Angle=Tank.Angle+Tank.AngleSpeed;
} else {Tank.Angle=Tank.Angle-Tank.AngleSpeed;}
} else {
if (T>-
{Tank.Angle=Tank.Angle+Tank.AngleSpeed;
} else {Tank.Angle=Tank.Angle-Tank.AngleSpeed;}
}
}[/highlight]
Написано для ЯвыМикроЭдишн... без участия математических функций... с юзанием аналога функции SGN() все это удобнее получается
Перевод на человеческий:
вычитаем целевой угол от текущего... если получается разница больше чем в 180 градусов, то этот путь длинный... а если разница получается отрицательная то чисто-наоборот...