Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 컴퓨터 그래픽스의 포인트 클리핑 알고리즘


컴퓨터 그래픽은 컴퓨터 화면에 이미지와 그래픽을 그리는 작업을 다룹니다. 여기에서 우리는 화면을 2차원 좌표계로 취급합니다. 이 좌표계는 왼쪽 상단(0,0)에서 시작하여 오른쪽 하단에서 끝납니다.

비행기 보기 컴퓨터 그래픽에서 그래픽을 그리기 위해 정의된 영역입니다. 또는 화면의 가시 영역.

클리핑은 보기 평면 외부에 있는 점이나 그래픽을 삭제하는 것입니다.

클리핑을 이해하기 위해 예를 들어 보겠습니다.

C++에서 컴퓨터 그래픽스의 포인트 클리핑 알고리즘

여기서 점 C와 D는 파란색으로 표시된 보기 평면 외부에 있으므로 잘립니다.

컴퓨터 그래픽에서 한 점을 자르기 위해. 우리는 관찰 장소의 좌표를 알아야 합니다. 즉 (Xmin , Y ) 및 (Xmax, Ymax). 그런 다음 이 좌표와 점의 좌표를 비교합니다.

만약 (Xmin , Y ) <=(X포인트, Y포인트) <=(X최대 , Y최대 ), 포인트는 보기 평면 내부에 있습니다. 그렇지 않으면 잘립니다.

예시

포인트 클리핑을 설명하는 프로그램,

#include <iostream>
using namespace std;
void pointClipping(int points[][2], int n, int Xmin, int Ymin, int Xmax, int Ymax) {
   cout<<"Points that are removed by Point clipping Algorithm are :"<<endl;
   for (int i = 0; i < n; i++){
      if ((points[i][0] < Xmin) || (points[i][0] > Xmax))
         cout<<"("<<points[i][0]<<","<<points[i][1]<<")\t";
      else if ((points[i][1] < Ymin) || (points[i][1] > Ymax))
         cout<<"("<<points[i][0]<<","<<points[i][1]<<")\t";
   }
}
int main() {
   int points[6][2] = {{0, 0}, {-10, 10}, {1000, 1000}, {100, 900}, {501, 311}, {250, 250}};
   int Xmin = 0;
   int Xmax = 500;
   int Ymin = 0;
   int Ymax = 500;
   pointClipping(points, 6, Xmin, Ymin, Xmax, Ymax);
   return 0;
}

출력

Points that are removed by Point clipping Algorithm are :
(-10,10) (1000,1000) (100,900) (501,311)