Sinüs Eğrisi çizimi

Başlatan Mucit23, 18 Haziran 2012, 13:45:07

Mucit23

Arkadaşlar Grafik LCD de Sinüs eğrisi çizmeye çalışıyorum. Genliği Ve Periyodu bir türlü belirleyemedim. Normalde aşağıdaki gibi bir kod ile 360 derecelik bir sinüs çizilmesi gerekir.

For Xpos=0 To 360
  AX=(Pi * Xpos)/180
  Ypos=32+Sin AX
  Plot Ypos,Xpos
  DelayMS 10
Next


Aslında çiziliyor. Ama peryodu çok uzun olduğu için ekrana sığmıyor. Genliğide çok düşük.

Yukarıda Genliği ve peryodu etkileyen faktörler nelerdir.

GreeN

Çalıştığın  LCD'de  {0,0} koordinatları sol üst köşe.  (sizdeki sol alt köşede gibi) Buna dikkat ettikten sonra derleyisiciniz de şöyle bir deneme yapın ,
sin 30                 satırımı 0.5 değerini veriyor yoksa
sin (30*PI/180)  satırımı 0.5 değerini veriyor ?

sanırım ne demek istediğimi anladınız.

Terörü Lanetliyoruz.

Mucit23

Hocam Protonda yazıyorum
Protonda sin  ve cos fonksiyonları radyan cinsinden değer kabul ediyor. Yani 0.5 için açıyı radyana çevirmek gerekiyor.
sin (30*PI/180) fonksiyonunu yazdığımda 0.49998664 çıktı. Sebebi galiba Pi sayısına virgülden sonra sadece 4 hane yazmamdan kaynaklı olsa gerek. 0.5 sayılır

GreeN

#3
32+ 30*sin(a*pi*x/180)

şeklinde dene , a değerini uygun şekli elde edebilecek bir değer seç.

Mesela a=3 seçersen x = 120 'de sinüs bir alternans tamamlamış olur.
Terörü Lanetliyoruz.

Mucit23

Teşekkür ederim. Verdiğiniz gibi yapınca çalıştı.
Şunu yapamadım yanlız.
Diyelimki ben sadece 360 derecelik bir sinüs oluşturmak istiyorum. Bunu nasıl yaparım. Döngü sayısını arttırmak sadece çıkan sinüs sayısını arttırıyor.

For Xpos=0 To 90
  AX=(Pi*Xpos/180)
  AY=32+10*Sin AX*20
Plot AY,Xpos
Next


En son bu şekilde düzgün bir sinüs aldım. Ama dediğim gibi yapmak istediğim benim belirlediğim başlangıç noktasından itibaren pozitif sinyaller alıp 60 dereceyi tamamlaması. Aynı zamanda ben 360 değilde 90 derece dediğim zaman sadece yarım bir saykıl çizmesini istiyorum. Bunu döngü sayısıyla nasıl ayarlarım

GreeN

For Xpos=0 To 90
  AX=(Pi*Xpos/180)
  AY=32+10*Sin AX*20
Plot AY,Xpos
Next



bu haliyle ;

x=4.5 iken açı 90 derecede
x=9 iken açı 180 derece
x=18 iken 360 derece oluyor.

yani ACI=x/9*PI oluyor. 

AY=32+10*Sin AX*20  -------- 20 çarpanı yüksek bence.
Terörü Lanetliyoruz.

Mucit23

Sanırım birazdaha üzerinde çalışmam gerekiyor. Biraz karıştırdım işleri.
Dediğiniz gibi 20 değeri çok fazla. O değeri 10'a düşürdüm.

Sizde neden farklı anlamadım ama bende döngü sayısını 9 yapınca 90 dereceye çıkıyor

For Xpos=0 To 9
  AX=(Pi*Xpos/180)
  AY=32+10*Sin AX*10
Plot AY,Xpos
Next

Birde şunu belirteyim. Ks0108 lcd var. Ekranın 0,0 noktası solt üst köşe, 63,127 Noktası ise Sağ alt köşe

Her nedense yukarıdaki kodlar işletildiğinde ilk başta negatif değerler almaya başlıyor sinüs eğrisi.

Toparlarsak  eğer Peryodu değiştirmek için Sin Ax değerinin başına 10* ifadesini eklemek gerekiyor. Genliği değiştirmek için ise AX değerini 10 ile çarpmam gerekiyor. Buralarda sıkıntı yok. Şuanda yapmaya çalıştıklarım şunlar. Buradaki 10 değerleri örnektir.

* Açı değerinin 0 ile 360 arasında olması sağlamak. Tam bir sinüs için 360 döngü olması gerekiyor
* Peryodu ve genliği arttırdıkça sinüs eğrisi seyrekleşiyor. Bunuda önlemem lazım.
* Sinüs ilk başta negatif değer almaya başlıyor. Bunu tam tersi hale getirmem lazım.

Bu yukarıdaki 3 problemi çözersem çok iyi olacak.

Önerebileceğin bir yöntem varmı?

GreeN

#7
[IMG]http://i1114.photobucket.com/albums/k538/lordex06/Glcd.jpg[/img]



Resimdeki ifadeyi bir dener misin. ifadeyi birde 32- ....  şeklinde dene ...

Edit:32-10*sin(45/16*PI*x/180) Ekrana cup oturması lazım :)
Terörü Lanetliyoruz.

Mucit23

Hocam tamam herhalde.

Pozitif alternans işi tamam. Onda bir sıkıntı yok.
Artık dediğiniz gibi 9 döngü 0-180 derece için, 18 döngü 360 derece için yeterli oluyor.

En son bu şekilde yaptım.

For Xpos=0 To 18
  AZ=(45/16)   
  AX=(Pi*Xpos/180)
  AX=AX*AZ
  Ypos=32-10*Sin AX*10
Plot Ypos,Xpos
Next

Her nedense Yukarıda 3 adet ayrı işlemi tek bir işlemde toplayamıyorum. Proton buna müsade etmiyor. C de durum nasıl bilmiyorum.

Bu şekilde yaptım ama bu sefer genlik ve peryot olayı birbirine girdi. Anlamadım bir türlü. :S

GreeN

For Xpos=0 To 127
  AZ=(45/16)   
  AX=(Pi*Xpos/180)
  AX=AX*AZ
  Ypos=32-10*Sin AX
Plot Ypos,Xpos
Next

bu şekilde denedinizmi ?  Aynen kopyalayın ...
Terörü Lanetliyoruz.


Mucit23

Tamamdır. Şimdi düzene bindi.