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

C++빌더 Q&A
C++Builder Programming Q&A
[44805] Re:도형을 마우스로 회전시킬려면 어떻게 해야 할까요?
둘리 [dooly386] 1623 읽음    2006-05-10 14:42
아마 CAD 프로그램 같은것을 작성하시나 보군요..
화면에(Window) 그림을 그린다는 것은 그 의미적으로 크게 raster 와 vector 가 있습니다.
raster 는 말그대로 이미지를 뿌려 주는 방식이고요 vector 는 그림의 객체 자체가 vector 성분(수학적인 vector와 의미가 같습니다) 이 있는 선분이나 원호, 타원  등등을 그리는 것이죠..
raster 의 경우 회전을 pixel 자체를 처리해야 됩니다.
그러나 raster 의 경우는 결국 화면에 DC 에 그려지면 여러가지 의미는 있겠지만 raster 화면에 결국 하나의
이미지로 존재를 하죠.

vector 의 그림회전은  가지고 있는 vector 데이터들을 좌표변환(회전변환 이겠죠?) 공식에 의하여 새로운 좌표를
계산하여 다시 그려주는 겁니다. (잔상이 남지 않도록 회전할 데이터는 화면의 배경으로 다시 그리고요, 이동시에는 ROP 모드를 XOR 로 하시면 drag 효과가 있겠죠?)

마우스로 회전을 한다는 것은 마우스가 어느 시작점서 이동한 위치를 계산하여 각도를 계산하고.. 이 각도를
이용하여 본인이 가지고 있는 각 요소(entity) 들을 좌표 회전이동 하여 다시 그리는 것 입니다.

즉 Vector draw 는 화면에 객체를 그리는것은 하나의 표현이고 실제 데이터는 메모리에 나름대로 데이터베이스를 구축하여 가지고 있어야 나중에 회전이든 이동이든 하여 다시 그릴때 활용을 할 수 있겠죠..

참고적으로 회전할때 꼭 원래 처음에 입력된 데이터를 회전하는게 좋습니다.
회전한것을 또 회전하고 또회전하고 하다보면 어짜피 회전공식은 정수가 아닌 실수 좌표라 오차가 계속 발생 합니다..
이러한 오차를 계속 쌓아가면 결국 나중에 데이터가 엉망이 될 수 있습니다.

제가 질문하신 내용을 CAD 쪽으로 해석해서 설명을 드렸는데.. 혹시 다른것이라면.. 조금 상황이 다르겠죠..

수고하세요..

이용태 님이 쓰신 글 :
: 도형((사각형, 삼각형, 라인, 호, 포물선, 타원등)을 화면에 출력 한 후
:
: 마우스로 그려진 도형을 회전시켜보고 싶은데요..
:
: 어떻게 해야 할지 모르겠습니다.
:
: 현재 할 수 있는건... 마우스로 드래그해서.. 도형 출력시키는거 밖에 못합니다.;;
:
: 답변 부탁드립니다.

+ -

관련 글 리스트
44803 도형을 마우스로 회전시킬려면 어떻게 해야 할까요? 이용태 847 2006/05/10
44805     Re:도형을 마우스로 회전시킬려면 어떻게 해야 할까요? 둘리 1623 2006/05/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.