Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Thuật toán cắt điểm (Point Clipping) trong Đồ họa máy tính C++


Đồ họa máy tính xử lý việc vẽ hình ảnh và đồ họa trên màn hình máy tính. Ở đây, ta coi màn hình như một hệ tọa độ 2-D. Hệ tọa độ này bắt đầu từ góc trên bên trái (0,0) và kết thúc ở góc dưới bên phải.

Mặt phẳng quan sát (Viewing plane) là khu vực được xác định để vẽ đồ họa trong đồ họa máy tính. Hay là khu vực hiển thị của màn hình.

Cắt (Clipping) là việc xóa các điểm hoặc đồ họa nằm ngoài mặt phẳng quan sát.

Ví dụ minh họa cắt:

Thuật toán cắt điểm (Point Clipping) trong Đồ họa máy tính C++

Ở đây, điểm C và D sẽ bị cắt vì chúng nằm ngoài mặt phẳng quan sát được đánh dấu màu xanh.

Để cắt một điểm trong đồ họa máy tính, ta cần biết tọa độ của mặt phẳng quan sát: (Xmin, Ymin) và (Xmax, Ymax). Sau đó so sánh tọa độ điểm với các tọa độ này.

Nếu (Xmin, Ymin) ≤ (Xpoint, Ypoint) ≤ (Xmax, Ymax), thì điểm nằm trong mặt phẳng quan sát, ngược lại sẽ bị cắt bỏ.

Chương trình minh họa

#include <iostream> 
using namespace std; 

void pointClipping(int points[][2], int n, int Xmin, int Ymin, int Xmax, int Ymax) { 
    cout << "Các điểm bị loại bỏ bởi thuật toán Point Clipping là:\n"; 
    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; 
}

Kết quả

Các điểm bị loại bỏ bởi thuật toán Point Clipping là: (-10,10) (1000,1000) (100,900) (501,311)