본문 바로가기
개발아닌개발/C,C++

[MFC] 원하는 각도의 좌표 값 구해서 직선 그리기

by 불청객 2023. 2. 15.
반응형

알아야 할 것

일반적으로 사용하고 있는 각도계(0~360도 사이) 는 60분법(Degree)

호의 길이를 이용한 호도법(Radian)

 

삼각함수를 이용해서 각도의 좌표를 알아내 그릴 수 있는데 이때, 사용하는 방법은 Radian을 사용한다.

때문에 60분법에서 호도법으로 변환을 하는 공식은 필수.

 

참고해야할 공식

#define PI 3.141592
#define DEGREE_TO_RADIAN(degree) ((PI/180)*(degree))
// #define RADIAN_TO_DEGREE(radian) ((180/PI)*(radian))

 

 

삼각함수를 이용해서 각도별 좌표를 그리면 각도의 시작위치(0도)는 3시가 된다.

나는 12시가 0도(시작위치)가 되도록 구현할 예정

 

 

삼각함수를 이용한 좌표의 0 도(=360도)는 TOBE의 90도

 

#include "math.h"
// 선의 길이는 총 30(15,15)

//POINT stpoint;		// 시작 위치 초기화 필수
//int nAngle;			// 원하는 각도 초기화 필수

// 시작위치 변경에 따른 각도 계산
nAngle = (nAngle < 90) ? 270 + nAngle : nAngle - 90;

// 1.아래서 위로 직선 절반 그리기
pdc->MoveTo(stpoint.x, stpoint.y);
stpoint.y -=15;
pdc->LineTo(arrow.x, arrow.y);


POINT newpoint;
// 2.그릴 각도를 호도법으로 변환하여 나머지 선 그리기
double rad = DEGREE_TO_RADIAN(nAngle);
newpoint.x = stpoint.x + cos( rad ) * 15;		// stpoint :선 시작위치, 15 :선의 길이
newpoint.y = stpoint.y + sin( rad ) * 15;		// stpoint :선 시작위치, 15 :선의 길이
pdc->LineTo(newpoint.x, newpoint.y);

 

 

30˚  60˚

 

360˚ 와 24˚

728x90
반응형

댓글