IVIS Lab, Changwon National University

Download Report

Transcript IVIS Lab, Changwon National University

제 4 장. 기하학적 객체와 변환
창원대학교
박동규
1
강의 내용 (1)
• 어떻게 기본적인 기하학적 형들을 표현
– 특정 표현 방식에 독립적인 방식으로 기본적인 기하학
적 객체를 표현할 수 있는가?
• 표현 사이의 변환
– 컴퓨터 그래픽스 = 변환
– 모델 좌표계  세계 좌표계  카메라 좌표계
 이미지 좌표계  장치 좌표계
IVIS Lab, Changwon National University
2
강의 내용 (2)
1. 스칼라, 점, 벡터
2. 3-D 기본요소
3. 좌표계와 프레임
IVIS Lab, Changwon National University
3
4.1 스칼라, 점, 벡터
• 기본적인 기하학적 객체
– 스칼라 (, , ) : 실수
– 벡터(u, v, w)
점
• 방향과 크기를 가진 선분
– 점 (P, Q, R)
• 근본적인 기하학적 객체
• 공간에서의 위치
벡터
동일한 세 벡터
IVIS Lab, Changwon National University
4
수학적 관점:벡터 공간과 아핀 공간
• 기본적인 기하학적 객체에 대한 수학적 해석
– 기본적인 객체에 대한 수학적 정의
– 기본적인 객체에 대한 연산 정의
• 스칼라체(Scalar field)
– 덧셈, 곱셈 연산
– 닫힘성, 결합법칙, 교환법칙, 역원성질
• 벡터 공간(Vector Space)
– 스칼라 + 벡터
• 아핀 공간(Affine Space)
– 벡터 공간 + 위치
– 스칼라 + 벡터 + 점
– 벡터-점 합, 점-점 뺄셈연산이 있음
• 유클리드 공간(Euclidean Space)
– 벡터 공간 + 거리
– 거리가 정의된 공간
IVIS Lab, Changwon National University
5
기하학적 추상 자료형 (1)
• 스칼라(Scalar)
– 실수 – 양 또는 크기의 측정 단위
– 덧셈, 곱셈, 항등원, 역원
• 벡터(Vector)
– 공간에서의 방향성 성분
• 점(Point)
– 공간에서의 점
• 수학적 모델
– 아핀 공간에서의 스칼라, 벡터, 점
IVIS Lab, Changwon National University
6
기하학적 추상 자료형 (2)
• 점과 벡터를 관련 짓는 연산
–점-점 뺄셈 = 벡터
•v=P–Q
–점과 벡터의 덧셈 = 점
•P=v+Q
IVIS Lab, Changwon National University
7
기하학적 추상 자료형 (3)
• 벡터의 덧셈
– 수미연결규칙(head-to-tail rule)
(P - Q) + (Q - R) = P - R
IVIS Lab, Changwon National University
8
Review of vectors
• 벡터 연산
– 기하학적 사고를 대수학적으로 표현하는 통합된 방법.
– 그래픽스에서 벡터는 2,3,4차원을 가짐
• 임의의 차원에 적용할 수 있음
– 크기와 방향을 가짐
• 화살표로써 나타냄.
IVIS Lab, Changwon National University
Review of vectors
• 변위로 표현된 벡터
• Vector : 두 점들간의 차
–
–
–
–
v=Q-P
벡터와 점의 합은 점  Q=P+v
N-dimension, N-tuple  w=(w1,w2,w3,…,wn)
편의상 행행렬로 표기하지만 벡터와 점을 행렬식에 곱
할 경우 열행렬(Column matrices)로 표현
IVIS Lab, Changwon National University
Review of vectors
• 벡터 연산
– a=(2,5,6), b=(-2,7,1)
– a+b = (0,12,7) and 6a=(12,30,36)
– the effect of scaling a vector.
IVIS Lab, Changwon National University
Review of vectors
• 벡터의 뺄셈
IVIS Lab, Changwon National University
Vector class의 예
/*==============================================================
Vector2 Class
===============================================================*/
class Vector2
{
public:
float x,y;
void set(float dx,float dy){x=dx;y=dy;}
void set(Vector2& v){x=v.x;y=v.y;}
void setDiff(Point2& a,Point2& b)//set to differnect a-b
{
x=a.getX()-b.getX();
y=a.getY()-b.getY();
}
void normalize()
{
double sizeSq=x*x+y*y;
if (sizeSq<0.0000001)
{
cerr << "\nnormalize() sees vector(0,0)!";
return;
}
float scaleFactor=1.0/(float)sqrt(sizeSq);
x*=scaleFactor;y*=scaleFactor; //정규화 시켜주기 위해 벡터의 크기를 나눔
}
IVIS Lab, Changwon National University
Vector2(float xx,float yy){x=xx;y=yy;}
Vector2(Vector2& v){x=v.x;y=v.y;}
Vector2(){x=y=0;}
float dot(Vector2 b)
{
return x*b.x+y*b.y;
}
void perp()
{
float tmp=x;x=-y;y=tmp;
}
};
float perpDot(Vector2& v)
{
return x*v.x-y*v.y;
}
IVIS Lab, Changwon National University
14
IvVector3의 예
class IvVector3
{
public:
// constructor/destructor
inline IvVector3() {}
inline IvVector3( float _x, float _y, float _z ) :
x(_x), y(_y), z(_z)
{
}
inline ~IvVector3() {}
// copy operations
IvVector3(const IvVector3& other);
IvVector3& operator=(const IvVector3& other);
// text output (for debugging)
friend IvWriter& operator<<(IvWriter& out, const IvVector3& source);
...
}
IVIS Lab, Changwon National University
IvVector3&
IvVector3::operator=(const IvVector3& other)
{
// if same object
if ( this == &other )
return *this;
x = other.x;
y = other.y;
z = other.z;
return *this;
} // End of IvVector3::operator=()
IVIS Lab, Changwon National University
float IvVector3::Length() const
{
return IvSqrt( x*x + y*y + z*z );
} // End of IvVector3::Length()
// @ IvVector3::LengthSquared()
// Vector length squared (avoids square root)
float IvVector3::LengthSquared() const
{
return (x*x + y*y + z*z);
} // End of IvVector3::LengthSquared()
IVIS Lab, Changwon National University
Vector Length
•
•
두 벡터의 크기를 비교하기 위한 기준
norm
– size-measuring function
– symbol - ‖v‖
1. ‖v‖ >= 0, and ‖v‖ = 0  v = 0
2. ‖av‖ = |a|‖v‖
3. ‖v+w‖ ≤‖v‖ + ‖w‖
•
•
‖v‖ 기호를 절대값 기호 |a| 와 구분하기 위하여 사용
L1 norm – Manhattan distance
– 주어진 벡터 요소의 합
•
L2 norm (Euclidean norm)
– 벡터의 요소에 대한 피타고라스 정리를 이용하여 얻는다
IVIS Lab, Changwon National University
• 벡터 길이
IVIS Lab, Changwon National University
source
float IvVector3::Length() const
{
return IvSqrt( x*x + y*y + z*z );
} // End of IvVector3::Length()
// Vector length squared (avoids square root)
//-----------------------------------------------------------------------------float IvVector3::LengthSquared() const
{
return (x*x + y*y + z*z);
} // End of IvVector3::LengthSquared()
IVIS Lab, Changwon National University
void IvVector3::Normalize()
{
float lengthsq = x*x + y*y + z*z;
if ( ::IsZero( lengthsq ) )
{
Zero();
}
else
{
float factor = IvInvSqrt( lengthsq );
x *= factor;
y *= factor;
z *= factor;
}
} // End of IvVector3::Normalize()
IVIS Lab, Changwon National University
직선(Lines)
• 직선(Lines)
i)
P( )
d
P ( ) = P0 +  d
P0
직선의 매개변수 형식
IVIS Lab, Changwon National University
22
아핀합(Affine Addition)
• 아핀합
ii )
R
P
Q
P = Q + d
d = R Q
 P = Q +  ( R  Q)
= R + (1   )Q
등가적으로
P = 1 R +  2 Q , 1 +  2 = 1
아핀 가산
IVIS Lab, Changwon National University
23
컨벡스 헐(Convex Hull)
• 볼록한(convex) 객체
– 객체 내부의 임의의 두 점을 연결하는 선분상의 점들이
객체 내에 있는 객체
• 컨벡스 헐(convex hull)
– 주어진 점들의 아핀가산에 의해서 만들어진 점들의 집
합
P =  i Pi ,  i = 1 ,  i  0
IVIS Lab, Changwon National University
24
벡터의 내적과 외적 (1)
• 두 벡터의 내적(내적 : dot product, inner
product)
– 벡터 u와 v가 이루는 각이 일때
u • v = | u | | v | cos  (u  v = 0 이면u 와v 는직교)
– 벡터 u와 v가 다음과 같을 때
a1 
u= 
a 2 
b1 
v= 
b 2 
u  v = a1b1 + a2b2
– 두 벡터 사이의 각
cos 
=
uv
ab +a b
=
|u| |v| a + a b + b
1
1
2
1
2
2
2
2
2
1
2
2
– 두 벡터가 직교한다(Orthogonal)  =0  u•v=0
IVIS Lab, Changwon National University
25
내적의 기하학적 의의
IVIS Lab, Changwon National University
26
Properties of the Dot Product
1. Symmetry
2. Linearity
3. Homogeneity
4.
a b = b  a
( a + b)  b = a  b + c  b
( sa )  b = s(a  b)
b = b b
2
• 교환법칙 성립(commutitive)
• 선형성을 가짐(dot product is linear)
IVIS Lab, Changwon National University
The angle between two vectors
• 내점의 가장 중요한 응용 : 두 벡터나 선분 사이의 각연산
– 그림에서 두 벡터 b, c는 각과 거리로 표현가능
b = ( b cos b , b sin b )
c = ( c cos c , c cos c ).
b c = b c cos c cos b + b c sin b sin c
= b c cos(c  b ),
삼각함수의 합,차 공식
b  c = b c cos 
 
cos  = b c .
두 단위 벡터의 내적 = 두 벡터 사이의 코사인값
IVIS Lab, Changwon National University
The Sign of b∙c, and Perpendicularity
• 이러한 내적의 성질을 이용하면 두 벡터의 직교성 검사가 가능
– cos >0 이면  <90 b∙c>0
– cos =0 이면
– cos <0 이면
 =0
 >90
IVIS Lab, Changwon National University
b∙c=0
b∙c<0
Cross Product of Two Vectors
• 외적(外積)(또는 벡터곱)
– v,w 벡터가 있을 경우 두 벡터에 수직인 벡터 u를 구하는 연산
– 두 벡터의 수직 벡터는 두개가 존재함
IVIS Lab, Changwon National University
• 외적연산에는 오른손 법칙이 적용됨
– v x w = - (w x v) : 외적에는 교환법칙이 성립하지 않음
– ‖v x w‖ = ‖v‖‖w‖sin θ
– v x w = (vywz – wyvz, vzwx – wzvx, vxwy – wxvy)
= (vywz, vzwx, vxwy) – (wyvz, wzvx, wxvy) -> 9 Operation
• 벡터 6개 주요 규칙
–
–
–
–
–
–
vⅹw = -wⅹv
uⅹ(v+w)=(uⅹv)+(uⅹw)
(u+v)ⅹw=(uⅹw)+(vⅹw)
a(vⅹw)=(av)ⅹw=vⅹ(aw)
vⅹ0=0ⅹv=0
vⅹv=0
IVIS Lab, Changwon National University
• v x w 벡터를 계산하여 정규화 하는 것은 한 방향의 법선
벡터를 만들 것이다
– w x v 벡터는 반대방향의 벡터를 만들게 됨
IVIS Lab, Changwon National University
The Cross Product of Two vectors
• 외적은 삼차원 공간에서만 정의됨
– 외적의 결과 두 벡터에 수직인 벡터가 만들어짐
– 외적의 크기는 두 벡터가 이루는 평행사변형의 면적
Given the 3D Vectors a = (a x , a y , a z ) and b = (bx , by , bz ),
their cross product is denoted as a  b
a  b = (a y bz  a z by )i + (a z bx  a x bz ) j + (a x by  a y bx )k
i
a  b = ax
bx
j
ay
by
k
az .
bz
1. i  j = k ;
j  k = i;
k  j = i.
2. a  b = b  a
3. a  (b + c) = a  b + a  c
4. ( sa )  b = s (a  b)
IVIS Lab, Changwon National University
(antisymme try)
(linearity )
(homogenei ty)
Geometric Interpretation of the Cross Product
• 외적의 성질 중 매우 유용한 성질
a  b = a b sin(  )
IVIS Lab, Changwon National University
Finding the Normal to a Plane
– 평면을 이루는 세 점을 할 때 이 평면에 수직인 벡터를
외적을 통해서 알 수 있다
– a=P2-P1, b=P3-P1, n=a x b
IVIS Lab, Changwon National University
평면(Planes)
PQ : S ( ) =  P + (1   )Q
R
0  1
T
P
SR : T (  ) =  S + (1   ) R


S
Q
0   1
T ( ,  ) = P +  (1   )(Q  P) + (1   )( R  P)
T ( ,  ) = (1   (1   )  (1   )) P +  (1   )Q + (1   ) R
컨벡스 헐 정의와 일치
IVIS Lab, Changwon National University
36
4.2 3차원 기본요소
• 2D에서 3D로 넘어갈 때 고려할 점
– 3D 기본요소의 수학적 정의가 복잡할 수 있다
– 구현이 효율적인 객체만 관심을 갖는다
• 기본요소로 선택될 객체는 다음의 특징을 가져야
한다
– 객체는 표면에 의해 기술되고, 속이 비었다고 간주한다
– 객체는 삼차원 공간 내의 정점의 집합으로 명시될 수
있다
– 객체는 평면 볼록 다각형으로 구성되거나 근사될 수 있
다
IVIS Lab, Changwon National University
37
삼차원 기본요소
• 가장 적절한 기본요소는
다각형
– 다각형 - 다각형은 정점들의 집합으로 구성된다.
(파이프라인에 적합)
– 평면
( 면과 법선의 정의가 가능)
– 볼록
( 채우기 용이)
– 삼각형 ( 렌더링이 효율적)
IVIS Lab, Changwon National University
38
삼차원 기본요소 (3)
• 임의의 다각형
삼각형
분할(tessellation)
• 예외
– 입체표현
• 구성입체기하(constructive solid geometry ;CSG)
– 입체 객체들의 작은 집합으로부터 합집합, 교집합 같은 집합연산
으로 객체를 구축
• 체소(voxel) 표현
IVIS Lab, Changwon National University
39
4.3 좌표계와 프레임
좌표계 - 기저 벡터들에 의해서 정의된다
e3
v =  1e1 +  2 e2 +  3 e3
v
O
e1
IVIS Lab, Changwon National University
e2 벡터 v 의 특정 좌표계에 대한 표현
1 
v =  2 
 3 
40
좌표계와 프레임 (2)
프레임 - 기저벡터 + 원점
e3
v
P
P0
벡터
점
e2
v =   i ei
P = P0 +   i ei
e1
IVIS Lab, Changwon National University
41
좌표계
• Which is correct?
v
v
• Both are because vectors have no fixed
location
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
IVIS Lab, Changwon National University
42
프레임
• A coordinate system is insufficient to
represent points
• If we work in an affine space we can add a
single point, the origin, to the basis vectors to
form a frame
v2
v1
P0
v3
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
IVIS Lab, Changwon National University
43
프레임에서의 표현
• Frame determined by (P0, v1, v2, v3)
• Within this frame, every vector can be written
as
v=1v1+ 2v2 +….+nvn
• Every point can be written as
P = P0 + 1v1+ 2v2 +….+nvn
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
IVIS Lab, Changwon National University
44
Confusing Points and Vectors
Consider the point and the vector
P = P0 + 1v1+ 2v2 +….+nvn
v=1v1+ 2v2 +….+nvn
They appear to have the similar representations
p=[1 2 3]
v=[1 2 3]
v
which confuses the point with the vector
p
A vector has no position
v
Vector can be placed anywhere
point: fixed
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
IVIS Lab, Changwon National University
45
A Single Representation
If we define 0•P = 0 and 1•P =P then we can write
v=1v1+ 2v2 +3v3 = [1 2 3 0 ] [v1 v2 v3 P0] T
P = P +  v +  v + v = [   1 ] [v v v P ] T
0
1 1
2 2
3 3
1
2
3
1
2
3
0
Thus we obtain the four-dimensional
homogeneous coordinate representation
v = [   0 ] T
1
2
3
p = [1 2 3 1 ] T
Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009
IVIS Lab, Changwon National University
46
동차 좌표계
• 평행한 두 직선은 만나는가?
데카르트 좌표계(직교 좌표계)에서 ?
IVIS Lab, Changwon National University
NO
47
동차 좌표계
• 평행한 두 직선은 만나는가?
Point at infinity (∞,∞),
투영공간에서 ?
IVIS Lab, Changwon National University
YES
48
동차 좌표계
• Problem : Two parallel lines can intercept
• Solution :
– N차원 공간에 N+1 차수를 추가하여 이 문제를 해결
– (X,Y) -> (x,y,w) 를 도입
X = x/w
Y = y/w
– 예)
• 데카르트 좌표계의 점 (1,2)는 동차좌표계에서 (1,2,1)이 됨
• 무한대의 위치에 있는 점 (1,2)는 (1/0, 2/0) = (∞,∞)이 되어
동차좌표계에서 (1,2,0)으로 표현함
• ∞을 사용하지 않고도 무한을 표현할 수 있다는 장점.
IVIS Lab, Changwon National University
49
Homogeneous?
• Homogeneous는 “동질의”라는 의미
– 동차좌표계 값은 /w 로 데카르트 촤표계로 변환가능
IVIS Lab, Changwon National University
50
증명
• Two parallel lines can intercept
– 유클리드 공간에서 위의 선형방정식의 해?
• C=D 이면 두 직선은 겹친다.
• C≠D 이면 해가 존재하지 않는다.
– 위의 식을 투영공간에서의 식으로 고쳐보자.
• x, y를 x/w, y/w로 고치면
IVIS Lab, Changwon National University
51
• 앞의 식에서 (C - D)w = 0 이므로 ∴ w = 0, 즉
(x,y,0)가 해가된다.
– 즉 (x,y,0)인 점(무한대 공간에서의 점)에서 만난다.
• 이와 같이 동차좌표계는 3D장면을 2D평면에 투
영시키기 위한 도구로, 컴퓨터 그래픽스에서 매우
유용하게 사용된다.
IVIS Lab, Changwon National University
52
동차 좌표(Homogeneous Coordinate
Representation)
1 
X 
점 P = Y  , 벡터v =  2 
 3 
 Z 
1.
2.
동일한 표현으로 혼란 야기
이동 변환을 행렬의 곱셈으로
나타낼 수 없다
e1 
e 
점 P = P0 + 1e1 +  2e2 +  3e3 = 1  2 a3 1  2 
e3 
 
P0 

1 
 1 
 
 
마찬가지로 P =  2  , v =  2 
동차 좌표 표현
 3 
3 
 
1 
IVIS Lab, Changwon National University
 
0 
53