아핀공간 &유클리드공간과 투영공간

수학, 물리학 등 게임 프로그래밍의 기반이 되는 이론에 관한 포럼입니다.

Moderator: 류광

Locked
비회원

아핀공간 &유클리드공간과 투영공간

Post by 비회원 »

아래쪽 지문은 질문의 내용을 이해하시는대 도움이 될까 해서 올린거구요..

제가 궁금한것은 아래의 지문의



" 아핀 변환의 정의를 다시 상기하면 변환된 점의 좌표는 원래의 점의 좌표에
선형결합으로 표현이 되는 반면 , 이 원근 투영의 경우 좌표값 중의 하나인
z가 분모에 나타나기 때문에 아핀변환으로 나타낼수 없다. "


이부분입니다.

아핀공간에서 선형결합이 아니므로 표현할수 없다라는 부분은

아핀 공간& 유클리드 공간에서는 p = ( x , y , 0)처럼 z = 0인경우

p' 의 x' , y' 무한인 점이 되므로

표현할수 없어

무한인 점이 존재한다라고 하는 투영 공간으로 처리하는것이 라고 생각하고 있는대

제 생각이 맞는지 궁금하네요..






지문

/*원근투영
투영평면이 z = d인 z축에 수직인 평면으로 설정
임의의 점 p = ( x , y ,z)를 투영하여 얻어지는 점 p'=(x',y',z')의
좌표로 구하려고한다.

투영중심(카메라위치 (원점))과 투영하려는 점을 연결한 투영선(직선)은
실수인 매개 변수 t를 사용하여 c(t) = (t*x , t*y , t*z)와 같이 나타낼수
있는데 , 여기서 t값에 따라 어떤 점인지 결정된다.

f(p) = t(p) + v v = 0
c(t) = (t*x , t*y , t*z)

교점의 위체에 해당하는 매개 변수 t0를 계산하면

t0 * z = d -> t0 = d/z //d = 투영평면이 있는 z

t0를 대입하면
투영점 p' = (d*x/z , d*y/z , d)가 됨을 알수 있다.



문제는 어떻게 하면 p'을 4행 4열 행렬과 p의 곱으로 나타낼것인가
하는 것이다.

아핀 변환의 정의를 다시 상기하면 변환된 점의 좌표는 원래의 점의 좌표에
선형결합으로 표현이 되는 반면 , 이 원근 투영의 경우 좌표값 중의 하나인
z가 분모에 나타나기 때문에 아핀변환으로 나타낼수 없다.

문제 해결을 위해

유클리드 공간에서 출발하여 투영공간에 잠시 들렸다가 다시 돌아오는방식

투영공간을 기본좌표계로 사용하면 자연스럽게 행렬을 유도할수 있다.*/
비회원

글쓴이인대요.

Post by 비회원 »

글쓴이인대요.

'투영공간을 기본좌표계로 사용하면 자연스럽게 행렬을 유도할수 있다.'
라고 아래의 행렬과 같이 유도할수 있다고 지문에서 나오는대요..


1 0 0 0
0 1 0 0
0 0 1 1/d
0 0 0 0


하지만 투영공식은 위에 행렬을 사용하지않고
나중에는다시

w 0 0 0
0 h 0 0
0 0 ~ 1
0 0 ~ 0

h = cot(fov/2)
w = h / aspect

~의 경우 z값을 구하는 공식


로된 행렬을 쓰잖아요.

왜그럴까요??

위에 행렬을 쓰는게 더 간편하고 연산도 빠를거 같은대...
Zeprod
Posts: 480
Joined: 2006-11-04 16:24
Location: Creaty Networks
Contact:

Post by Zeprod »

행렬 연산은 16 * 16 개의 인자가 합성되는 연산입니다.

위의 경우엔 딱 2개의 인자를 구하려 하고 있고, 그것을 따로 구할 식이 있으므로,

직접 연산하는 방식이 훨씬 빠를 것입니다.
세상이 기다리는 나만의 SHOW!
----------------------------------------------
Zeprod 홈 : http://Zeprod.org
Project. Creaty : http://Creaty.net/
Creaty 게임제작 커뮤니티 : http://Creaty.net/game/
----------------------------------------------
maru09
Posts: 45
Joined: 2009-03-23 17:21

아핀공간의 정의에 따라...

Post by maru09 »

처음 질문은... 선형 대수에 관련 된 문제라...

변환행열로 만들어지는 공간이 아핀공간이 아니라는 정도만 이해하면 될듯 합니다.

책을 안 읽어서 정확히 어떤 내용인지 모르겠지만, 아핀공간의 계산 식 들을 쓸 수 없다는 정도의 얘기인듯..


두번째 질문은...

앞의 행열은.. 동차 좌표계로만 변환...
뒤의 행열은.. 화면 좌표계로 변환... 입니다..
정영구
Locked