算法
文章平均质量分 69
flying1217
这个作者很懒,什么都没留下…
展开
-
图形学算法--Bresenham画直线
上次写了一下DDA直线算法的过程和实现,但DDA算法也有一些缺点: 主要它涉及到了实数的除法运算,效率不太高。 今天,我介绍另外一种画直线的算法:Bresenham算法(中点画线) Bresenham算法的基本思想就是一步一步生成直线上的结点,可以说是生成式算法。它的优点就在于整个算法过程中全是整数运算,没有实数运算。 首先假设直线的k(斜率)是0k原创 2012-03-12 21:43:26 · 3312 阅读 · 0 评论 -
图形学算法--Bresenham算法画圆(四分法)
之前几篇blog都是在写图形处理中直线的画法,现在开始我们进入圆的画法。首先要讲的就是圆的Bresenham四分画法。圆的Bresenham四分画法,其基本思想和直线的Bresenham画法是一样的,由当前点推断出下一个点的位置,一个点一个点地生成。同时,由于圆的的对称性,我们只需要计算出第一象限中的14圆就行了,其他三个象限的圆能通过对称性直接得到。具体做法如下:假设目前所要画的原创 2012-03-20 22:31:24 · 6616 阅读 · 0 评论 -
图形学算法--Bresenham算法的改进(综合各个方向)
上次我们说明了Bresenham直线算法的原理和实现过程,但是上次我们只是给出了一个方向上的直线画法,这次我们就来说明一下如何画出所有方向上的直线。 其实想要画出全方向上的直线是很简单的,只要分别单独求出8组不同方向上的算法,写成8个函数,然后需要画直线的时候就调用相应的函数。很显然,这是最简单的,但这不是今天的主题,今天我想说明的是,如何把这8个函数整合到一起,只用一个函数就能画出所有方向上的直原创 2012-03-19 23:07:25 · 1751 阅读 · 0 评论 -
左式堆的实现
头文件:#ifndef LeftistHeap_H#define LeftistHeap_H#includeusing namespace std;templatestruct LeftistNode{ T data; LeftistNode *left; LeftistNode *right; int npl; LeftistNode(const T & theD原创 2012-05-27 22:36:45 · 784 阅读 · 0 评论 -
二叉队列的实现
头文件:/**A class for Minimum BinaryHeap*writter: flyaway*Time: 2012.5.22*description:* use the array to store data* This class provide public functions:* insert()* findMin()* deleteMin()*原创 2012-05-27 22:24:21 · 297 阅读 · 0 评论 -
图形学算法——图形的颜色填充算法
一、有序边表填充算法(扫描线)1、算法思想简单的来说,就是计算出屏幕上有哪些像素点是在多边形内部的,重复利用多变形内部区域的连续性。算出每一条水平线上有哪些点是在该多边形内的,然后改变这些点的像素值。如图所示:2、算法步骤a、确定多边形顶点的最小和最大y值(ymin和ymax)。b、从y=ymin到y=ymax,每次用一条扫描线进行填充。c、对一条扫描线填充的过程可分为原创 2012-05-06 21:24:58 · 6356 阅读 · 2 评论 -
图形学算法——点与多边形的关系(交点数判断法)
基本思想:从指定点出发,向无穷远处发出一条射线,计算这条射线和多变的交点个数,若交点数为偶数(包括0),则说明在该点在多边形外;否在该点在多边形内。 此处,为了方便我们叙述,我们假设射线是水平向右发射的。为了计算射线与多边形所有边的交点,我们需要遍历多边形所有的边,判断是否存在交点。这样的计算量非常大,以下给出几种可以减少计算量的方法。一、构建安全矩形 如图所示,构原创 2012-03-26 22:34:35 · 5346 阅读 · 0 评论 -
AVL树的实现
这几天在复习数据结构,当时学的时候AVL树没有实现起来,当时觉得AVL树的各种旋转操作比较复杂。现在复习的时候好好看了一下,完整的实现了AVL树。现在给出代码如下。这是头文件:/** A class for a AVL** Writer:flyaway** Time:2012.5.14* descroption:* This class is changed from BST原创 2012-05-23 10:41:55 · 364 阅读 · 0 评论