Plazma sayı 4, sayfa 50

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 50

Şekil 5. Uzatılmış resim

Bu şekilde resmi uzatabiliriz. Şimdi Bresenham formülünü biraz daha basitleştirerek inceleyelim;

delta0 : Orijinal resmin yüksekliği (y20-y10 farkı)

deltaU : Uzatılmış resmin yüksekliği (y2-y1 farkı)

-— y20-ylo deltaU -— y2u-ylu p - 0 for i from 1 to a (deltao / deltaU) * (i-1) if int(a) <> p then print "x" p intla) else ptint Vo"

deltaO = 5 ve deltaU = 11 olduğuna göre adım değerini saydırarak genişletilmiş resmin hangi satırının orijinal resmin hangi satırına denk geleceği değerlerini elde edebiliriz. Ancak bunun için çarpma ve bölme işlemleri yapmak gerekiyor ki Commodore 64 için hiç de ideal bir yöntem değil bu. Çarpma işleminden kurtulalım;

y20-ylo deltaU - y2u-ylu adim deltaO / deltaU

a 0 for i from 1 to

a a *t adim if int(a) <> p then print "xXx" p else print "o"

Ancak hala bir problem var. "adım" değerini elde edebilmek için ondalıklı sayılarla çalışabilmemiz gerekiyor. Bizim yapmamız gereken tam sayılarla çalışabilecek bir formül bulmak. Neyse ki matematikçiler bunun da bir çözümünü bulmuşlar. Yine pseudocode yazacak olursak;

deltaO y20-ylo deltaU - y2u-ylu a — 0 for i from 1 to a a * delta0o if a >— deltaU then a a - deltaU : print "Xx" else print "ot

Dikkat ederseniz yazdığımız bu son pseudocode yalnızca toplama, çıkarma işlemleri ve koşullardan ibaret. Verdiği sonuç ise önceliklerle aynı. Bu durumda hadi bu formülün nasıl bir çıktı verdiğini test edelim. Bunun için istediğiniz dili kullanmakta serbestsiniz. Ben yine en pratik bulduğum Javascript dilini kullanacağım. Bu örnekte deltaO değerini spriteların yüksekliği olan 21 ve deltaU değerini örnek olarak 70 veriyorum. Yani 21 pixel yüksekliğindeki sprite 70 pixele uzatılsaydı her bir satır kaçar kez tekrar edecekti, bu script bize bunun sonucunu verecek.

lineer interpolasyon1.htm

<script> deltaO - 21; deltaU - 70; 0; for(i 0; i < deltaU;

1 a deltaO; ifl(a >— deltaU) a -—-- deltaU; document.write("X"); ) else document.write("o");

) </seript>

Bu programın çıktısı şu şekilde olacaktır.

Buradaki her X bir alt satıra geçilecek yeri ifade etmektedir. Yani bu çıktıya göre sırasıyla satırlar 4,3,3,4,3,3,4,3,3,4... kez tekrar edecektir. Başlangıçtan itibaren inceleyecek olursak 3 adet o ve ardından bir X gelmiş. Yani ilk satır 4 kez tekrar edecek. Ancak X'den sonraki satır artık orijinal resmin 2. satırı olacak anlamına geliyor.

Şimdi 21'den 200'e kadar elde etmek istediğimiz 180 tablo değerini hesaplayalım.

Klavyeyle gezinmek için ← ve → tuşları.