Тема: Повороты
Показать сообщение отдельно
Старый 06.08.2006, 18:37   #1
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Радость Повороты

Блин... есть тут функция... на выдумку уходит минут 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 градусов, то этот путь длинный... а если разница получается отрицательная то чисто-наоборот...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием