$mival
25.07.2010, 16:04
нужно определить угол по которому драгнул юзер, например относительно горизонтали
то есть если ровно вправо - угол ноль,
влево - 180 и тд
есть вот такая формула
a = arctg[(y2 - y1)/(x2 - x1)] - arctg[(y4 - y3)/(x4 - x3)]
где а - нужный нам угол (в радианах?)
х1, у1 ... координаты соответствующих точек
точки 3 и 4 это координаты условного горизонтального отрезка от которого считаем угол
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 не получается
что не так?
то есть если ровно вправо - угол ноль,
влево - 180 и тд
есть вот такая формула
a = arctg[(y2 - y1)/(x2 - x1)] - arctg[(y4 - y3)/(x4 - x3)]
где а - нужный нам угол (в радианах?)
х1, у1 ... координаты соответствующих точек
точки 3 и 4 это координаты условного горизонтального отрезка от которого считаем угол
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 не получается
что не так?