計算機圖形學中用 C++ 編寫的點裁剪演算法


計算機圖形學處理在計算機螢幕上繪製圖像和圖形。這裡我們將螢幕視為一個二維座標系。該座標系從左上角(0,0)開始,在右下角結束。

視平面是在計算機圖形學中定義的繪圖區域。或螢幕的可見區域。

裁剪是刪除視平面之外的那些點或圖形。

讓我們舉一個例子來理解裁剪。

這裡點 C 和 D 將被裁剪,因為它們位於用藍色標記的視平面外部。

為了裁剪計算機圖形中的一個點。我們需要知道視平面的座標,即 (Xmin, Ymin) 和 (Xmax, Ymax)。然後我們將該點的座標與這些座標進行比較。

如果 (Xmin, Ymin) <= (Xpoint, Y point) <= (Xmax, Ymax),則該點位於視平面內,否則將被裁剪掉。

示例

演示點裁剪的程式。

 線上演示

#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)

更新於: 17-4-2020

651 次瀏覽

開啟你的 職業生涯

完成課程獲得認證

開始
廣告