- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[案例2-直线中点Bresenham算法
课程实验报告
课程名称 计算图形学≤k≤1直线的中点resenham算法。
任意斜率直线段绘制算法。
颜色类的定义与调用方法。
直线类的定义与调用方法。
鼠标按键消息映射方法。
实
验
内
容 1、案例描述
在屏幕客户区内按下鼠标左键赞扬直线的起点,移动鼠标指针到直线终点上,弹起鼠标左键绘制任意斜率的直线段。
2、功能说明
ble型的红绿蓝分量ed,green和lue,将ed,green和lue分量分别规范到
(2)设计Cline直线类,其成员变量为直线段的起点坐标P0和终点坐标P1,成员函数为veTo()和ineTo()函数。
line类的resenham算法绘制任意斜率的直线段,包括=±∞,k1,0≤??≤1, -1≤??0和-1这5种情况
(4)自定义屏幕二维坐标系,原点位于客户区中心,
及
实
验
步
骤
1、案例分析
MFC提供的CDC类的成员函数MoveTo()和LineTo()函数用于绘制傻任意斜率的直线段,直线段的颜色由所选用的画笔指定。MoveTo()函数移动当前点到参数x,y)所指定的点,不画线;
本案例通过定义line类来模拟CDC类绘制任意斜的直线段,采用直线中点Bresenham算法。
2、算法设计
对于0≤??≤1的直线段,中点
(1)使用鼠标选择起点坐标0(x0,y0)和终点坐标1(x1,y1)。要求起点的的坐标小于等于终点的
(2)定义直线段当前点坐标x,y,定义中点误差项lr。(3)x=x0,y=y0,计算0.5-k,k=(y1-y0)/(x1-x0),
clr=CRGB(0,0,1)
(4)绘制点x,y),判断0,则x,y)更新为,y+1),d更新为+1-k;否则x,y)更新为x+1,y),d更新为d-k。
(5)如果当前点x1,重复步骤(4),否则结束。
3、设计CRGB类
为了规范颜色的处事,定义了CRGB类,重载了“+”,“-”、“*”、“”、“+=”、“-=”、“*=”、“/=”运算符。成员函数()将颜色分量ed,green,blue规范到0,1]闭区间内。
RGBh
#pragma once
class CRGB
{
public:
CRGB();
CRGB(double, double, double);
~CRGB();
friend CRGB operator + (const CRGB, const CRGB);
friend CRGB operator - (const CRGB, const CRGB);
friend CRGB operator * (const CRGB, const CRGB);
friend CRGB operator * (const CRGB, double);
friend CRGB operator * (double, const CRGB);
friend CRGB operator / (const CRGB, double);
friend CRGB operator += (const CRGB, const CRGB);
friend CRGB operator -= (const CRGB, const CRGB);
friend CRGB operator *= (const CRGB, const CRGB);
friend CRGB operator /= (const CRGB, double);
void Normalize();
public:
double red;
double green;
double blue;
};
RGB.cpp
#include stdafx.h
#include RGB.h
CRGB::CRGB()
{
red = 1.0;
green = 1.0;
blue = 1.0;
}
CRGB::~CRGB()
{}
CRGB::CRGB(double r, double g, double b)
{
red = r;
green = g;
blue = b;
}
CRGB operator +(const CRGB c1, const CRGB c2)
{
CRGB c;
c.red = c1.red + c2.red;
c.green = c1.green + c2.green;
c.blue = c1.blue + c2.blue;
return c;
}
CRGB operator - (const CRGB c1, const CRGB c2)
{
CRGB c;
c.red = c1.red - c2.red;
您可能关注的文档
- [小学二年级上学期语文第八单元练习题.doc
- [高一通用技术2第二节稳固结构的探析课件.ppt
- [机械设备维修技术第一讲教案.doc
- [机械设备检修与保养报告.doc
- [高三专题复习专题二生产劳动经营课件.ppt
- [机械设备部工作流程.doc
- [小学二年级下册第二单元的测试.doc
- [高国新的性质宇宙学讲义1-120.doc
- [小学二年级下册语文单元试卷.doc
- [高国新的性质宇宙学讲义1-40.doc
- 半导体材料性能提升技术突破与应用案例分析报告.docx
- 半导体设备国产化政策支持下的关键技术突破与应用前景报告.docx
- 剧本杀市场2025年区域扩张策略研究报告.docx
- 剧本杀行业2025人才培训体系构建中的市场需求与供给分析.docx
- 剧本杀行业2025年人才培训行业人才培养模式创新与探索.docx
- 剧本杀行业2025年内容创作人才需求报告.docx
- 剧本杀行业2025年区域市场区域剧本市场消费者满意度与市场竞争力研究报告.docx
- 剧本杀市场2025年区域竞争态势下的区域合作策略分析报告.docx
- 剧本杀行业2025人才培训与行业人才培养模式创新.docx
- 剧本杀行业剧本创作人才心理素质培养报告.docx
文档评论(0)