Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.

Kullanıcı adınızı, parolanızı ve aktif kalma süresini giriniz

  Gelişmiş Arama
insanın içinde varsa, commodore.gen.tr açığa çıkarır bunu.. bir nevi retro olaylarının dolunayıyız.(Arda)
Sayfa: [1]   Aşağı git
Yazdır
Gönderen Konu: PLOT 110,50 : DRAW 80,100,PI*701 -- ZX SPECTRUM!  (Okunma Sayısı 3551 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
мemrah
Uzman
*****
Mesaj Sayısı: 1.363



Üyelik Bilgileri
« : Haziran 12, 2007, 19:17:42 ÖS »

Bu gune kadar hala su tek satirlik programin da neden o yaptigi seyi yaptigini anlayamadim. Tum Sinclair Basic davranislari, komutlari ve hatta Sinclair'lerin PRINT 10-100*0.1 'e verdigi  yanlis cevabi bile neden verdigini anliyorum da su alttaki program neden o sekli cizer bilen var mi?
Bu programin ne yaptigini bilmiyor ve Sinclair Basic biliyorsaniz denemeden once sizce ne olacak bir tahmin edin. Iddia ediyorum dusundugunuzden farkli olacak!   Kahkaha

10 PLOT 110,50 : DRAW 80,100,PI*701
« Son Düzenleme: Haziran 13, 2007, 01:26:01 ÖÖ Gönderen: memrah » Logged
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #1 : Haziran 13, 2007, 12:35:13 ÖS »

Çok kolay, draw komutu sadece düz çizgiler çizmiyor, dilerseniz bir çemberin bir parçasını çizdirebiliyorsunuz. Bu durumda üç parametre alıyor
x,y,r

x,y çizginin biteceği nokta oluyor. (Plot ile başlangıç noktasını belirliyoruz)

r parametresi açıyı belirliyor ve Radyan cinsinden veriliyor. Örneğin PI yarım daire çizer. Trigonometri ve radyan hakkında bilgi alırsanız işin mantığını çözebilirsiniz.

işin rastgele olmadığını görmek için şu kodu deneyin:

10 PLOT 110,50 : DRAW 80,100,PI
20 PLOT 110,50 : DRAW 80,100,PI*701

gördüğünüz gibi çemberin büyüklüğü değişmiyor, sadece çizgiye 701 tur attırmış oluyorsunuz. Fakat draw'ın çizeceği nokta sayısı 701'den az olduğu için (110,50->80,100) çizginin detayı ona göre düşüyor, yumuşak bir daire oluşacağına 5 köşeli bir daire, yani yıldız şekli çıkıyor.

Neden her rakamda (örneğin 700) benzer sonuç alamıyoruz dersek, dediğim gibi 2PI tam daire açısı demek ve bu durumda açı başladığı noktaya döner. Bu düz bir çizgi çıkarmak için default kullanılan değer, onun için her çift sayı kullandığınızda draw düz çizgi çizer.

Çember çizmek için çarpanı tek sayı kullanmalısınız. Örnek:
10 PLOT 110,50: DRAW 80,100,PI*3

3 yarım daire çizilir. Yeterli iterasyon (düz çizgi çizmek için normalde kullanılacak pixel sayısı) olduğu için yumuşak "bir buçuk" daire gözüküyor. 701 yaptığınızda 350 daire çizdiriyorsunuz.

Anlatırken daha fazla karıştırdım mı bilmiyorum ama kabaca durum budur.
Logged

мemrah
Uzman
*****
Mesaj Sayısı: 1.363



Üyelik Bilgileri
« Yanıtla #2 : Haziran 13, 2007, 19:12:29 ÖS »

Fazla trigonometri bilgim olmamasina ragmen liseden hatirladiklarim ve mantik icabi ornedgin DRAW 100,80,PI nin yarim daire cizmesi, DRAW 100,80,PI*2 nin tam daire cizmesi gerekirse, DRAW 100,80,pi*701'in 701/2 adet ayni cemberi uzerinde plot yapmasi gerekmez mi? Bu yildiz sekli ve 30 derecelik acili cizgileri cozemedim. 
Logged
Arda
Uzman
*****
Mesaj Sayısı: 2.326


I'm *the* guy from Argleton


Üyelik Bilgileri WWW
« Yanıtla #3 : Haziran 13, 2007, 22:37:44 ÖS »

Şimdi şöyle düşünelim,
diyelim ki düz bir çizgi çizicez,
100,100'den 100,110'a. yani 10 pixel boyunda bir çizgi çizmemiz gerekiyor.

Draw komutuna PI parametresini eklersen, ancak 10 köşeli bir eğri sahibi olabilirsin. Eğer PI*701 eklersen, draw 350 daire üst üste çizmek zorunda olduğunu farkeder, fakat bu daireleri çizmek için elinde sadece 10 hesap adımı vardır. Bu durumda elbette köşeli çıkacak daireler.. ozamanda yıldız benzeri şekiller çıkar.
Logged

Sayfa: [1]   Yukarı git
Yazdır
Gitmek istediğiniz yer: