좌표 회전 변환

수학공식 조회 수 20717 추천 수 1 2007.09.22 14:48:05

좌표 회전 변환이란?

예를들어 (1,2) 의 좌표를 기준으로 (4,4)를 40도 회전하였을때 좌표는 어디인가? 를 구할수 있는 변환이다.

 


 

원점에 대해서 θ도 회전시킬 때, 기존 좌표를 (x , y), 변환된 좌표를 (x' , y')라 하면 다음과 같은 식이 성립합니다.

s1.jpg

식의 증명은 아래와 같이 삼각함수 덧셈공식을 이용하면 가능합니다.

s2.gif

 

 #include <stdio.h>
#include <math.h>         // sin(.), cos(..)

#define  PI  3.14159

/*
원점(origin)    : O( 0, 0 )
회전할 대상(taget)  : T( tx, ty ),
회전중심점(center)  : C( cx, cy),
회전후의점(new pt)  : N( nx, ny),

주어진 회전중심점 C에 대하여 회전하는 문제는
회전중심점 C가 원점 0와 일치하도록 회전할 점 T를 함께 평행이동한 후
z-축을 중심으로하여 원점 0에서 주어진 각 q만큼 회전하고
다시 원점 0가 처음 주어진 회전중심점 C와 일치하도록 함께 평행이동합니다.*/

void rotate(  float* nx, float* ny, float tx, float ty, float cx, float cy,  float q )
{
    float cosq = cos( q ), sinq = sin( q );

    // 회전중심점 C가 원점  O와 일치하도록 회전할 점 T를 함께 평행이동
    tx -= cx, ty -= cy;

    // 원점 O에 대하여 회전할 점 T를 q라디안 만큼 회전
    *nx  =  tx *  cosq - ty * sinq;
    *ny =  ty * cosq + tx * sinq;

    // 원점 O가 원래의 회전 중심점 C와 일치하도록 회전된 점 N과 함께 이동
    *nx += cx, *ny += cy;
}

int main(void)
{
    float tx, ty, cx, cy, nx, ny;
    float deg, q;

    printf( "회전대상점의 x좌표 입력 >> " );
    scanf( "%f", &tx );
    printf( "회전대상점의 y좌표 입력 >> " );
    scanf( "%f", &ty );

    printf( "\n회전중심점의 x좌표 입력 >> " );
    scanf( "%f", &cx );
    printf( "회전중심점의 y좌표 입력 >> " );
    scanf( "%f", &cy );

    printf( "\n회전각도(degree) 입력 >> " );
    scanf( "%f", ° );

    // 각도를 라디안으로 환산
    q = deg * PI / 180;

    rotate( &nx, &ny, tx, ty, cx, cy, q  );
    printf( "\n점(%.0f,%.0f)을 점(%.0f,%.0f)에 대하여 \n%.f도 만큼 회전한 위치는 (%.0f,%.0f)입니다.\n", tx, ty, cx, cy, deg, nx, ny );
    return 0;
}

Share
문서 첨부 제한 : 0Byte/ 1000.00MB
파일 제한 크기 : 500.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회 수

알고리즘 선형 시스템의 상태 추정 솔루션, Kalman 필터링 - 전자엔지니어 file

회로 초보자를 위한 LED 저항/전류/전압 계산법 file [1]

알고리즘 [PDF] Planning Algorithms (Steven M. LaValle) image

프로그래밍 Eclipse Tool에서 자바 이외의 프로그래밍 개발환경 구축 방법 imagefile

알고리즘 부동소수점 비법들 imagefile

알고리즘 C언어를 이용한 고정 소수점 함수의 설계

알고리즘 AD(Analog to Digital)컨버팅을 위한 칼만필터의 사용 file [2]

기타 Matlab 파워포인트 강의자료 file

알고리즘 모터의 속도 측정 알고리즘 (M/T) file

알고리즘 최단거리 탐색 Dijkstra 알고리즘 소스 file

기술자료 가속도계, 자이로, MEMS, ARS, AHRS, IMU, INS, GPS [3]

기술자료 RS232/422/485 참고자료 image

프로그래밍 칼만필터 코드화 예제

기술자료 칼만필터

기타 DC MOTOR 노이즈 제거방법 imagefile

기타 무라타 자이로 시리즈에 대한 설명 [2]

알고리즘 BMP파일에서 RGB 데이터 찾기 imagefile

기술자료 A Basic Introduction to Filters Active, Passive, and Switched-Capacitor file

기술자료 터치스크린 이론 file

기술자료 OMRON - 서보 모터 제어 (AC/DC) file