두 개의 영상을 입력 받아 다음 그림과 같이 계속 회전하면서 보여준다.
하나의 원기둥을 생각해보자.
영상을 불러와 옆면에 그려 넣는다.
https://dspace.inha.ac.kr/bitstream/10505/19736/1/19326.pdf
http://jidolstar.tistory.com/545
그리고 원 기둥 모양을 유지한 채로 영상을 회전한다.
다음은 구 모양에 영상을 입힌 결과이다.
알고리즘
원 기둥을 분해해 보면 다음과 같다. 위쪽 원과 아래쪽 원이 있다. 즉 옆면 네모의 영상을 타원 모양으로 y축 좌표를 변경하여 그리면 된다.
C로 원을 그려보자: https://kldp.org/node/97929
C#으로 타원그리기
타원은 어떻게 그릴까? 다음 그림의 공식을 이용하여 타원 좌표를 구할 수 있다.
https://ko.wikipedia.org/wiki/%ED%83%80%EC%9B%90
겉면의 y축 좌표를 포물선 방정식을 이용하여 구하여 그리면 된다. 그리고 왼쪽으로 스크롤 이동 시킨다.
속면 y축 위/아래 좌표를 포물선 방정식을 이용하여 구하고, 반대로 이동 시킨다.
코드 구현 알고리즘
1) 원 영상을 불러 온다. Mat src_img; 2) 목적 영상으로 옮긴다. 이때 at()함수를 이용한다. Mat dst_img; 3) at()함수 좌표를 타원 공식을 대입하여 y좌표를 변경한다. |
다음 예제 코드는 sin을 이용하여 그린 소스로 포물선 공식으로 변경하여 사용할 수 있다. 단 at() 함수는 속도가 느리니 ptr() 함수를 사용하여 속도를 높여야 합니다.
학생 작품들
2025-2학기 박성경 학생 작품
2023-2학기
2022-2 학기
2021-2학기