Commodore sayı 13, sayfa 54

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 54

T=Y2-M*X2. Her iki denklem de T'ye eşit olduğuna göre, Y1-M*X1 = Y2-M*X2 diyebiliriz. Ve bu denklemi de M'ye göre çözersek, M=(Y2-Y1) / (X2-X1) elde ederiz. Bu bize doğrumuzun eğimini verir. Sıra geldi T'yi bulmaya. T = Y2-M*X2 olduğuna göre, M'yi yerine oturtarak T = Y2 - (Y2-Y1) / (X2-X1)*X2 de diyebiliriz. Bu T ve M değerlerini Y=MX+T denklemine yerleştirir ve Y'ye göre çözersek aradığımız formülü buluruz: Y = (Y2-Y1)/(X2-X1) * X + Y2 - (Y2-Y1)/(X2-X1) * X2. Tüm çizimimiz bu formüle dayalı. Tek sorun, çizgimiz aşağı doğru olduğu zaman çıkacaktır. O zaman X1 = X2 olacağından, X2-X1'in sonucu sıfır olacaktır. Hiçbir sayı sıfıra bölünemeyeceği için, bilgisayar hata mesajı verip duracaktır. Bunu da bir iki IF ile çözümlüyoruz. Programa bir göz atalım. Önce X ve Y koordinatları en yakın tamsayılara yuvarlanıyor. Sonra da, çizginin tamamen ekran dışında olup olmadığı kontrol ediliyor. Eğer öyleyse geri dönülüyor. Değilse gerekli X ve Y farkları hesaplanıyor. Eğer X1-X2 sıfırsa normal çizgi çizme kısmına atlanıyor. Eğer sıfırsa, çizgimiz bir dik çizgi demektir. Bu durumda önce çizginin ekran içine sığıp sığmadığı kontrol ediliyor ve eğer sığmıyorsa başlangıç ve bitiş koordinatları ekran içinde kalacak şekilde yeniden hesaplanıyor. Ardından da çizgi çiziliyor. Eğer dik çizgi değilse, gene çizginin ekran içine sığıp sığmadığı kontrol ediliyor, sığmıyorsa başlangıç ve bitiş koordinatları ekran içinde kalacak şekilde yeniden hesaplanıyor ve çizgi çiziliyor. Bu arada çizgi çizmek için hep nokta koyma rutini çağrılıyor.

51100-51340 arasındaki çizgi silmenin, çizgi çizmekten hiçbir farkı yok. Sadece nokta koyma yerine nokta silme rutini çağrılıyor. Multicolor'da çizgi çizmek de aynı işlemleri gerektiriyor. Farkı, maksimum X değeri olarak 159'u kabul ediyor ve çok renkli nokta koyma rutinini çağırıyor. Bu altprogramı da, 52800-53040 arasında bulabilirsiniz. (X1, Y1) ve (X2, Y2) koordinatlarının yanısıra RR içinde de 0-3 arası bir sayı ile hangi numaralı rengi kullanacağınızı belirtmelisiniz. Son şeklimiz elips. Neden daire değil de elips? Daire, X ve Y yönündeki yarıçapları eşit olan bir elipstir. Dolayısıyla elips için bir rutin yazdığınızda, otomatik olarak daire çizmeniz de sağlanmış olur. Elips içinde üç altprogramımız var. Elips çizmek, silmek ve multicolor'da elips çizmek için. Elipsin geometrik denklemi şu şekildedir: Y = B*SQR (1-X^2/A^2). Eğer dikkat ederseniz, bir elipsin sağ üst, sağ alt, sol üst ve sol alt parçalarının birbirlerine simetrik olduğunu görürsünüz. Yani biz elipsin sadece bir çeyreğini hesaplayarak tüm elipsi çizebiliriz. Zaten yavaş olan BASIC programı için önemli bir kazanç. 50600-50670 arasında, XR ve YR ile iki doğrultudaki yarıçap uzunlukları belirlenmiş ve (XM, YM) ile merkezinin koordinatı verilmiş elipsi 320*200 ekranında çizen rutini görmektesiniz. Bu rutinde elipsin bir çeyreği hesaplanmakta ve yeni hesaplanan nokta ile eski nokta arasına çizgi çizilerek kapalı bir elips çizilmektedir. Eğer elips tamamen ekrana sığmıyorsa, sığan kısmı çizilecektir. 50700-50770 arasında aynı işlemler elips silmek için yapılıyor. Çizgi çizmek yerine çizgi silmek için kullanılan rutin çağrılmakta. 52600-52670 arası ise multicolor ekranda RR ile belirtilen renkte bir elips çizmekte. Tek farkı, çok renkli çizgi çizme rutinini çağırması. İşte bu kadar. Artık bu rutinleri kullanarak, hatta onları daha iyi bir hale getirerek kendi grafik programlarınızı yaratabilirsiniz. Gene de BASIC'in yavaş kalacağını, makina dilinin veya SIMONS' BASIC'in daha kullanışlı olacağını unutmayın. Gelecek aya kadar hoşçakalın...

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