开发环境: VC++6.0,OpenGL 实验内容: 使用改进的Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h> #include <math.h> #define WIDTH 500 //窗口宽度 #define HEIGHT 500 //窗口高度 #define DRAWLINE ProBresenham(100,100,400,400); //画直线 #pragma comment(linke…
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画直线. 实验结果: 代码: //中点Bresenham算法生成直线 #include <gl/glut.h> #include <math.h> #define WIDTH 500 //窗口宽度 #define HEIGHT 500 //窗口高度 #define DRAWLINE1 MidpointBresenham(100,200,200,100); //画直线 #define DRAWLINE…
title: "Python使用DDA算法和中点Bresenham算法画直线" date: 2018-06-11T19:28:02+08:00 tags: ["图形学"] categories: ["Python"] 先上效果图 代码 #!/usr/bin/env python # coding=utf-8 from pylab import * from matplotlib.ticker import MultipleLocator impo…
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画椭圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 #define HEIGHT 500 #define OFFSET 15 //偏移量,偏移到原点 #define A 6 #define B 5 void Init() //其它初始化 { glClearColor(1.0f,1.0f,1.0f,1.0f); //设置背景颜色,完全不透明 glColor3…
开发环境: VC++6.0,OpenGL 实验内容: 使用中点Bresenham算法画圆. 实验结果: 代码: #include <gl/glut.h> #define WIDTH 500 #define HEIGHT 500 #define OFFSET 15 #define R 8 void Init() //其它初始化 { glClearColor(1.0f,1.0f,1.0f,1.0f); //设置背景颜色,完全不透明 glColor3f(1.0f,0.0f,0.0f); //设置画笔…
开发环境: VC++6.0,OpenGL 实验内容: 使用DDA算法画直线. 实验结果: 代码: #include <gl/glut.h> #include <math.h> #define WIDTH 500 //窗口宽度 #define HEIGHT 500 //窗口高度 #define DRAWLINE1 DDALine(100,200,200,100); //画直线 #define DRAWLINE2 DDALine(200,100,450,400); //画直线 #pra…
bresenham算法画圆思想与上篇 bresenham算法画线段 思想是一致的 画圆x^2+y^2=R^2 将他分为8个部分,如上图 1. 只要画出1中1/8圆的圆周,剩下的就可以通过对称关系画出这个圆 X变化从0->R 那为什么不采用从-R->R呢, Y=+-sqrt(R^2-x^2); dy/dx=-x/(sqrt(R^2-x^2)) =-x/y 所以采用从-R到R,每次横坐标增1,计算量大,而且在(x=+-R,y=0)处,x的很小变化就引起了y的很大变化. 所以不是采用x从-R---&…
Bresenham直线算法是用来描绘由两点所决定的直线的算法,它会算出一条线段在 n 维光栅上最接近的点.这个算法只会用到较为快速的整数加法.减法和位元移位,常用于绘制电脑画面中的直线.是计算机图形学中最先发展出来的算法. 经过少量的延伸之后,原本用来画直线的算法也可用来画圆.且同样可用较简单的算术运算来完成,避免了计算二次方程式或三角函数,或递归地分解为较简单的步骤. 基本算法思想 Bresenham直线算法描绘的直线.假设我们需要由 (x1, y1) 这一点,绘画一直线至右上角的另一点(x2…
一.             算法原理简介: 算法原理的详细描述及部分实现可参考: http://www.cs.helsinki.fi/group/goa/mallinnus/lines/bresenh.html Fig.1 假设以(x, y)为绘制起点,一般情况下的直观想法是先求m = dy /dx(即x每增加1, y的增量),然后逐步递增x, 设新的点为x1 = x + j, 则y1 = round(y + j * m).可以看到,这个过程涉及大量的浮点运算,效率上是比较低的(特别是在嵌入式…
画圆是计算机图形操作中一个非常重要的需求.普通的画圆算法需要大量的浮点数参与运算,而众所周知,浮点数的运算速度远低于整形数.而最终屏幕上影射的像素的坐标均为整形,不可能是连续的线,所以浮点数运算其实纯属浪费.下面介绍的Bresenham算法就是根据上文的原理设计.该算法原应用于直线的绘制,但由于圆的八分对称性,该算法也适用与圆(曲线图形)的绘制. 该算法主要是这样的原理:找出一个1/8的圆弧,用快速的增量计算找出下一个点.同时利用圆的八分对称性,找出8个点(包括该点),进行绘制. 这里给出示例的…
现在的计算机的图像的都是用像素表示的,无论是点.直线.圆或其他图形最终都会以点的形式显示.人们看到屏幕的直线只不过是模拟出来的,人眼不能分辨出来而已.那么计算机是如何画直线的呢,其实有比较多的算法,这里讲的是Bresenham的算法,是光栅化的画直线算法.直线光栅化是指用像素点来模拟直线,比如下图用蓝色的像素点来模拟红色的直线. 给定两个点起点P1(x1, y1), P2(x2, y2),如何画它们直连的直线呢,即是如何得到上图所示的蓝色的点.假设直线的斜率0<k>0,直线在第一象限,Bres…
这里不仔细讲原理,只是把我写的算法发出来,跟大家分享下,如果有错误的话,还请大家告诉我,如果写的不好,也请指出来,一起讨论进步. 算法步骤: (1) 输入直线的两端点P0 (x0, y0)和P1 (x1, y1). (2) 计算初始值dx, dy, e = -dx, x = x0, y = y0. (3) 绘制点 (x, y). (4) e更新为e+2 * dy.判断e的符号,若e > 0, 则(x, y)更新为(x+1, y+1), 同时将e更新为e-2*dx:否则(x, y)更新为(x+1,…
struct Point{ Point() { posx = 0; posy = 0; } Point(int x, int y) { posx = x; posy = y; } int posx; int posy;}; void bresenham(int x1, int y1, int x2, int y2, vector<Point>& path){ path.clear(); int dx = abs(x2 - x1); int dy = abs(y2 - y1); int…
在实验课上用自己的算法画直线被diss效率低 花了半天时间看了下Bresenham算法真…
计算机图形学(第2版 于万波 于硕 编著)第45页的Bresenham算法有错误: 书上本来要写的是以x为阶越步长的方法,但是他写的是用一部分y为阶越步长的方法(其实也写的不对),最后以x为阶越步长的方法总结. 分析书上的算法得: l  K初始值<=0  画出的是 x=0; l  0<K初始值<1  画出的是 1/k的直线; l  K初始值>=1  画出的是 y=x; 以下黑色的线是使用MoveTo,Lineto画出的,红色的是书上的程序画出的,蓝色的线是我修改后的直线(有除法),…
目录 一.DDA 二.Bresenham 三.绘制图形 1. 绘制直线 2. 绘制圆 3. 绘制椭圆 一.DDA DDA算法是最简单的直线绘制算法.主要思想是利用直线的斜截式:\(y=kx+b\) 对于一条直线的绘制,往往会给定两个端点:\(P_A = (0,0)\)和\(P_B = (60,60)\) 然后调用函数:OLED_DrawLine(0, 0, 60, 60); 首先,我们来看一下绘制直线都可以用哪些方法. 确定了两个端点,那么两个端点之间的点如何确定? 第一个可以想到:知道了两个点…
上一节链接:http://www.cnblogs.com/zjutlitao/p/4116783.html 前言: 在上一节中我们已经大致介绍了该软件的是什么.可以干什么以及界面的大致样子.此外还详细地介绍了Bresenham直线扫描算法的核心思想及实现,并在最终在2-1小节引出工程中对于该算法具体的实现.本节将着手讲解多边形填充算法. 二.承接上篇 2-1.多边形扫描转换 把顶点表示转换为点阵表示:①从多边形的给定边界出发,求出其内部的各个像素:②并给帧缓冲器中各个对应元素设置相应灰度或颜色 …
直线:y=kx+b 为了将他在显示屏上显示出来,我们需要为相应的点赋值,那么考虑到计算机的乘法执行效率,我们肯定不会选择用Y=kx+b这个表达式求值,然后进行画线段. 我们应当是将它转化为加法运算. 下面提供两种常见的算法: 方法1:DDA算法 DDA算法的思想是 1.判断直线是近x轴线段,还是近y轴线段 2.求出delt_x,delt_y ,以较大值为总步长,每次以此为标准,步进,然后求另一个值的增长值. 实现: 方法二:Bresenham算法实现 算法思想: dBresenham算法只要求做…
20162327WJH实验五--数据结构综合应用 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 指导教师:娄嘉鹏 王志强 实验密级: 非密级 预习程度: 已预习 实验时间:15:25-17:15 必修/选修: 必修 实验序号: cs_23 实验内容 1.分析系统架构 2.编译.运行.测试系统 3.修改系统 4.分析数据结构.排序.查找算法的应用 一.游戏架构分析 游戏简介:点击游戏图标,第一个出线的界面就是游戏的主界面,界面上有四个按…
20145120 <Java程序设计>实验五实验报告 实验名称:Java网络编程 实验内容: 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验内容.步骤 PSP 步骤 耗时 百分比 需求分析 0.5 10% 设计 1 20% 代码实现 2.5 50% 测试 0.5 10% 分析总结 0.5 10% 实验步骤 这次我还是和20145122程智崟组队,我负责服务器,程智崟负责客户端. 程智崟的博客 我们先从简单的开始尝试,客户端和服务器从火之光博客最简单的那…
20155317 <Java程序设计>实验五网络编程与安全实验报告 遇到问题 在刚开始启动客户端或者服务端时,出现了一系列的错误情况,总是提示异常信息 后来经过询问同学,反应将端口号修改一下,但要大于1024,就可以成功运行但是并不能成功 后来经过上网查证,发现问题的本源在于端口号是否被占用,曾经打开过的服务端和客户端会在后台继续运行,占用端口. 出现address already in use: jvm_bind这个错误后,我们在任务栏的空白处点击鼠标右键,然后再弹出菜单里选择[任务管理器]…
20155339 <Java程序设计>实验五网络编程与安全实验报告 实验内容 实验一 1.两人一组结对编程: 参考http://www.cnblogs.com/rocedu/p/6766748.html#SECDSA 1.结对实现中缀表达式转后缀表达式的功能 MyBC.java 2.结对实现从上面功能中获取的表达式中实现后缀表达式求值的功能,调用MyDC.java 3.上传测试代码运行结果截图和码云链接 实验二 结对编程:1人负责客户端,一人负责服务器 注意责任归宿,要会通过测试证明自己没有问…
20145214实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我的结对伙伴是 20145219 宋歌,我负责的是客户端的部分. 1.首先通过在对方的命令行中输入ipconfig得到服务器的ip地址. 2.建立一个Socket对象,用来连接特定服务器的指定端口,输入的参数是刚刚获取的ip地址和双方默认的同一端口.注意端口最好不要为8080.8030这些常见的,我们先后使用了10001.10002和9999,最…
改进的SMS4算法的差分故障与暴力联合攻击 (1.中国科学院研究生院,北京100049) 摘要SMS4是在国内正式使用并于2006年发布的第一个用于无线局域网的商用分组password算法.文中研究了SMS4对差分故障和暴力联合攻击的安全性.攻击使用随机故障模型,提出一种简化的轮函数差分故障攻击与暴力攻击相结合的方法.用该攻击方法不到1分钟就能够全然恢复出128位的种子密钥.文章结果证实SMS4password算法非常难防范利用差分故障和暴力攻击联合的攻击.为了避免这类攻击,在SMS4passw…
20145212 实验五<Java网络编程> 一.实验内容 1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 4.结对伙伴:20145223杨梦云,我负责服务端,她负责客户端. 注:加密使用AES或者DES/AES或者DES加密密钥key并发送,使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3: 5.完成Blog. 二.实验步骤 1.学习TC…
20145213<Java程序设计>实验五Java网络编程及安全 实验内容 1.掌握Socket程序的编写. 2.掌握密码技术的使用. 3.设计安全传输系统. 实验预期 1.客户端与服务器连接 2.客户端中输入明文,利用DES算法加密,DES的秘钥用RSA公钥密码中服务器的公钥加密,计算明文的Hash函数值,一起传送给客户端 3.客户端用RSA公钥密码中服务器的私钥解密DES的,秘钥,用秘钥对密文进行解密,得出明文.计算求得明文的Hash函数值,检查是否与传送过来的一致,如果一直,则表示匹配成…
20145206<Java程序设计>实验五 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 我和20145105姜丽结对编程,我设计客户端的部分. 姜丽的博客园主页:http://www.cnblogs.com/schwarizard/ <1>首先建立一个Socket对象,用来连接特定服务器的指定端口,输入的参数是ip地址和端口,注意ip地址是服务器的ip地址,即运行服务器的那台主机的ip地址. 怎么查…
20145308刘昊阳 <Java程序设计>实验五 Java网络编程及安全 实验报告 实验名称 Java网络编程及安全 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 统计的PSP(Personal Software Process)时间 步骤 耗时(min) 百分比 需求分析 20~30 17% 设计 20~30 17% 代码实现 10~20 11% 测试 50~60 33% 分析总结 30~40 22% 实验步骤 我是做的服务器端,我的结伴对象…
20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器,结对编程一人负责客户端,一人负责服务器 使用Git进行版本控制 选择对称算法进行数据加解密 选择非对称算法对对称密钥进行密钥分发 选择合适的Hash算法进行完整性验证 选择合适的算法对Hash值进行签名/验证 发送方A对信息(明文)采用DES密钥加密,使用RSA加密前面的DES密钥信息,最终将混合…
北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉鹏             实验日期:2015.6.10 实验密级:         预习程度:                     实验时间:15:30--18:00 仪器组次:         必修/选修: 选修             实验序号:5 实验名称: 实验五   Java网络编程…