3D 평면상의 점들을 2D로 변환하는 방법에 대해서 알아보도록 하자.
지금 개발하고 있는 2D상의 점들을 삼각화 시키는 루틴이 있는데 이 루틴을 3D 평면상의 점들에 대해서 적용시키기 위해서
3D 평면상의 점들을 2D로 변환시키는 방법이 필요하다.
3D 평면의 법선 벡터(n)를 Z축과 일치시키기 위해서 X,Y 축 방향으로 회전시키는 방법이다.
이 방법에 대해서는 이전 글을 참조 하면 될것 같다.
앞서 이야기 했듯이 이미 평면의 법선 벡터(n)를 알고 있으므로,
평면상의 임의의 점(P)을 하나 선택하고 그리고 다른 또 하나의 점을 선택한다.
그럼 하나의 벡터(u)를 구할 수 있고 이 벡터와 평면의 법선 벡터와의 외적을 통해 구한 벡터와 평면상에서 수직인 또 다른 벡터(v)를 구할 수 있다.
여기서 구한 평면상의 두 벡터(u,v)를 축으로 하여 평면상의 모든 점들을 u,v축에 대한 값으로 표현할 수 있다.
이렇게 해서 $t_2$의 값을 구할 수 있고, 마찬가지로 $t_1$의 값을 구할 수 있다.
결론적으로 모든 점들에 대하여 u,v 축에 대한 값을 구할수 있으므로 2D로 변환한 것이 된다.
고찰 2)가 고찰 1)보다 나은 점은 고찰 1)에서는 실제적으로 몇 단계의 계산을 거쳐 2D 상의 점으로 변환시킨다는 것이다.
이때 아무래도 시간과 floating point연산으로 인한 데이터 변형이 일어날수 있다는 것이다.
이에 비해 고찰 2)는 변화 루틴이 간단하다.
지금 개발하고 있는 2D상의 점들을 삼각화 시키는 루틴이 있는데 이 루틴을 3D 평면상의 점들에 대해서 적용시키기 위해서
3D 평면상의 점들을 2D로 변환시키는 방법이 필요하다.
고찰 1)
3D 평면을 X-Y 평면으로 맞추는 것이다.3D 평면의 법선 벡터(n)를 Z축과 일치시키기 위해서 X,Y 축 방향으로 회전시키는 방법이다.
이 방법에 대해서는 이전 글을 참조 하면 될것 같다.
고찰 2)
이 글에서 주로 생각해 볼것은 실제로 평면을 회전시키지 않고 2D 상으로 변환시키는 방법이다.앞서 이야기 했듯이 이미 평면의 법선 벡터(n)를 알고 있으므로,
평면상의 임의의 점(P)을 하나 선택하고 그리고 다른 또 하나의 점을 선택한다.
그럼 하나의 벡터(u)를 구할 수 있고 이 벡터와 평면의 법선 벡터와의 외적을 통해 구한 벡터와 평면상에서 수직인 또 다른 벡터(v)를 구할 수 있다.
여기서 구한 평면상의 두 벡터(u,v)를 축으로 하여 평면상의 모든 점들을 u,v축에 대한 값으로 표현할 수 있다.
이렇게 해서 $t_2$의 값을 구할 수 있고, 마찬가지로 $t_1$의 값을 구할 수 있다.
결론적으로 모든 점들에 대하여 u,v 축에 대한 값을 구할수 있으므로 2D로 변환한 것이 된다.
고찰 2)가 고찰 1)보다 나은 점은 고찰 1)에서는 실제적으로 몇 단계의 계산을 거쳐 2D 상의 점으로 변환시킨다는 것이다.
이때 아무래도 시간과 floating point연산으로 인한 데이터 변형이 일어날수 있다는 것이다.
이에 비해 고찰 2)는 변화 루틴이 간단하다.
댓글
댓글 쓰기