2013-04-17 3 views
1

Если есть две линии line1 и line2. Как рассчитать угол между этими двумя линиями.Как рассчитать угол между двумя пересекающимися линиями в Flex

Если line1 имеет точки {(x1, y1), (х2, у2)} и LINE2 имеет точки {(x3, y3), (x4, y4)}

Я знаю, как вычислить склоны. Любая идея рассчитать угол в flex.

Пусть склоны известен ....

ответ

2
var angleRadians:Number=Math.abs(Math.atan2(y2-y1,x2-x1)-Math.atan2(y4-y3,x4-x3)); 
if (angleRadians>0.5*Math.PI) angleRadians=Math.PI-angleRadians; 

Короче говоря, получить две трассы, вычтем одно из другого, абсолютизировать результат (угол положителен) и так как есть 4 угла вокруг пересечения , поэтому, если мы получим большую, сделаем из нее меньше.

+0

привет Веспер .. IAM получать значения 0.12,0.15,0.25. Итак, каков будет угол от этого (например, 85 градусов или 60 градусов) – Nithil

+0

Умножьте этот результат на 180 и разделите на PI. Я специально написал «радиан». – Vesper

+0

Спасибо .. за быстрый ответ и точный ответ – Nithil

1

Когда наклон knwon, то можно вычислить угол как ..

СКЛОН М = у2-у1/х2-х1, М = Tanx, угол дуги Х = тангенс (М)

0

КОД:

градусов между двумя векторами:

public function degreesTwoVectors(v1A:Object, v1B:Object, v2A:Object, v2B:Object):Number 
{ 
    var angle = (Math.atan2(v1B.y-v1A.y, v1B.x-v1B.x) - Math.atan2(v2B.y-v2A.y, v2B.x-v2B.x)) * (180/Math.PI); 
    if (angle > 180) angle -= 360; 
    if (angle < -180) angle += 360; 
    return angle; 
} 

радианах между двумя векторами:

public function radiansTwoVectors(v1A:Object, v1B:Object, v2A:Object, v2B:Object):Number 
{ 
    var angle = Math.atan2(y2-y1, x2-x1) - Math.atan2(y4-y3, x4-x3); 
    if (angle > Math.PI) angle -= Math.PI*2; 
    if (angle < -Math.PI) angle += Math.PI*2; 
    return angle; 
} 



Примеры использования:

degreesTwoVectors(circle1, circle2, circle3, circle4); 

или

degreesTwoVectors(circle1, circle2, circle2, circle3); 

или

degreesTwoVectors({x:0,y:0}, circle1, {x:100,y:100}, circle2); 


Описание:

//v1A: Object A of vector 1; 
//v1B: Object B of vector 1; 

//v2A: Object A of vector 2; 
//v2B: Object B of vector 2;