كيف يمكننى رسم الزوايا بـLINE فى لغة الـC
كيف يمكننى رسم الزوايا بLINE فى لغة الC
مغلق
يوفر هذا عنك جدوال الآسكي..
ففيه رمز للزوايا الاربعة و الخطوط.
يمكنك البحث عنه :)
طلال.
أخي الطريقة اليدوية هي:
-->خذ من المستخدم زاوية.
-->خذ من المستخدم طول الخط.
-------------------------------------
-->حوّل الزاوية من درجة الى راديان..
--> جدّ دلتا X ..
-->جد دلتا Y .
أرسم خط يبدأ من أي نقطة وينتهي عند إحداثيات هذه النقطة مضاف اليها دلتا X ,دلتا Y :
مثلا يبدأ الخط من :100,100 وينتهي عند 100+Dx + 100 , Dy.
---------------------
طبعا تحسب دلتا X ودلتا Y حسب sin & cos...
هذا كود قمت بعمله على عجل, أعذرني اذا كان هناك خطأ...
ركّز على الدالة DrawLine.
#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
int Initialgrph();
void DrawLine(float,float);
main()
{
float angle=0,length=0;
if(Initialgrph()==1) //if there is error In graphic mode!
{
printf("Press any key to halt:");
getch();
return 1;
}
printf("Enter angle :n");
scanf("%f",&angle);
printf("Enter line length (in pixels) :n");
scanf("%f",&length);
DrawLine(angle,length);
return 0;
}
/////////////////
int Initialgrph()
{
int gdriver = DETECT, gmode, errorcode;
initgraph(&gdriver, &gmode, "c:tcbgi"); //in the "" you may fill the path of the Bgi library
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %sn", grapherrormsg(errorcode));
return 1;
}
return 0;
}
void DrawLine(float angle,float length)
{
int Dx,Dy,OrgX,OrgY;
double ang_in_rd;
ang_in_rd=(double)angle*M_PI/180; //تحويل الزاوية من درجة الى راديان
Dy=sin(ang_in_rd)*length; // y حسب الزاوية نجد دلتا
Dx=cos(ang_in_rd)*length;// × حسب الزاوية نجد دلتا
OrgX=getmaxx()/2;//إخترت نقطة انطلاق الخط من مركز الشاشة
OrgY=getmaxy()/2;// أنظر الملاحظة السابقة
moveto(OrgX,OrgY);// التحرّك الى مركز الشاشة
lineto(OrgX+100,OrgY);//رسم خط إفقي _________.
moveto(OrgX,OrgY); // الرجوع الى مركز الشاشة
lineto(OrgX+Dx,OrgY+Dy);// رسم الخط المطلوب حسب الزاوية والطول
//المطلوب
getch();
}هذا الموضوع مغلق.
