如何用OpenGL实现直线扫描和区域填充算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2425个文字,预计阅读时间需要10分钟。
原文:本文字例为大师分享了OpenGL实现直线扫描算法和区域填充算法,供大家参考。总体介绍如下:
1、采用直线扫描算法绘制一条线段,直线由离散点组构成;
2、利用区域填充算法绘制△。
本文实例为大家分享了opengl实现直线扫描算法和区域填充算法,供大家参考,具体内容如下
总体介绍
1、采用直线扫描算法绘制一条线段,直线由离散点组成
2、利用区域填充算法绘制多边形区域,区域由离散点组成
开发环境VS2012+OpenGL
开发平台 Intel core i5,Intel HD Graphics Family
设计思路
一、直线扫描算法
1、数值微分法(DDA)
已知过端点P0 (x0, y0), P1(x1, y1)的直线段L:y = kx + b,容易得知直线斜率为:k = (y1-y0)/(x1-x0),(假设x1≠x0)。
我们假设|k|≤1,这样x每增加1,y将增加k,并且保证x每增加1,y的增量不能大于1;如果|k|> 1,则应该将x和y互换。由于k是浮点数,因此算法中需要将y舍入为int型,并圆整到最接近的位置。
DDA算法在每次迭代中的x, y值是上一步的值加上一个增量获得的,因此它是一个增量算法。但是这种方法直观,但效率太低,因为每一步需要一次浮点乘法和一次舍入运算。
本文共计2425个文字,预计阅读时间需要10分钟。
原文:本文字例为大师分享了OpenGL实现直线扫描算法和区域填充算法,供大家参考。总体介绍如下:
1、采用直线扫描算法绘制一条线段,直线由离散点组构成;
2、利用区域填充算法绘制△。
本文实例为大家分享了opengl实现直线扫描算法和区域填充算法,供大家参考,具体内容如下
总体介绍
1、采用直线扫描算法绘制一条线段,直线由离散点组成
2、利用区域填充算法绘制多边形区域,区域由离散点组成
开发环境VS2012+OpenGL
开发平台 Intel core i5,Intel HD Graphics Family
设计思路
一、直线扫描算法
1、数值微分法(DDA)
已知过端点P0 (x0, y0), P1(x1, y1)的直线段L:y = kx + b,容易得知直线斜率为:k = (y1-y0)/(x1-x0),(假设x1≠x0)。
我们假设|k|≤1,这样x每增加1,y将增加k,并且保证x每增加1,y的增量不能大于1;如果|k|> 1,则应该将x和y互换。由于k是浮点数,因此算法中需要将y舍入为int型,并圆整到最接近的位置。
DDA算法在每次迭代中的x, y值是上一步的值加上一个增量获得的,因此它是一个增量算法。但是这种方法直观,但效率太低,因为每一步需要一次浮点乘法和一次舍入运算。

