Plazma sayı 3, sayfa 114

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 114

Elbette ki aşağıdaki şekilde.

ys = int(y / 8)

yk = y mod 8

Yani "ys", y / 8 işleminden çıkan sonucun tam sayı kısmı ve "yk" ise 8 ile bölümden kalan yani matematiksel ifadesiyle "mod 8". Peki bu "ys" ve "yk" bize neyi veriyor? Hadi bir tablo yaparak görelim sonucu.

işlem: y/8 y: 0 ys: 0 yk: 0 y: 1 ys: 0 yk: 1 y: 2 ys: 0 yk: 2 y: 7 ys: 0 yk: 7 y: 8 ys: 1 yk: 0 y: 9 ys: 1 yk: 1 y: 10 ys: 1 yk: 2 y: 11 ys: 1 yk: 3 y: 15 ys: 1 yk: 7 y: 16 ys: 2 yk: 0 y: 17 ys: 2 yk: 1 y: 198 ys: 24 yk: 6 y: 199 ys: 24 yk: 7

Hmmm, işte bu tablodaki değerler bir şeyleri ortaya çıkarıyor. Dokümanın en başında verdiğim tabloya bakarsanız ve az önce bahsettiğim gibi 320'de bir y'de 8'lik bir artış olduğunu düşünecek olursak hafızadaki doğru adresi bulmak için "ys" parametresini 320 ile çarpmak ve "yk" ile toplamak gerekiyor. Bu durumda formülümüz;

yi = ys * 320 + yk

Haline dönüşüyor. Buradaki "yi" bize dizinin y koordinatına bağlı indeksini veriyor. Ne yazık ki işimiz bitmedi. Bir de x koordinatımız var. Ama x koordinatında işimiz biraz daha kolay. Tek bir noktayı unutmamak koşuluyla! x koordinatındaki 1 pixellik ilerleme y koordinatında olduğu gibi hafızada 1 byte'lık ilerlemeye denk gelmiyor. 8 pixel aynı byte üzerinde yer alıyor. Yani x = 0 ve x = 7 değerleri aslında bize aynı byte'ı veriyor. Ancak bu byte'da değiştirmemiz gereken bit değerleri değişiyor. Şimdilik yalnızca hafıza adresini bulmaya çalıştığımıza göre x = 0 ve x = 7 bizim için aynı şeyi ifade ediyor. Bu ne demektir? x'i 8'e bölebiliriz. Böylece;

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