通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化
1、实验目的与要求
目的:通过本次实验,完成矢量线性多边形向栅格数据的转化过程;
要求:采用VC++6.0实现。
2、实验方法
采用Bresenham算法实现
3、实验材料
直线的定义:y = x/3, 起点为(0, 0),终点为(12, 4);
网格坐标要求:网格分辨率为0.2,网格起点同直角坐标系原点相同
4、实验结果
程序运行的结果,要依次输出栅格单元的栅格坐标
注意事项:本实验中,栅格的分辨率同实际坐标不等,注意格子单位的输出过程以及矢量坐标向格子坐标的转化。
5、程序源代码
//采用Bresenham算法实现完成矢量线性多边形向栅格数据的转化过程 #include<stdio.h>
//Bresenham函数
//其中(x0,y0)是起点,(x1,y1)是终点,k是斜率,pixel是网格分辨率
void Bresenham(int x0,int y0,int x1,int y1,float k,float pixel)
{
int x,y;
float e;
e=-0.5;
x=x0;
y=y0;
for(x=x0;x<=(x1/pixel);x++)
{
e=e+k;
if(e>)
{
y++;
e=e-;
} printf("x=%d y=%d",x,y);
printf("\n");
}
} void main()
{
//调用Bresenham函数
Bresenham(,,,,1.0/3.0,0.2); }
六、运行结果

特别注意:float k=1/3,这时的k是0,涉及到一个类型转换问题。必须使用float k=1.0/3.0,这里的k才是0.33333...。
石头
2014年11月27日
通过Bresenham算法实现完成矢量线性多边形向栅格数据的转化的更多相关文章
- 《图形学》实验七:中点Bresenham算法画椭圆
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 50 ...
- 《图形学》实验六:中点Bresenham算法画圆
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 ...
- 《图形学》实验五:改进的Bresenham算法画直线
开发环境: VC++6.0,OpenGL 实验内容: 使用改进的Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h ...
- 《图形学》实验四:中点Bresenham算法画直线
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h& ...
- 利用canvas实现的中点Bresenham算法
Bresenham提出的直线生成算法的基本原理是,每次在最大位移方向上走一步,而另一个方向是走步还是不走步取决于误差项的判别,具体的实现过程大家可以去问度娘.我主要是利用canvas画布技术实现了这个 ...
- Bresenham算法画填充圆及SDL代码实现
画圆是计算机图形操作中一个非常重要的需求.普通的画圆算法需要大量的浮点数参与运算,而众所周知,浮点数的运算速度远低于整形数.而最终屏幕上影射的像素的坐标均为整形,不可能是连续的线,所以浮点数运算其实纯 ...
- 基于Bresenham算法画圆
bresenham算法画圆思想与上篇 bresenham算法画线段 思想是一致的 画圆x^2+y^2=R^2 将他分为8个部分,如上图 1. 只要画出1中1/8圆的圆周,剩下的就可以通过对称关系画出这 ...
- bresenham算法的FPGA的实现2
在上一篇里http://www.cnblogs.com/sepeng/p/4045593.html <bresenham算法的FPGA的实现1>已经做了一个整体框架的布局,但是那个程序只是 ...
- bresenham算法的FPGA的实现1
接着上一篇的 计算实现给出屏幕上任意两个点,求出这两个点之间直线上的所有的点.http://www.cnblogs.com/sepeng/p/4042464.html 这种直接算法的确是被鄙视了 强大 ...
随机推荐
- POJ 1251 && HDU 1301 Jungle Roads (最小生成树)
Jungle Roads 题目链接: http://acm.hust.edu.cn/vjudge/contest/124434#problem/A http://acm.hust.edu.cn/vju ...
- POJ 2502 Subway
Subway Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4928 Accepted: 1602 Descriptio ...
- ManagementFactory (简介)
Java Management Extensions (JMX) is a Java technology that supplies tools for managing and monitorin ...
- 剑指OFFER之数值的整数次方(九度OJ1514)
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,表 ...
- DBMS_LOB
1.LOB背景 在现在的系统开发中,需要存储的已不仅仅是简单的文字信息,也包括一些图片.音像资料或者超长的文本,这要求后台数据库具有存储这些数据的能力,Oracle通过提供LOB对象实现了该功能. 2 ...
- NAT的全然分析及其UDP穿透的全然解决方式
NAT的全然分析及其UDP穿透的全然解决方式 一:基本术语 防火墙 防火墙限制了私网与公网的通信,它主要是将(防火墙)觉得未经授权的的包丢弃,防火墙仅仅是检验包的数据,并不改动数据包中的IP地址和 ...
- StructureMap 学习笔记(1)
前言 一个偶然的机会接触到了StructureMap,当时客户要求让程序具有较好的测试性,自然而然就想到了IOC 容器. 之后就去Google了一下, 不经意间在StackOverFlow找到一篇帖子 ...
- Codeforces Round #332 (Div. 2) C. Day at the Beach 线段树
C. Day at the Beach Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/599/p ...
- iOS开发——实用篇&提高iOS开发效率的方法和工具
提高iOS开发效率的方法和工具 介绍 这篇文章主要是介绍一下我在iOS开发中使用到的一些可以提升开发效率的方法和工具. IDE 首先要说的肯定是IDE了,说到IDE,Xcode不能跑,当然你也可能同时 ...
- Jetty学习(一)
最近做一个项目,需要动态添加与移除servlet容器的http端口,并且启动都是嵌入式的.因此,果断选择了Jetty. 在模块化方面,Jetty是做的相当给力的一个容器,对 ...