- Tạo một bộ đệm có cùng kích thước với màn hình (hoặc bề mặt có hình dạng của Bạn). Tại mỗi vị trí, nó chứa boolean cho dù có sprite; sau đó, kiểm tra tất cả "pixel" hình dạng người dùng xem vị trí của họ có phải là sprite không (bằng cách kiểm tra giá trị của boolean đó). Ngoài ra, bạn có thể tạo thêm các họa tiết ở đó bằng cách lưu trữ ID của chúng thay vì boolean; nhưng đây là trường hợp của 1 sprite.
- Nếu hình dạng do người dùng tạo có thể được biểu diễn bằng chuỗi các dòng, thì Bạn có thể kiểm tra xem mỗi dòng như vậy có vượt qua sprite không. Vì sprite có hình chữ nhật và hình dạng người dùng là một đường chỉ cần tìm "giao tuyến hình chữ nhật đường thẳng" ... (tách thuật toán trục si một cách để làm điều đó)
Phương pháp tiếp cận phụ thuộc vào cấu trúc dữ liệu bạn chọn, cho dù chúng là bitmap hay vectơ.
Cách tiếp cận đầu tiên có thể xử lý các hình dạng phức tạp tùy ý, đơn giản để thực hiện nhưng sử dụng nhiều bộ nhớ hơn. Trên thực tế, bạn có thể giảm chi phí bộ nhớ bằng cách sử dụng nén và tăng tốc độ bằng cách sử dụng các cấu trúc dữ liệu chữ tượng hình (octrees) ...
Cách tiếp cận thứ hai, không đơn giản để thực hiện nhưng sử dụng nhiều sức mạnh xử lý hơn.
Trong mỗi trường hợp đo nếu nó quan trọng. Tôi sẽ cố gắng làm cái đầu tiên vì nó đơn giản hơn để thực hiện. Chúc may mắn. :)