2011년 2월 20일 일요일

백업] 네이버 26

삽질하는 플머 | 오랑캐꽃
http://blog.naver.com/oranke/40002095010
[질문] 세점이 주어질때 각도 구하는 방법?

세점 p1, p2, p3가 주어질때
점p2에서의 각도를 구하는 방법이 뭐죠?


[답변] 세점이 주어질때 각도 구하는 방법?

86년판 수학정석 II-2 245p에 자세히 나와 있습니다... (ㅋㅋ)



그림을 보시죠. P2->P1방향의 벡터를 V1, P2->P3 방향의 벡터를 V2라고 하면 이 두 벡터의 내적공식을 통해 사잇각을 쉽게 구할 수 있습니다.

(내적 D) = (V1의 크기) * (V2의 크기) * cos(theta)
cos(theta) = (내적 D) / (V1의 크기) * (V2의 크기)
theta = acos((내적 D) / (V1의 크기) * (V2의 크기))

D = |V1| * |V2| * cos(theta)
cos(theta) = V1 · V2 / |V1| * |V2|
theta = acos(V1 · V2 / |V1| * |V2|)


각 벡터의 성분은 다음과 같이 구할 수 있구요...

V1 = (vx1, vy1)
vx1 = (x1 - x2)
vy1 = (y1 - y2)

V2 = (vx2, vy2)
vx2 = (x3 - x2)
vy2 = (y3 - y2)


V1 = (v1x, v1y), V2 = (v2x, v2y) 라고 할 때... 내적 D는 다음과 같이 계산할 수 있습죠.

D = V1 · V2 = (v1x * v2x) + (v1y * v2y)


각 벡터의 크기는 다음과 같구요...

|V1| = sqrt( sqr(x1-x2) + sqr(y1-y2))
|V2| = sqrt( sqr(x3-x2) + sqr(y3-y2))



이건 좀 더 복잡한 방법인데... P1에서 선분 P2-P3에 내린 수선의 발과 선분 P2-P3의 교점을 P4라고 합시다. P2와 P4가 이루는 선분의 길이는 "A", P1과 P4가 이루는 선분의 길이는 "B", 또한 P1과 P2가 이루는 선분의 길이는 "C"라고 하죠.

P1, P2, P4가 그리는 삼각형은 직각 삼각형이 되므로 각도 theta는 다음 관계를 갖습니다.

cos(theta) = A/C


따라서 theta는 다음과 같이 구할 수 있죠.

theta = acos(A/C) ...①


길이 C는 위에서 구한 |V1|과 같습니다.

C = |V1| = sqrt( sqr(x1-x2) + sqr(y1-y2))


길이 A값은 P2에서 P1으로 향하는 벡터와 P2에서 P3로 방향 '단위벡터'의 내적을 통해 얻을 수 있습니다. 이 단위벡터는 다음과 같이 계산됩니다.

V2_N = V2 / |V2| = ( vx2_n, vy2_n )

vx2_n = (x3 - x2) / sqrt( sqr(x3-x2) + sqr(y3-y2)).
vy2_n = (y3 - y2) / sqrt( sqr(x3-x2) + sqr(y3-y2)).


P2에서 P1으로 향하는 벡터 V1도 위에서 구했었죠??

(P2->P1) = ( vx1, vy1 )

vx1 = (x1 - x2)
vy1 = (y1 - y2)


이제 길이 A값을 구하기 위해 두 벡터를 내적 해 봅시다.

A = V1 · (V2 / |V2|) = (vx1 * vx2_n) + (vy1 * vy2_n)


이렇게 얻어진 C와 A값을 ①식에 넣어 끼인 각 theta를 얻을 수 있습죠...

참고삼아... 길이 B는 벡터 V1과 벡터 V2의 노멀벡터와의 '외적벡터'를 구하고 그 길이값을 재서 얻을 수 있습니다. sin(theta) = B/C 이므로 여기서도 각도를 얻을 수 있죠. 굳이 이 방법을 소개하는 이유는... 감자님의 홈페이지에 가면 벡터 정규화를 위해 값비싼 sqrt()함수의 호출 없이 이 B값을 구하는 멋진 강좌가 있기 때문 입니다.

http://www.gamza.net/ez2000/ezboard.exe?db=Algorithm&action=read&dbf=21&page=0&depth=1

댓글 없음:

댓글 쓰기

국정원의 댓글 공작을 지탄합니다.

UPBIT is a South Korean company, and people died of suicide cause of coin investment.

 UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...