2013-04-17 2 views
1

두 줄의 line1과 line2가있는 경우. 이 두 선들 사이의 각도를 계산하는 법. 1 호선 포인트 {(X1, Y1), (X2, Y2)}과 2 호선이 점 {(X3, Y3), (X4, Y4)}플렉스에서 두 개의 교차 선 사이의 각도를 계산하는 방법

을 가지고있는 경우

나는 슬로프를 계산하는 방법을 알고있다. 플렉스에서 각을 계산하는 아이디어. 교차로 주변의 4 각이 있기 때문에

알려져 슬로프하자

.... 요컨대

답변

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; 

, 두 경사면을 얻을 다른 하나를 감산은 (각이 양수) 결과를 절대화 및 , 그래서 우리가 더 큰 것을 받으면 그것을 더 작게 만드십시오.

+0

안녕 베스 페르 .. 스피지고 값 0.12,0.15,0.25. 그렇다면이 각도는 무엇입니까 (예 : 85 ° 또는 60 °) – Nithil

+0

이 결과에 180을 곱하고 PI로 나눕니다. 나는 의도적으로 "라디안"을 썼다. – Vesper

+0

고마워 .. 빠른 답장과 정답 – Nithil

1

기울기 다음 .. 등의 각도를 계산할 수 knwon 때

SLOPE M = Y2-Y1/X2-X1, M = tanX 각도 X = 아크 탄 (M)

0

CODE : 두 벡터 사이

학위 :

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); 

01, 설명 :

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

//v2A: Object A of vector 2; 
//v2B: Object B of vector 2; 
관련 문제