直线扫描转换——中点Bresenham扫描换算法(VS2022)

说明:本实验代码在vs2022下可正常运行,如需vc6.0版本请联系作者,本实验适配于计算机图形学新版(VC++ MFC )第二版

1.1创建MFC应用程序框架

建议创建项目时名称为:Test

源文件:Line.cpp

头文件:Line.h

其中TestView是框架下自带的,Test是项目名。

1.2设计实现直线绘制类

(1)实验原理

使用中点扫描转换算法进行直线绘制,需要根据斜率k值分别选择不同的误差项和初始值,除垂线外(k=+-∞),可分为k<-1,-1<=k<0,0<=k<=1和k>1四种情况,具体初始值,误差项和递推公式 可自己推,对于k=+-∞,可直接画出垂线,-1<=k<0和0<=k<=1时,X轴方向为主移动方向;k<-1和k>1时,Y轴方向为主移动方向。

(2)"Line.h"头文件的具体代码

#pragma once
class CP2
{
public:
	CP2();
	virtual~CP2();
	CP2(double, double);
public:
	double x;
	double y;
};

class CLine
{
public:
	CLine();
	virtual~CLine();
	void SetLineColor(COLORREF);
	void MoveTo(CP2);
	void MoveTo(double, double);
	void LineTo(CP2, CDC*);
	void LineTo(double, double, CDC*);
public:
	CP2 P0;
	CP2 P1;
	COLORREF clr;
};

1.3新建Line源文件

Line.cpp源文件代码实现:

#include"pch.h"
#include"Line.h"
#include"math.h"
#define R
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值