计算机图形学平时作业2

题目:用自己编写的直线函数完成如下内容,在此基础上可以尝试用实线和虚线自己创作

#include <graphics.h>        // 引用图形库头文件
#include <conio.h>
#include <math.h>

#define CELL 80

void DDALine(int x1,int y1,int x2,int y2,int color,bool f)
{
	int i,length;
	float dx,dy,x=x1,y=y1;

	if(abs(x2-x1)>=abs(y2-y1))//选择步长
		length=abs(x2-x1);
	else
		length=abs(y2-y1);

	dx=(float)(x2-x1)/length;
	dy=(float)(y2-y1)/length;

	putpixel((int)(x),(int)(y),color);
	for(i=1;i<=length;i++)
	{
		x=x+dx;
		y=y+dy;
		//bool判断虚实
		if(f==0&&((int)x/6)%2==0)//设置除数为6
			putpixel((int)(x+0.5),(int)(y+0.5),color);
		else if(f==1)
			putpixel((int)(x+0.5),(int)(y+0.5),color);
	}
}

int main()
{
	initgraph(640, 640);   // 创建绘图窗口
	setbkcolor(WHITE);//白色背景
	cleardevice();//刷新窗口

	setorigin(320,320);
	//实线
	DDALine(-320,0 ,0,-320 ,RED,1);
	DDALine(320,0,0,320,RED,1);
	DDALine(0,-320,320,0,RED,1);
	DDALine(0,320,-320,0,RED,1);
	//虚线
	for(int t=1;t<4;t++)
	{
		for(int k=1;k<3;++k)
		{
			int a=pow(-1,k);
			int loc=t*CELL*a;		
			DDALine(320*a,loc,loc,320*a,BLACK,0);
			DDALine(320*a*(-1),loc,-loc,320*a,BLACK,0);
		}
	}
	//蝴蝶
	for(int k=1;k<3;k++)
	{
		int a=pow(-1,k);
		DDALine(160*a,-150,0,0,MAGENTA,1);
		DDALine(160*a,80,0,0,MAGENTA,1);
		DDALine(160*a,-150,160*a,80,MAGENTA,1);

		DDALine(100*a,140,0,0,MAGENTA,1);
		DDALine(30*a,180,0,0,MAGENTA,1);
		DDALine(100*a,140,30*a,180,MAGENTA,1);

		DDALine(80*a,-160,0,0,BLACK,1);
	}
    
    getch();                // 按任意键继续
    closegraph();           // 关闭绘图窗口
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值