中国矿大计算机1、2班(高技2000级)

矿大,计算机,专升本,

22 成员47 主题37 回复0 张照片

图形学上机源程序(1)

暴
暴峰雨
2001-04-06 12:21
题一:画圆并在弧上等分N点相连
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<graphics.h>
#define pi 3.1415926;
main()
{
int gdriver=DETECT,mode;
double rx,ry,x,y,ang,dang,x1[50],y1[50]; //rx,ry为圆心坐标;dang为弧度增量;x1[],y1[]为等分点坐标数组;//
int n,i,j;
initgraph(&gdriver,&mode," ");
cleardevice();
printf("please enter sides:");
scanf("%d",&n); //输入顶点个数n//
rx=300.00;ry=250.00;
circle(rx,ry,200); //画圆//
dang=2.0/n*pi; //计算弧度增量//
ang=0;
for (i=1;i<=n;i++) //计算顶点坐标//
{
y1[i]=250.00-sin(ang)*200.00;
x1[i]=300.00+cos(ang)*200.00;
ang=ang+dang;
delay(10000);
}
for (i=1;i<=n;i++) //连接各顶点//
{
for (j=1;j<n;j++)
{
line(x1[i],y1[i],x1[j],y1[j]);
}
}
getch();
closegraph();
}


题二:从矩形的左右边的中点向上下两边的N等分点画线
#include <math.h>
#include <graphics.h>
#include<time.h>
main()
{
int gdriver=DETECT,mode;
int i,j;
double x1,y1,x2,y2,x3,x4,y3,y4,dx,x5,x6,y5,y6; //(x1,y1)为左上角坐标,(x2,y2)为有上角坐标;(x3,y3),(x4,x5)为左右边中点坐标;(X5,Y5)(X6,Y6)为上下边等份点坐标。//
initgraph(&gdriver,&mode," ");
x1=100.00; y1=100.00;
x2=600.00;y2=400.00;
rectangle(x1,y1,x2,y2); //画矩形//
x3=x1;y3=y1+(y2-y1)/2;
x4=x2;y4=y3;
dx=(x2-x1)/7;
do
{
for(j=0;j<=15;j++) //设置颜色循环//
{
x5=x1;
x6=x2;
for(i=1;i<=6;i++) //连接各点//
{
setcolor(j);
y5=y1;x5=x5+dx;
y6=y2;x6=x6-dx;
line(x3,y3,x5,y5);line(x3,y3,x6,y6);
line(x4,y4,x6,y6);line(x4,y4,x5,y5);
delay(10000); //延时1秒//

}
}
}
while(!kbhit()); //按任意键退出//
getch();
closegraph();
}
我们只不过是生命之网上的一股线绳,生活在离太阳最近的第3颗行星上,我们只有一个地球!One earth!
oicq:19906552
喜欢电影的朋友这来...
1 / 1

登录后回复。