Saya memiliki beberapa objek Spline2D dalam kode saya, yang masing-masing memiliki metode Posisi, Kecepatan, dan Akselerasi yang mengembalikan vektor dari kuantitas yang ditentukan pada waktu tertentu. Saya telah menggunakan vektor-vektor ini untuk membangun geometri untuk membuat goresan gradien untuk kurva, tapi saya mengalami masalah dengan persimpangan-diri pada kurva yang curam. Sebagai contoh, inilah satu kurva di mana saya mengalami hal ini:
Wireframe: http://twitpic.com/2zplw1/full
Diisi: http://twitpic.com/2zpmnt/full
Seperti yang Anda lihat, pada tikungan kedua, bagian dalam berpotongan dengan sendirinya, yang menyebabkan artefak jelek itu. Apakah ada algoritma / metode yang baik untuk kurva belokan tanpa menyebabkan persimpangan-sendiri?
Sunting : Contoh yang lebih ekstrem, ditambah mock-up dari apa yang ingin saya capai:
Wireframe: http://twitpic.com/2ztwzi/full
Diisi: http://twitpic.com/2ztwkt/full
Hasil Ideal (Mock-Up): http://twitpic.com/2ztxa8/full
Jawaban:
Jika Anda merendernya dengan GPU dan api 3D modern apa pun (mis. OpenGL / D3D), bagi saya sepertinya Anda dapat menyingkirkan ini dengan pengujian mendalam. Jika Anda menetapkan verts luar Anda menjadi z = FAR, dan verts dalam Anda menjadi z = DEKAT, pengujian mendalam harus mencegah tumpang tindih dari ditampilkan. Dengan OpenGL:
Caveat emptor: ini tidak akan berfungsi jika Anda membutuhkan goresan tembus cahaya.
sumber
"Perbaikan" akan tergantung pada apa yang Anda inginkan terlihat seperti hasilnya. Masalahnya belum didefinisikan dengan cukup baik di sini: seperti apa bentuknya?
Saya sarankan Anda pertama kali mencoba membuat contoh kesalahan yang lebih ekstrem, kemudian menggunakan photoshop / cat untuk memperbaikinya Anda mungkin menemukan inspirasi untuk solusi.
Apakah Anda ingin melipat? Tumpang tindih dengan ujungnya? Tarik sampai tidak tumpang tindih?
sumber