永发信息网

会C语言的大哥哥大姐姐们帮我解决下,十万火急!

答案:1  悬赏:20  手机版
解决时间 2021-05-03 12:52
  • 提问者网友:你给我的爱
  • 2021-05-02 13:08

#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void mysector(int x,int y,int startangle,int endangle,int rx,int ry);

main()
{
int graphdriver=VGA,graphmode=VGAHI;
int x0=320,y0=240;
int degree=0;
int size=0;
void *buffer=NULL;
int xt=0,yt=0;
struct palettetype palette;
initgraph(&graphdriver,&graphmode,"C:\bc");
cleardevice();
size=imagesize(160,80,320,320);
buffer=malloc(size);
getimage(160,80,320,320,buffer);
getpalette(&palette);

while(!kbhit())
{
putimage(160,80,buffer,COPY_PUT);
setcolor(15);
circle(x0,y0,160);
degree=(degree+10)%360;
xt=(int)80* sin( (degree+90)*(2*M_PI)/360 ) ;
yt=(int)80* cos( (degree+90)*(2*M_PI)/360 ) ;
setfillstyle(1,15);
mysector(x0,y0, 0+degree,180+degree,160,160);
setfillstyle(1,0);
mysector(x0,y0,180+degree,360+degree,160,160);
setcolor(0);
setfillstyle(1,0);
mysector(x0+xt,y0+yt, 0+degree,180+degree,80,80);
setfillstyle(1,15);
mysector(x0-xt,y0-yt,180+degree,360+degree,80,80);
setcolor(15);
setfillstyle(1,15);
mysector(x0+xt,y0+yt,0,360,30,30);
setcolor(0);
setfillstyle(1,0);
mysector(x0-xt,y0-yt,0,360,30,30);
getimage(160,80,320,320,buffer);
}
getch();
closegraph();
}

void mysector(int x,int y,int startangle,int endangle,int rx,int ry)
{
if(startangle<360 && endangle>360)
{
sector(x, y,startangle, 360,rx,ry);
sector(x, y, 0, endangle-360,rx,ry);
}
else if(startangle==360)
sector(x, y,0,endangle-360,rx,ry);
else if(startangle>360 && endangle>360)
sector(x,y,startangle-360,endangle-360,rx,ry);
else sector(x,y,startangle,endangle,rx,ry);
}

帮我把这个图形的半径放小,最好是圆心为(233,240)半径为100的太极图,要会转的

最佳答案
  • 五星知识达人网友:孤老序
  • 2021-05-02 13:18
#include<graphics.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

void mysector(int x,int y,int startangle,int endangle,int rx,int ry);

main()
{
int graphdriver=VGA,graphmode=VGAHI;
int x0=233,y0=240;
int degree=0;
int size=0;
void *buffer=NULL;
int xt=0,yt=0;
struct palettetype palette;
initgraph(&graphdriver,&graphmode,"C:\bc");
cleardevice();
size=imagesize(100,50,320,320);
buffer=malloc(size);
getimage(100,50,320,320,buffer);
getpalette(&palette);

while(!kbhit())
{
putimage(100,50,buffer,COPY_PUT);
setcolor(15);
circle(x0,y0,100);
degree=(degree+10)%360;
xt=(int)50* sin( (degree+90)*(2*M_PI)/360 ) ;
yt=(int)50* cos( (degree+90)*(2*M_PI)/360 ) ;
setfillstyle(1,15);
mysector(x0,y0, 0+degree,180+degree,100,100);
setfillstyle(1,0);
mysector(x0,y0,180+degree,360+degree,100,100);
setcolor(0);
setfillstyle(1,0);
mysector(x0+xt,y0+yt, 0+degree,180+degree,50,50);
setfillstyle(1,15);
mysector(x0-xt,y0-yt,180+degree,360+degree,50,50);
setcolor(15);
setfillstyle(1,15);
mysector(x0+xt,y0+yt,0,360,15,15);
setcolor(0);
setfillstyle(1,0);
mysector(x0-xt,y0-yt,0,360,15,15);
getimage(100,50,320,320,buffer);
}
getch();
closegraph();
}

void mysector(int x,int y,int startangle,int endangle,int rx,int ry)
{
if(startangle<360 && endangle>360)
{
sector(x, y,startangle, 360,rx,ry);
sector(x, y, 0, endangle-360,rx,ry);
}
else if(startangle==360)
sector(x, y,0,endangle-360,rx,ry);
else if(startangle>360 && endangle>360)
sector(x,y,startangle-360,endangle-360,rx,ry);
else sector(x,y,startangle,endangle,rx,ry);

}

按你的要求改好了。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯