Turbo-C
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
터보-C 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
Lua 게시판
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C/C++ Q/A
[5894] Re:회전시키려고 하는데;;;
외랑 [] 2303 읽음    2006-12-06 09:52
래빗 님이 쓰신 글 :
: 원점에 대해 임의의 점 x,y를 반시계방향으로 세타(임의이 각도)만큼
: 이동 시키는 방법좀 갈켜주세요;;;
: 도저히 모르겠네요;;;

입력값인 theta는 도 단위 기준입니다. d2r이 디그리 -> 라디안으로 바꿉니다.

// 도(degree)를 라디안(radian)으로
double d2r(double deg)
{
    const double d2r_ratio = M_PI / 180.0;     // M_PI는 math.h에 정의된 pi값입니다. (3.141592)
    double rad = deg * d2r_ratio;
    return rad;
}
// TPoint 는 (x, y)의 두개의 정수로 구성되어있습니다.
TPoint Rotate(double theta, TPoint Centerp, TPoint In)
{
    double beta = d2r(theta);
    double CosT = cos(beta);
    double SinT = sin(beta);
    double Diffx = In.x - Centerp.x;
    double Diffy = In.y - Centerp.y;
    TPoint Out;

    Out.x = (int)(CosT*Diffx - SinT*Diffy + Centerp.x + 0.5);  // 픽셀 단위라서 int로 캐스팅시 반올림합니다.
    Out.y = (int)(SinT*Diffx + CosT*Diffy + Centerp.y + 0.5);  // 픽셀 단위라서 int로 캐스팅시 반올림합니다.

    return Out;   // 회전된 점의 좌표(x, y)가 리턴됩니다.
}

+ -

관련 글 리스트
5886 회전시키려고 하는데;;; 래빗 2066 2006/12/03
5894     Re:회전시키려고 하는데;;; 외랑 2303 2006/12/06
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.