Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   угол драга (drag) (http://www.flasher.ru/forum/showthread.php?t=142582)

$mival 25.07.2010 16:04

угол драга (drag)
 
нужно определить угол по которому драгнул юзер, например относительно горизонтали

то есть если ровно вправо - угол ноль,
влево - 180 и тд

есть вот такая формула
Код:

a = arctg[(y2 - y1)/(x2 - x1)] - arctg[(y4 - y3)/(x4 - x3)]
где а - нужный нам угол (в радианах?)
х1, у1 ... координаты соответствующих точек
точки 3 и 4 это координаты условного горизонтального отрезка от которого считаем угол

Код AS3:

private function getDirectionByPoints(p0:Point, p1:Point):Number
{                       
        var angle:Number = 0;
 
        angle = Math.atan( (p1.y - p0.y) / (p1.x - p0.x) );
 
        return angle * 180 / Math.PI;
}

собсна второй арктангенс при вычитании убивается, так как у нас считается относительно горизонтального отрезка, а у него у обоих точек одинаковые игрики, соответственно при делении - ноль, арктангенс нуля - ноль.

p0 у нас запоминается при нажатии на stage
p1 соответственно при отпускании кнопки

не пойму что я сделал не так, по идее должно выдавать в диапазоне от нуля до 180 градусов, но как то больше 90 не получается

что не так?

hartman 25.07.2010 16:23

Посмотрите на область значений арктангенса, все станет понятно. http://ru.wikipedia.org/wiki/Арксеканс

rainbowrussia 25.07.2010 17:16

Вложений: 1
Для таких целей есть функци atan2(y:Number, x:Number), которая определяет угол по двум координатам смещения. Во вложении пример использования.

$mival 25.07.2010 19:27

Цитата:

Сообщение от hartman (Сообщение 924797)
Посмотрите на область значений арктангенса, все станет понятно. http://ru.wikipedia.org/wiki/Арксеканс

ну да, школьный курс :D

Цитата:

Сообщение от rainbowrussia (Сообщение 924818)
Для таких целей есть функци atan2(y:Number, x:Number), которая определяет угол по двум координатам смещения. Во вложении пример использования.

спасибо! пользуюсь


Часовой пояс GMT +4, время: 17:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.