Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

อัลกอริทึมการตัดจุดในคอมพิวเตอร์กราฟิกใน C ++


คอมพิวเตอร์กราฟิกเกี่ยวข้องกับการวาดภาพและกราฟิกบนหน้าจอคอมพิวเตอร์ ที่นี่ เราถือว่าหน้าจอเป็นระบบพิกัด 2 มิติ ระบบพิกัดนี้เริ่มจากซ้ายบน (0,0) และสิ้นสุดที่ด้านล่างขวา

กำลังดูเครื่องบิน เป็นพื้นที่ที่กำหนดไว้สำหรับการวาดภาพกราฟิกในคอมพิวเตอร์กราฟิก หรือบริเวณที่มองเห็นได้ของหน้าจอ

การตัดทอนกำลังลบจุดหรือกราฟิกเหล่านั้นที่อยู่นอกระนาบการดู

มาดูตัวอย่างเพื่อทำความเข้าใจการตัดต่อ

อัลกอริทึมการตัดจุดในคอมพิวเตอร์กราฟิกใน C ++

จุด C และ D จะถูกตัดเมื่ออยู่นอกระนาบการดูที่มีเครื่องหมายสีน้ำเงิน

เพื่อที่จะตัดจุดในคอมพิวเตอร์กราฟิก เราต้องรู้พิกัดของสถานที่ดู คือ (Xนาที , Yนาที ) และ (Xmax, Ymax) จากนั้นเราจะเปรียบเทียบพิกัดของจุดกับพิกัดเหล่านี้

ถ้า (Xนาที , 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)