Показать сообщение отдельно
Старый 12.01.2014, 22:02
InSelecto вне форума Посмотреть профиль Отправить личное сообщение для InSelecto Найти все сообщения от InSelecto
  № 1  
Ответить с цитированием
InSelecto

Регистрация: Jan 2014
Сообщений: 6
По умолчанию Тригонометрия. Ошибка в условии изменения дельты угла в радиальной системе координат.

Добрый день!

Проблема в следующем:

В прикрепленном ролике подвижный корабль (ship) летит к синему указателю цели (pointer), который перемещается вокруг неподвижного корабля (target).
Мне нужно, чтобы при значении угла α < 90 градусов (т.е. Math.PI/2) синий указатель менял направление перемещения на противоположное.
Угол α на картинке обозначен.

Вот код функции ответственной за перемещение указателя:

Код AS3:
function MovePointer(ship:Object, targ:Object, point:Object, R:Number, DAngle:Number):Number
{
	var angle = Math.atan2(point.y - targ.y, point.x - targ.x);
 
	if ( Math.abs( Math.PI-( angle - (Math.PI+Math.atan2(ship.y - targ.y, ship.x - targ.x)) ) ) < Math.PI/2 )
	{
		DAngle=-DAngle;
	}
 
	angle += DAngle;
 
 
	point.x = targ.x + R * Math.cos(angle);
	point.y = targ.y + R * Math.sin(angle);
 
	return DAngle;
}
Название: Тригонометрия.png
Просмотров: 473

Размер: 7.9 Кб

StarControl.rar