Tam Sürümünü Görmek İçin : C++ 'da Açı ile Çizgi çizmek
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?
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...
Ç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.
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);
}
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...
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.