- Buat buffer dengan ukuran yang sama seperti layar (atau permukaan di mana bentuk Anda). Pada setiap posisi mengandung boolean apakah ada sprite; kemudian, periksa semua "piksel" bentuk pengguna apakah pada posisi mereka adalah sprite (dengan memeriksa nilai boolean itu). Atau, Anda dapat membuat lebih banyak sprite di sana dengan menyimpan ID mereka alih-alih boolean; tetapi ini adalah kasus 1 sprite.
- Jika bentuk yang dibuat pengguna dapat diwakili oleh urutan garis, maka Anda dapat memeriksa apakah setiap garis tersebut melintasi sprite. Karena sprite memiliki bentuk persegi panjang dan bentuk pengguna adalah sebuah garis. Carilah "garis persimpangan persegi panjang" ... (memisahkan algoritma sumbu dengan satu cara untuk melakukannya)
Pendekatan bergantung pada struktur data apa yang Anda pilih, apakah itu bitmap atau vektor.
Pendekatan pertama dapat menangani bentuk kompleks yang arbitrer, mudah diimplementasikan tetapi menggunakan lebih banyak memori. Sebenarnya Anda dapat mengurangi overhead memori dengan menggunakan kompresi dan mempercepatnya dengan menggunakan struktur data hierachical (octrees) ...
Pendekatan kedua, tidak begitu sederhana untuk diimplementasikan tetapi menggunakan lebih banyak kekuatan pemrosesan.
Dalam setiap kasus ukurlah jika itu penting. Saya akan mencoba melakukan yang pertama karena lebih mudah diimplementasikan. Semoga berhasil. :)