c语言 斜率,c语言画多边形-任意斜率直线-填充(7页)-原创力文档

#include "stdio.h"

#include "stdlib.h"

#include "graphics.h"

#include "math.h"

#define PI 3.1415926

int a=200,b=200;

void initgraphics()

{

int GraphDriver;

int GraphMode;

int ErrorCode;

GraphDriver=DETECT;

initgraph(& GraphDriver,&GraphMode,"C:\\TC20\\BGI");

ErrorCode=graphresult();

if(ErrorCode!=grOk)

{printf("Graphic system Init Error:%s","");

grapherrormsg(ErrorCode);

exit(0);

}

}

Line(int x0,int y0,float angle,float L,int color)

{

float k,x1,y1;

int jiao=(int)angle;

int flag;

k=tan(angle/180*PI);

x1=x0+L*cos(angle/180*PI);

y1=y0+L*sin(angle/180*PI);

if((jiao%360>=0)&&(jiao%360<=45)||(jiao%360>315)&&(jiao%360<=360)) flag=1;

else if((jiao%360>45)&&(jiao%360<=90)||(jiao%360>90)&&(jiao%360<=135)) flag=2;

else if((jiao%360>135)&&(jiao%360<=180)||(jiao%360>180)&&(jiao%360<=225)) flag=3;

else if((jiao%360>225)&&(jiao%360<=270)||(jiao%360>270)&&(jiao%360<=315)) flag=4;

switch(flag)

{case 1:

{int x;

float y=y0;

for(x=x0;x<=x1;x++)

{

putpixel(x,(int)(y+0.5),color);

a=x,b=(int)(y+0.5);

y+=k;

}

printf("a1 and b1 is:%d,%d\n",a,b);

}

break;

case 2:

{int y;

float x=x0;

for(y=y0;y<=y1;y++)

{

putpixel((int)(x+0.5),y,color);

a=(int)(x+0.5),b=y;

x+=1/k;

}

printf("a2 and b2 is:%d,%d\n",a,b);

}

break;

case 3:

{int x;

float y=y0;

for(x=x0;x>=x1;x--)

{

putpixel(x,(int)(y+0.5),color);

a=x,b=(int)(y+0.5);

y-=k;

}

printf("a3 and b3 is:%d,%d\n",a,b);

}

break;

case 4:

{int y;

float x=x0;

for(y=y0;y>=y1;y--)

{

putpixel((int)(x+0.5),y,color);

a=(int)(x+0.5),b=y;

x-=1/k;

}

printf("a4 and b4 is:%d,%d\n",a,b);

}

break;

}

}

void polygon(int n)

{

float ang,direction;

int i;

ang=(n-2)*180/n;

direction=0;

Line(a,b,direction,50,3);

for(i=1;i

{

direction+=(180-ang);

printf("direction is %f\n",direction);

Line(a,b,direction,50,3);

}

}

void BoundaryFill4(int x,int y,int boundarycolor,int newcolor)

{ int color; /*color怎么取值*/

color=getpixel(x,y);

if(color!=newcolor && color!=

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值