C++ ile DOS Ekranına Çember Çizdirmek

Batuhan Düzgün tarafından yayınlanmıştır 13. October 2010 10:05

Merhaba arkadaşlar bu yazımda sizlere DOS ekranında çember nasıl çizdirilir,bundan bahsedeceğim.Öncelikle yapacağımız uygulama DOS tabanlı olacak.Belirtmekte fayda var.Şimdi de bu işin mantıksal tasarımını yapalım.Aşağıdaki kısımda çember çizdirme ile ilgili çıkardığım algoritma yer almaktadır.
 
DOS'a Çember Çizdirmek ?
 
DOS ekranı sol üstten (0,0) kordinatlarından başlar aşağı doğru artarak gider.Aşağıdaki şekilde gösterilmiştir. 
 
Çemberimizin yarıçapı "R" ile temsil edelim.O halde bir döngü içinde açıyı küçük artışlarla çevirdiğimizde belli noktalar elde ederiz.İlk iş olarak "PI"  180'e bölerek açı haline getiriyoruz.Ardından bu açının "sin" ve "cos" değerlerini buluyoruz.Bu işlemden sonra ise "R * (sin(alfa))" diyoruz.Böylece aşağıdaki şekilde gösterilen parçanın uzunluğunu buluyoruz.
 
 
 
 
Ardından "R*cos(alfa)" diyerek bu sefer yataydaki merkezden olan uzaklığı buluyoruz.Aşağıdaki resimde görüldüğü gibi.

 
Şimdi de bulduğumuz değerleri yarıçap uzunluğundan çıkarıp DOS ekran üzerindeki gerçek noktayı tespit edelim.Aşağıdaki resimde görüldüğü gibi:
 
 
 
Yukarıdaki resimde mavi kenarlar bize DOS ekranında çemberi oluşturmamız için gereken kordinatı verir.Mavi çubukları elde edebilmek için kırmızı çizgi uzunluklarını "R"  değerinden çıkarırsak elde edebiliriz.
 
Şimdi algoritmamız belli oldu.İlk önce "sin" ve "cos" değerlerini uygun açı için buluyoruz.Ardından  bu değer ile "R" değerini çarpıyoruz.Ve kırmızı çizgileri elde ediyoruz.Daha sonra kırmızı çizgileri "R" değerlerinden çıkarıp DOS ekranına koyacağımız noktayı buluyoruz.Bütün bu adımları bir döngü içinde  360 derece boyunca yapıyoruz.Şimdi de C++ kodlarımızı yazalım.
 
Aşağıda C++ kodları verilmiştir.
 
Kodlar ... 
 

#include<stdio.h>

#include<conio.h>

#include<math.h> //sin ve cos gibi değerlihesaplamak için geçerlidir.

#include<windows.h> //dos ekranına istediğimiz noktayabir karakter çizdirmek için gereklidir.

 

#define PI3.14159265  //defineile PI değişkenini 3.14159265 değerine sabitliyoruz.

 

void gotoxy(float x,float y)

{

     COORD kordinat; //dosekranında imleci gelen x ve y değerlerinin gösterdiği yere konumlandırmayayarar.

     kordinat.X=x; //xdeğeri girilir.

     kordinat.Y=y; //ydeğeri girilir.

 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),kordinat);

 //yukarıdakimetod (fonksiyon) ile ekrana imleci sabitliyoruz.

}

//voidgotoxy(float,float);

int main()

{

    float i;

    floatbt1,bt2;

    floatx1,y1,x2,y2;

    floatr=12.645598;

   

      //for döngüsünde açıyı 0.01 değerikadar arttırıyoruz.Böyle daha yuvarlak gözüken bir çember elde ederiz.

    for(i=0;i<=360; i=i+0.01)

    {

       bt1=sin(i*PI/180);// sin alfa değerini buluyoruz

       bt2=cos(i*PI/180);//cos alfa değerini buluyoruz

       x1=r-r*bt1;  // ardından DOSekranında koyacağımız değeri buluyoruz.

       y1=r-r*bt2;  // ardından DOSekranında koyacağımız değeri buluyoruz.

      

       gotoxy(x1,y1);//metodaparametre olarak veriyoruz.

       printf("*");//yazacağımız karakteri koyuyoruz.

    }

   

    getch();

    return 0;

}
 
Sonuç olarak projeyi derleyelim.
 
 
 
Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği 

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Qt ve C++

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  November 2018  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

Yazıları geniş takvimde göster