PDA

Tam Sürümünü Görmek İçin : C++ 'da Açı ile Çizgi çizmek


TaHa
24/11/2006, 17:16
merhaba,
Turbo C++ kullanıyorum. Graphic modda line fonksiyonunu kullanarak, çizgi çizebiliyorum. Fakat line fonksiyonunda başlangıç noktası x,y 'nı ve son noktanın x,y ını verip çiziyoruz. Benim istediğim başlangıç noktasını bildiğim, açısını ve uzunluğunu bildiğim bir çizgiyi çizdirmek.
Bunun için hazır bir fonksiyon varmı? Yoksa Algoritması nedir? Nasıl yapabilirim?


Revne
24/11/2006, 18:05
Eger Uzunlugu,Aciyı ve baslangic noktasını(X1,Y1) biliyorsan bitiş noktasını(X2,Y2) kolayca bulabilirsin...

Dikkenar1= Uzunluk* Cos(aci)= DX
Dikkenar2= Uzunluk* Sin(aci)= DY
DX= X2-X1 buradan X1 ve DX i biliyoruz.. X2 bulabiliriz...
DY= Y2-Y1 buradan Y1 ve DY i biliyoruz.. Y2 bulabiliriz...

TaHa
24/11/2006, 19:03
Çok teşekkür ediyorum Revne fakat açılarda bir proble var gibi. Yazdığım kod aşağıda:

int x1,y1,x2,y2,uzunluk,aci,DX,DY;
x1=200;
y1=200;
uzunluk=100;
aci=30;

DX= uzunluk * cos(aci);
DY= uzunluk * sin(aci);
x2=DX+x1;
y2=DY+y1;
setcolor(15));
line(x1, y1, x2, y2);

çizgi 30 derece olarak görünmüyor.

TaHa
24/11/2006, 20:44
açıyı radyan olarak yazmak gerekiyormus..
yazdığım fonksiyonu burayada yazımki ihtiyacı olan kullansın:

void aline(int x1,int y1,float aci,int uzunluk,int color)
{
int DX,DY,x2,y2;
aci=360-aci;
aci=aci/180.0*3.1415926;

DX= uzunluk * cos(aci);
DY= uzunluk * sin(aci);
x2=DX+x1;
y2=DY+y1;

setcolor(color);
line(x1, y1, x2, y2);

}

Revne
25/11/2006, 02:52
void aline(int x1,int y1,float aci,int uzunluk,int color)
{
int DX,DY,x2,y2;
aci=360-aci;
aci=aci/180.0*3.1415926;

DX= uzunluk * cos(aci);
DY= uzunluk * sin(aci);
x2=DX+x1;
y2=DY+y1;

setcolor(color);
line(x1, y1, x2, y2);

}

void aline(int x1,int y1,float aci,int uzunluk,int color)
{
int DX,DY,x2,y2;
//aci=360-aci; yerine
aci=aci%360;
aci=aci/180.0*3.1415926;

DX= uzunluk * cos(aci);
DY= uzunluk * sin(aci);
x2=DX+x1;
y2=DY+y1;

setcolor(color);
line(x1, y1, x2, y2);
}

Simdi dusundum de eger (X1,Y1) , Egim ve Uzunlugu biliyorsak iki tane (X2,Y2) degerine ulasırız...
Neden dersen...
DX= X1-X2 oldugu gibi DX=X2-X1 de olabilir... Aynı sey Y degerleri icinde gecerli...