반응형
알아야 할 것
일반적으로 사용하고 있는 각도계(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도(시작위치)가 되도록 구현할 예정
#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);
728x90
반응형
'개발아닌개발 > C,C++' 카테고리의 다른 글
[C,C++] visual studio 2008 디버그 출력창에 Trace 로그 안나옴 (0) | 2023.02.07 |
---|---|
[MFC] 두 점의 좌표로 화살표 그리기 (0) | 2023.01.05 |
[MFC] shapefile(shapeLib-1.5.0) c++ 오픈소스 라이브러리 컴파일하기 (0) | 2022.05.13 |
[MFC] SDI 메뉴 모음(m_wndMenuBar) 없애기 (0) | 2022.04.29 |
[MFC/C,C++] 가변 인자를 이용하여 WORD 배열 Define 선언하기 (0) | 2022.04.19 |
댓글