Графическая библиотека BGI, рисование фигур - C (СИ)
Формулировка задачи:
Подскажите пожалуйста как нарисовать N угольник, как рисовать функции я в курсе и проблем с этим нет, но вот нарисовать N угольник, причем количество углов задается пользователем до меня ни как не доходит!
Решение задачи: «Графическая библиотека BGI, рисование фигур»
textual
Листинг программы
#include <conio.h> #include <stdio.h> #include <stdlib.h> #include "graphics.h" #include <math.h> #define Pi 3.142 int main() { char line[100], Lx[3]="X", Ly[3]="Y", Lo[3]="O", mas1[80], mas2[80], mas3[80]; float Xmin,Xmax, Ymin,Ymax, c,a1,a2,b1,b2, dx,p,x,b,a,y,z,g, data1[100][100], data2[100][100]; int w,h,W,H,o,n,i,j,m, imin, xl,xr,yr,yl, Xgr,Ygr,X1gr,Y1gr; c=Pi/180; i=0; data1[0][0]=5; data1[0][1]=-5; data1[1][0]=-5; data1[1][1]=-5; data1[2][0]=0; data1[2][1]=5; Xmin=-10; Ymin=-10; Xmax=10; Ymax=10; W=getmaxwidth(); H=getmaxheight(); printf("MAXIMUM Display Resolution is: %dx%d\n",W,H); o=1; while(o) { printf("Enter width "); scanf("%d",&w); printf("Enter height "); scanf("%d",&h); if(w>W||h>H) { printf("This values is impermissible!\nPlease enter another values.\n\n"); } else { o=0; } } o=1; while(o) { printf("Enter xl "); scanf("%d",&xl); printf("Enter yl "); scanf("%d",&yl); printf("Enter xr "); scanf("%d",&xr); printf("Enter yr "); scanf("%d",&yr); if(abs(xr-xl)>w||abs(yl-yr)>h||xl>=xr||yl>=yr||xl<50||yl<50) { printf("This values is impermoissible!\nPlease enter another values.\nRemember!! xl and yl must be more than 200!!\n\n"); } else { o=0; } } printf("Enter the anle: "); scanf("%f",&g); sprintf(line,"Press Enter!!!!"); initwindow(w,h); clearviewport(); rectangle(xl, yl, xr, yr); a1=(xr-xl)/(Xmax-Xmin); a2=xl-a1*Xmin; b1=(yl-yr)/(Ymax-Ymin); b2=yl-b1*Ymax; outtextxy(xl,yl-40,line); setcolor(GREEN); X1gr=a1*(data1[0][0])+a2; Y1gr=b1*data1[0][1]+b2; moveto(X1gr,Y1gr); for(i=1;i<3;i++) { Xgr=int(a1*(data1[i][0])+a2); Ygr=int(b1*data1[i][1]+b2); lineto(Xgr,Ygr); } lineto(X1gr,Y1gr); z=0; outtextxy(xl,yl-40,line); getch(); while(abs((z-1)*c)<abs(g*c)) { clearviewport(); setcolor(15); rectangle(xl, yl, xr, yr); setcolor(2); for(j=0;j<3;j++) { data2[j][0]=data1[j][0]*cos(z*c)-data1[j][1]*sin(z*c); data2[j][1]=data1[j][0]*sin(z*c)+data1[j][1]*cos(z*c); } X1gr=int(a1*(data2[0][0])+a2); Y1gr=int(b1*data2[0][1]+b2); moveto(X1gr,Y1gr); for(i=1;i<3;i++) { Xgr=int(a1*(data2[i][0])+a2); Ygr=int(b1*data2[i][1]+b2); lineto(Xgr,Ygr); } lineto(X1gr,Y1gr); delay(1); if(g<0) z--; else z++; } setcolor(15); for(i=0;i<3;i++) { a=fabs(data2[i][0]-data1[i][0]); b=fabs(data2[i][1]-data1[i][1]); c=sqrt(a*a+b*b); sprintf(mas1,"Shift: %.1f",c); Xgr=int(a1*(data2[i][0])+a2); Ygr=int(b1*data2[i][1]+b2); outtextxy(Xgr+5,Ygr+5,mas1); } getch(); closegraph(); return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д