Sunting: mengubah jawaban sesuai dengan gambar dan klarifikasi baru.
for every control point p(k, n)
p'(k, n) = ( p(k, n) - p(k) ) * d * l(k) + p(k, n)
di mana k
indeks baris dan n
indeks kolom titik kontrol. l
adalah faktor elevasi dan sama dengan {-1, -1/3, 1/3, 1}. p(k)
adalah pusat dari baris ke-k.
Alasan:
Dari gambar baru, garis merah dan biru diambil dari pusat garis (p (k) yang pada dasarnya (k, 0)) ke titik itu. Pada baris pertama, semua titik kontrol, termasuk yang ada di grafik (garis merah) dipindahkan ke titik yang sama pada garis itu. p (k, n) - p (k) memberikan vektor yang memindahkan titik dari p (k) ke p (k, n) yang sekarang harus diterapkan dengan cara lain, memindahkan titik ke lokasi yang diinginkan. Pada grafik Anda, d = 1 sehingga semua titik garis pertama akan dipindahkan ke tengah. Anda dapat dengan mudah menyelesaikan persamaan untuk memverifikasi ini. d * l(0)
adalah -1, jadi itu -p(k, n) + p(k) + p(k, n)
yang akan memberikan p (k).
Pada baris kedua, garis biru Anda sekali lagi dari titik ke tengah, tetapi kali ini berhenti sebelum mencapainya. Saya tidak tahu apakah benar-benar dipotong dari 1/3 tapi itu akan menjadi titik awal yang baik. Jadi rumus yang sama masih berlaku. l adalah -1/3 d adalah 1, jadi intinya akan dipindahkan 1/3 dari jalan. Angka 3 sama dengan angka kedua tetapi sekarang bergerak ke luar, jadi aku 1/3.
Pada baris terakhir, semua titik kontrol dipindahkan dari titik tengah garis itu. Ini cukup jelas karena garis Anda bertemu di pusat itu.
Satu-satunya masalah rumus ini dapat memiliki asumsi 1/3, selain itu saya tidak melihat alasan mengapa harus gagal.
Catatan: Saya menggunakan baris, kolom saat pengindeksan, jadi jika Anda menggunakan x, y Anda harus berpindah lokasi.