• Cohen-Sutherland Line Clipping Algorithm?

    이 알고리즘은 화면에 보이는 선이 화면 밖으로 나갔을 때 화면 밖의 선은 연산을 안하도록 막아줄 때
    사용하는 알고리즘으로 1967년에 개발이 되었다고 한다.

알고리즘은 다음 여부에 따라 행을 포함, 제외 또는 부분적으로 포함 된다.

 

  • 두 끝 점이 모두 화면 영역에 있을 때
  • 두 끝 점이 모두 보이지 않는 영역을 하나 이상 공유하므로 선이 보이는 영역을 넘어 가지 않는다.
  • 두 끝 점은 서로 다른 지역에 있고, 이런 상황의 경우 알고리즘은 화면 영역 외부에 있는 두 지점 중 하나를 찾는다.
    그런 다음 바깥 점과 확장 된 화면 경계의 교차가 계산되고 이 새로운 점이 바깥 점을 대체하게 된다.

 

아래 그림의 숫자를 "아웃 코드"라고 한다.

  Left Central Right
Top 1001 1000 1010
Central 0001 0000 0010
Bottom 0101 0100 0110

라인의 두 지점 각각에 대해 아웃 코드가 계산이 되고, 아웃 코드는 2차원 클리핑을 위해 4bit, 또는 3차원인 경우에
6 비트를 가질 것이다. 점이 화면 밖에 있으면 첫 번째 bit는 1로 설정이된다.
2D 출력 코드의 비트는 상단, 하단, 오른쪽, 왼쪽을 나타낸다. 예를 들어,
아웃 코드 (1010)는 화면의 우측 상단을 가리킨다.

 

클리핑이 발생한 후 각 반복에서 끝 점에 대한 아웃 코드를 다시 계산 해야 한다.

그리고 Cohen–Sutherland 알고리즘은 직사각형 "클립 창"에서만 사용할 수 있다고 한다.

 

 

 

Simplex(단순한 물체)의 종류 및 표현
0-Simplex = Point(점)  
1-Simplex = Line Segment(선분) aP + ( 1 - a ) Q = a + b = 1
2-Simplex = Triangle(삼각형) aP + bQ + ( 1 - a - b ) R
3-Simplex = Tetrahedron(사면체, 삼각뿔)  

 

  • 선은 두 개의 점으로 만들어진 것인데 왜 1-Simplex 인가?

    이유는 계수가 1이기 때문이다.

    왜냐하면 선은 "a + b = 1"이라는 조건이 들어가기 때문에 선을 만들 때는 계수가 두 개가 들어가는 것이 아닌 한 개가 들어가게 된다.


  • 3-Simplex는 어째서 Tetrahedron(사면체, 삼각뿔)이 되는가?

먼저 두 점이 있는데 이것을 아핀 조합을 하면 선이 만들어진다.

다음과 같이 선에 점이 일직선 상으로 세 개가 있다고 가정하고 이런 경우엔 삼각형이 만들어질까?

결과는 만들어지지 않는다. 왜냐하면 이런 경우에는 선형 독립이 아닌 선형 의존이기 때문이다.

 

위에 그림을 보면 아핀 조합을 통해서 가운데 위치한 점을 만들 수 있기 때문에 가운데 점은 있을 필요가 없다.

점과 점 사이에는 다른 선형성이 있어야 한다. 그래야지 어떤 조합을 할 수 있는 근거가 되기 때문이다.

 

위와 같이 삼각형에서 점을 하나 추가했을 경우에도 아핀 조합을 통해서 평면이 만들어지기 때문에 선형 의존이 된다.

 

그렇다면 선형독립이 되려면 어떻게 해야할까?

 

새로운 점의 위치가 평면 위의 3차원 공간 어딘가에 있어야 한다. 평면 위에 점을 추가할 경우

다음과 같이 평면이 아닌 정삼각뿔 형태가 만들어지기 때문에 선형 의존이 아닌 선형 독립이 된다.

따라서 3-Simplex가 Tetrahedron(사면체, 삼각뿔)이 되는 이유는 선형 독립이기 때문이다.

  • Convex는 무엇인가?

Convex는 한국말로 "볼록하다"또는 볼록 모양으로 된 집합으로도 표현을 하는데

이와 반대로 Concave(오목하다)라는 것도 존재한다.

그런데 이것을 수학적으로 설명하려면 어떻게 해야 되는지 고민을 하게 된다. 

정의된 것 중에 영어로 정리가 된 것이 있어서 살펴보려고 한다.

"A Subset C of S is convex if, for all x and y in C, the line segment connecting x and y is included in C."

해석을 하자면

"S의 부분 집합 C를 Convex라 하고 C에 속한 모든 x, y에 대해서 x, y를 연결한 선분이 C안에 포함되어있다면 C를 Convex라고 한다."라고 할 수 있다.

이것을 의역해보면 "무수한 점으로 된 집합이 있는데, 여기서 아무 점이나 두 개를 찍고 연결을 하였을 때
해당 선분을 Convex라고 한다."라고 생각하면 된다.

Convex와 반대로 Concave(오목하다)가 존재한다.

  • Convex의 성질이 왜 중요한가

충돌처리를 할 때 Convex 모양으로 만들어주면 편리하다.

왜냐하면 Convex는 SAT(Seperating Axis Theorem)라는 성질이 만족하고,
이 성질을 통해서 충돌 처리를 할 때 충돌이 됐는지 안됐는지 확인을 할 수 있기 때문이다.

SAT

위에 그림을 보면 어떤 축을 찾았을 때 그것이 서로 떨어져 있는 것을 볼 수 있는데,

이것은 충돌하지 않았음을 의미한다.

 

이로써 Convex가 가지는 특징은 "충돌체크를 할 때 유용하다."라고 볼 수 있다.

  • Line(직선)의 생성 조건

선이 무한대에서 -무한대의 범위로 제한을 두지 않고 쭉 연결했을 때

 

 

  • Ray(반직선)의 생성 조건

선이 무한대에서 한쪽으로만 뻗어나가 0으로 고정시키게 되는 경우

  • Segment(선분)의 생성 조건

 

선이 0~1 사이가 되는 경우

+ Recent posts