세 점(기준점, 점1, 점2)이 있을 때 atan()함수를 1번만 써서 사잇각을 구하는 방법이다.

원리는 간단하다.


아래와 같이 한 각과 기준각이 이루는 각도를 α, 나머지 각을 β라 한다.



그러면 θ = α - β 라 할 수 있다.


tanθ는 다음과 같이 나타낼 수 있으므로 sinθ와 cosθ를 구하여 atan2의 각 매개변수로 넣으면 각을 알 수 있을 것이다.


먼저 sinθ는 삼각함수의 덧셈정리에 의해 이렇게 전개할 수 있다.


위 식을 처음에 주어진 x분과 y성분으로 나타낼 수 있으므로,

최종적으로는 이렇게 쓸 수 있다.




코사인세타도 같은 방법으로 전개한다.


공통항인 1/l1l2를 소거하면 아래와 같은 표현식을 얻을 수 있다.



angle = atan2(y1x2-x1y2, x1x2+y1y2);




atan2 함수가 아닌 atan함수를 사용한다면 atan(sin값/cos값) 형태로 사용하면 될 것이다.

→ angle = atan(y1x2-x1y2 / x1x2+y1y2);



▼ 컴퓨터 프로그램으로 작성하여 구동한 화면.



 







점(a,b) 와 점(c,d)가 주어졌을 때, 정삼각형이 되기 위한 나머지 한 점은
P1과 P2. 2개가 존재합니다. (a,b 점과 c,d점 사이의 거리를 반지름으로 하는 두 원을 그리면 그 두 원의
교점이 P1과 P2가 됩니다.)

위의 그림과 같이 중점을 m이라 놓고 P1 = (x1,y1) , P2 = (x2,y2)라고 놓습니다.
 

그리고 아래와 같이 직각삼각형을 그렸을 때 선분PM 과 주어진 두 점을 잇는 선분이 수직이므로
아래 두 삼각형은 닮음이 됩니다.



아래쪽 삼각형에 대한 위쪽 삼각형의 닮음비가
2분의 루트3 대 1 이므로,

P1점의 x좌표는, m의 x좌표에다가 (d-b)*닮음비가 되고,
y좌표 역시 m의 y좌표에 (c-a)*닮음비가 됩니다.




P2점의 좌표도 같은방법으로 구합니다.



아래와 같이 정리가 됩니다.






또 다른 방법은
역시 두 점(a,b),(c,d)가 주어졌을때,
 다각형(x1,y1)(a,b)(c,d)가 정삼각형이므로 사잇각이 60도가 됩니다. 



여기에 삼각함수의 덧셈정리로 주어진 선분의 각도 세타를 소거해주면
좌표를 하나씩 구해나갈수 있습니다.








copyright(C) www.tibyte.kr

+ Recent posts