좌표계 변환

2023. 2. 4. 23:31컴퓨터 그래픽스/그래픽 알고리즘 및 표현

해당 공부는 honglab 의 강의에서 배운 내용들 입니다.

https://honglab.co.kr/

 

honglab

About Jeong-Mo Hong 약력 2020-2021 인스타그램 소프트웨어 엔지니어 2008-2019 동국대학교 컴퓨터공학과 부교수 2005-2007 스탠포드대학교 전산과 박사,연구원 2002-2005 고려대학교 전산학 박사 1996-2002 KAIST

honglab.co.kr

 

픽셀 배열로 이루어진 이미지 좌표계에서 화면 중심이 0,0 이고 x의 범위는 [-aspect ratio, aspect ratio], y범위는 [-1,1] 의 좌표계로 변환하는 알고리즘을 공부할 것이다. 

 

aspect ratio 는 가로, 세로 비율로 화면의 16:9 비율, 21:9 비율 같은 것을 일컫는 말이다. 

이 ratio를 구하는 공식은

 width / height 로 구할 수 있다.

좌표계 변환을 하는 방법은 scaling을 통해 하게 된다.

현재 변환하는 내용은 2D -> 2D이다.

모든 픽셀들을 돌면서 x * xScale , y* yScale 과정을 거치면서 새로운 좌표계로 입력이 들어간다. 새로운 좌표계에서는 y값이 증가하면 물체가 위로 입력되고 y가 감소하면 아래로 입력되게 하고 싶은데 현재 만든 좌표계에서는 

새로운 좌표계에서의 원

중심 좌표의 y값이 증가하면 아래로 내려가고 감소하면 위로 올라가는 방식으로 되어 있다. 왜냐하면 image 좌표계에서 height 의 값이 증가할 때 배열이므로 아래로 내려가게 되기 때문이다. 

 

해당 방식을 바꾸려면 바뀐 y 좌표계에서 - 부호를 붙여서 반전시켜주어야 한다.

 

 

vec2 Transform(vec2 arr_pixels)
{
	const float aspectRatio = width / height;
	const float xScale = 2* aspectRatio / (width - 1);
    	const float yScale = 2 / (height - 1);
    	return vec2 newCoordinate(arr_pixels.x * xScale, -arr_pixels.y * yScale);
}

 

'컴퓨터 그래픽스 > 그래픽 알고리즘 및 표현' 카테고리의 다른 글

Rasterization 원 그리기  (0) 2023.02.22
Rasterization  (0) 2023.02.15
perspective 원근표현  (0) 2023.02.09
Phong shading 을 이용한 물체의 표현  (0) 2023.02.05
Drawing Sphere 구 그리기  (0) 2023.02.05