计算机图形学中用 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 次浏览

开启你的 职业生涯

完成课程获得认证

开始
广告