Applied Geometry for Computer Graphics and CAD 책의 챕터 2.7 "Point and line geometry in homogeneous coordinates" 내용이다. 영문 독해가 되면 가능한 구글링해서 원서 pdf로 보길 권한다.



1. 개념

 homogeneous coordinate를 알기 전에, 좌표의 변환에 대해 먼저 알아야한다. 좌표의 변환에는 세 가지가 있다.


 종류

 linear transformation

 affine transformation

 perspective transformation

 특징

1. 원점기준 변환

2. 변환 전 임의의 두 line이 평행했으면 변환 후에도 평행함

예) rotation

1. 원점기준 변환이 아님

2. 변환 전 임의의 두 line이 평행했으면 변환 후에도 평행함

예) translation

1. 원점기준 변환이 아님

2. 변환 전 임의의 두 line이 평행해도 변환 후에 평행함을 보장하지 못함

예) frustum 변환


 translation을 선형변환과 똑같은 프로세스(매트릭스 곱셈)로 처리하기 위해, point를 vector와 함께 처리하기 위해 geometry에서는 homogeneous coordinate를 사용하게 된다. homogeneous coordinate는 2차원 공간에서 3차원으로, 3차원 공간에서 4차원으로 좌표를 나타낸 것이다. 


------- 2차원

2. 점

 (x,y,w)로 점의 좌표를 나타내는데, w 항이 1로 되기 위해서는 모두 w로 나눠줘야 한다. 따라서 (x/w,y/w,1)로 공간상의 정확한 좌표를 얻어낸다. 하지만 계산상에서 w가 1 외의 값을 갖는건 허용된다.


3. 선

 선 또한 (x,y,w)로 나타낼 수 있다.  다만 geometry에서는 (a,b,c)로 대신하고, 이를 다음과 같이 식으로 나타낸다.

ax+by+c=0

4. 점 둘로 나타내지는 선

 점 두 개를 지나는 선은 다음과 같이 나타낸다. 

P_1, P_2에 대해, 선 L은

L=P_1×P_2

로 나타낼 수 있다.

L의 노말과 P_1, P_2를 각각 dot product하면 0이 되기 때문에 위와 같은 식을 유도할 수 있다.

<L,P_1>=0, <L,P_2>=0 이므로, L=P_1×P_2


5. 선 둘로 나타내지는 점

 선 두 개를 모두 교차하는 점은 다음과 같이 나타낸다.

L_1, L_2에 대해, 점 P는

P=L_1×L_2


6. 투영
 view point V, 투영하고 싶은 점 x, 투영된 점 x', 선 n(a,b,c)가 있다.
x'=n×(x×V)
 =<n,V>x-<n,x>V
 =<n,V>x-V<n,x>
이고, 이를 각 좌표에 대해 다시 나타내면

이렇게 단순한 매트릭스의 곱으로 나타낼 수 있다.



------- 3차원

7. 점

 2차원에서 나타낸 바와 같이, (x,y,z,w)로 나타낸다.


8. 면

면 또한 (x,y,z,w)로 나타낼 수 있다.  다만 geometry에서는 (a,b,c,d)로 대신하고, 이를 다음과 같이 식으로 나타낸다.

ax+by+cz+d=0


9. 세 점으로 만드는 면

 다음과 같이 임의의 면에 세 점을 대입한다. 

위와 같이 wedge product로 유도할 수 있다. 이는 아래와 같다.


10. 세 면으로 만드는 점

 위 9번과 같이 wedge product를 하면 된다. 대신 P=n0⋀n1⋀n2 으로 구한다.


11. 투영

 


 2차원에서 나타낸 투영에 한 차원을 높혔다고 생각하면 된다. 결과 식도 비슷하다.

만약 parallel projection이라면, view V의 w에 1 대신 0을 넣으면 된다.


Posted by sjo200
,

1. 개념


PD controller에 대한 한글 설명이 구글링 해도 보이지 않아 쓰게 되었다.


PD controller는 한 개체가 다른 개체에 점근(gradually approach)할 수 있도록


Spring(S) 와 Damper(C) 를 사용한 시스템을 나타낸다.


참고 - http://www.matthewpeterkelly.com/tutorials/pdControl/index.html



위 참고 url을 보면 PD controller를 다음과 같이 힘을 주는 수식으로 표현한다.





(x_ref - x)


위 항은 위치의 차이를 나타내고,


(v_ref - v)


위 항은 속도의 차이를 나타낸다.


즉 k_p 가 Spring 역할로, 위치의 차이만큼 힘을 주게 되고


k_d 가 Damper 역할로, 속도의 차이만큼 반대로 힘을 주게 된다.


k_d가 0이라면 Spring에 의해 oscillate 할 것이고,


0이 아니라면 Spring에 의해 속도가 가속될수록 반대로 힘을 주어


목표 위치에 근접했을때 정지하도록 한다.



- Damper에 따른 상황 분류


over damped, critically damped, under damped 상황이 있다.


f = ma에 따라 위 수식은 (가속도, 속도, 위치)에 관한 식으로 나타내지는데


이를 (x'', x', x) 로 치환해서 나타내면 2차 미분방정식이 된다.


이때 


1. 해가 2개면 over damped:  늦게 점근하는 특징을 가진다.


2. 중근이면 critically damped: 가장 빠르게 점근하는 특징을 가진다.


3. 허근이면 under damped: 빠르게 접근(점근 아님)하여 oscillate한다. 



덧붙이자면, 댐퍼는 보통 실린더 안에 구멍뚫린 원판을 잡아당기거나 밀 수 있도록 만든다고 한다.


실린더에 액체가 있으면 유압을 이용하여 속도에 반대되는 방향으로 힘을 줄 수 있기 때문이다.

'DRL for computer graphics - 수업' 카테고리의 다른 글

앞으로 더 적을 내용  (0) 2019.08.17
RL 사용 전 방식의 옛날 논문 3가지  (0) 2019.08.17
카테고리 설명  (0) 2018.05.30
Posted by sjo200
,

1. computer graphics - physics controller


 컴퓨터 그래픽스의 2018년도 기준 역사와 근황을 살펴보는 과목이었다. ACM SIGGRAPH 기준으로 논문을 쓸 때 자신의 contribution이 어떤 맥락에서 존재하는지 알아야 올바른 글쓰기를 할 수 있다. 그리고 이를 통해 reject를 면할 것이다(나는 논문 한편 안써본 석사 나부랭이지만..). 따라서 2018년 기준 그래픽스 분야에 흥행중인 DRL이 접목된 controller에 대해 주로 다룰 것이다. 이를 위해 PD controller, Deep Reinforcement Learning에 대해 알아볼 것이다. DRL에 Neural Network이 쓰이긴 하지만 주로 visuomotor control 을 위해 시각 정보 인식용 CNN, 연속적인 운동 정보 사용을 위한 RNN 등 제한적으로만 사용될 것이다. 그러므로 NN에 관한 설명은 하지 않을 것이다.



2. 논문 쓰는 과정


 논문은 논리적으로 실험결과를 담아내는 글이지만, 논문 심사과정은 매우 정치적인 것이라고 한다. reviewer가 왜 내 것은 cite 안했는지 의문을 가지는 것부터 (자연계열 중 심한 곳에는)자기 학파가 아니라고 reject하는 경우까지 있다고 한다. 좋게 말하면 전문가가 좋은 논문을 엄선해주는 것이지만, 나쁘게 말하면 끼리끼리 해먹으며(익명 논문의 글, 결과 사진, 그래프 등을 보면 어느 연구실인지 정도를 약간 추측 가능하다) 자신의 이익에 따라 권력을 휘두를 수 있는 존재가 있다고 할 수 있다(하지만 이는 conflict of interest라 하여 금기시한다). 다만 top tier를 보면 각자 맡은 역할을 열심히 하여 단점이 최소화된 모습을 보인다. 이에 관한 내용을 생각나는 대로 쓸 것이며(2019년 현재 너무 많이 까먹음) 논문 학회 대신 더 좋은, 발전적인 집단 연구 방법이 생기길 바란다. 앞서 말했듯이 나는 석사 나부랭이이며 수업 회상용으로 쓰는 글이므로 전적으로 신뢰하지는 않길 바란다.


'DRL for computer graphics - 수업' 카테고리의 다른 글

앞으로 더 적을 내용  (0) 2019.08.17
RL 사용 전 방식의 옛날 논문 3가지  (0) 2019.08.17
PD controller  (0) 2018.05.30
Posted by sjo200
,