Saya telah bekerja di perpustakaan grafis untuk beberapa waktu sekarang dan telah sampai pada titik di mana saya harus menggambar Bezier dan font berbasis garis. Sampai titik ini saya terjebak dengan ini:
Garis hijau adalah jalur Bezier, dan bagian putih adalah apa yang diberikan.
Kode yang saya gunakan untuk Beziers ada di sini . Satu untuk baris ada di sini . Bagi mereka yang tidak tahu itu adalah Lua.
Path rendering (lines): 32 - 39 Algoritme adalah sebagai berikut:
- Iterasi dari 0 ke 1 pada interval tertentu
- menghitung x dan y dengan rumus ini:
(1-index)^2*x1+2*(1-index)*index*x2+index^2*x3
Hingga saat ini semuanya bekerja dengan baik. Garis hijau dihasilkan menggunakan metode jalur.
Bagian putih diterjemahkan dengan cara yang sama sekali berbeda:
- Saya mendapatkan koordinat x dari Beziers dan garis pada Y tertentu, menempatkannya ke dalam tabel.
- Saya beralih melalui tabel dan setiap kali saya menemukan titik saya mengubah nilai negara. Di dalam yang sama untuk loop juga memeriksa apakah keadaan aktif. Jika ya, saya menggambar pixel ke layar.
Untuk menemukan nilai x dari ay, saya menggunakan metode getX (baris 46 di Bezier dan baris 31 di Line).
Kode yang saya gunakan untuk menggambar itu sendiri adalah ini:
local xBuffer = {}
local state = false
for i=0,500 do
for k,v in pairs(beziers) do
a,b = v.getX(i)
if a then
xBuffer[round(a)] = 1
if b then
xBuffer[round(a)] = 1
end
end
end
for k,v in pairs(lines) do
a = v.getX(i)
if a then
xBuffer[round(a)] = 1
end
end
state = false
for x=0,600 do
if xBuffer[x] then
state = not state
end
if state then
love.graphics.points(x,i)
end
end
end
Penjelasan cepat: untuk i, v berpasangan beralih melalui tabel yang diberikan sebagai argumen untuk berpasangan. love.graphics.points (x, y) menetapkan titik pada x, y.
Terima kasih sebelumnya.