PDA

Tam Sürümünü Görmek İçin : graphics.h ile ilgili yardım lütfen


nepjua
30/05/2008, 02:15
Arkadaşlar bi ödev yapmam lazım, ve bir cubugun cember etrafında düzgün dönmesini saglayabilirsem ödevin gerisiin de haledicem insallah, cok arastırdım ugrastım söyle bir kod yazdım


#include <graphics.h>
#include <conio.h>
#include <dos.h>
#include <math.h>
#define eklem circle(320,240,10);
#define pause while(!kbhit())

struct bacak
{
int x;
int y;
}
alt[1999],ust[799];
void bacakdeger1();
void bacakdeger2();


main()
{
int gdrv = DETECT, gmod;
int g1,g2,i;
double a,c,t;

t=5; //aci->derece
c=t*M_PI/180; //hareket miktari (aci->radyan)
a=0; //baslangic'tan yapilan toplam aci
i=0;

initgraph(&gdrv, &gmod, "C:\\TC\\BGI");


bacakdeger1();
pause //bir tusa basilana kadar
{
cleardevice();
eklem
for(i=0;i<=1999;i++)
{
g1=ceil(alt[i].x*cos(c)-alt[i].y*sin(c));
g2=ceil(alt[i].x*sin(c)+alt[i].y*cos(c));
alt[i].x=g1;
alt[i].y=g2;
putpixel(alt[i].x+320,240-alt[i].y,10);
}
a+=t;
delay(100);
}
getch();
closegraph();
return 0;
}


void bacakdeger1()
{
int x;
int y;
int i=0;
for(x=0-10;x<=10;x++)
{
for(y=0-80;y<=0;y++,i++)
{
alt[i].x=x;
alt[i].y=y;
}
}
}

neden ilk bastaki gibi durmuyo noktalar düzgün dönmüyolar dagılıyolar, bunu saglamak icin ne yapmalıyım daha farklı bi fonksiyon mu kullanmalıyım, yardım ederseniz cok sevinirim, sevgilerle...


acehreli
30/05/2008, 19:09
Hemen gorebildiklerim ve onerilerim:

1) Dizi elemanlarina erisme konusunu tekrarlamani oneririm: dizi[N] gibi bir dizide N tane eleman vardir ve bunlara [0,N-1] degerleri ile erisilir. Bu konuda yanlisin var.

2) eklem ve pause makrolari hicbir calisma ortaminda kabul edilmez. Zaten sen de yakinda gucluklerini gorup birakabilirsin. :)

3) Programini calistirmadim ama "dagiliyor" dedigine bakarak sin ve cos'lu islemlerde hata oldugunu tahmin ediyorum.

Ali

nepjua
30/05/2008, 19:42
1998'e kadar yazmam gerekiyo yani, ya da i'yi 1'den baslatıp i-1 diyerek erismem gerekiyo galiba, hatırlattıgın icin sagol, peki eklem ve pause gibi makroları da kullanmıycagım bi daha, ilgilendiğin icin tesekkürler...

acehreli
30/05/2008, 20:19
Dizilerin uzunluklari aslinda 2000 ve 800 olmayacak mi?

bacak alt[2000];
bacak ust[800];

Sonra i'yi 0'dan 1999'a ve 799'a kadar ilerletirsin:


for (i = 0; i < 2000; ++i)


Ali

nepjua
31/05/2008, 00:17
haa ben dizileri eksik biliomusum o zmn :) yani alt[2000] diye tanımlayınca son elemanımız alt[1999] oluyo degil mi? tamam o zaman anladım :)