目录

一、算法介绍

二、算法描述

三、算法总结


一、算法介绍

Wu反走样算法,可以将线条变得更平滑,即产生抗锯齿效果。示意图如下:

原图

经过Wu反走样算法改善后

原图

经过Wu反走样算法改善后

二、算法描述

从起点开始,每走一步,x增加1。

在每一步中,分别计算 距离真实直线最近的 上下两个像素点 和直线之间的误差值——y坐标与真实直线y坐标之差。

如果误差值为0,则该像素点的强度取100%;如果误差值为0.8,则该像素点的强度取20%,依此类推,将上下两个像素涂上不同强度的颜色。

如下图所示:

原图

反走样改善后

上图中,红线代表最近的上方像素距离直线的误差值;绿线代表最近的下方像素距离直线的误差值。可以很容易看出,误差值越小,颜色涂得越深。在代码中,要计算误差值,可以使用浮点数并取小数部分的误差值。

综上,即为Wu反走样算法内容。

三、算法总结

伪代码:

void CTestView::ALine(CDC* pDC)
{CPoint p0(-100, -50), p1(200, 50), p;int dx, dy;dx = p1.x - p0.x;dy = p1.y - p0.y;double k = (double)dy / dx, e;for (p = p0, e = 0; p.x < p1.x; p.x++) {pDC->SetPixelV(p.x, p.y, RGB(e * 255, e * 255, e * 255));pDC->SetPixelV(p.x, p.y + 1, RGB((1 - e) * 255, (1 - e) * 255, (1 - e) * 255));e += k;if (e >= 1.0) {p.y++;e--;}}
}

Wu反走样算法介绍(简单易懂) -Xiaolin Wu’s Algorithm相关推荐

  1. Bresenham改进算法结合wu反走样算法画直线

    自己打造了CLine画直线类 1.CP2类 定义了点类 class CP2 { public:CRGB clr;double y;double x;CP2();CP2(double,double,CR ...

  2. Wu反走样算法绘制直线段

    Wu反走样算法 原理:在我看来,Wu反走样算法是在Bresenham算法基础上改进了一番,它给最靠近理想直线/曲线的两个点以不同的亮度值,以达到模糊锯齿的效果.因为人眼看到的是线附近亮度的平均值. M ...

  3. Wu反走样算法绘制圆(C++/MFC实现)

    Wu反走样圆 原理:参考Bresenham算法,在主位移过程中计算出离理想圆最近的两个点,赋予不同的亮度值,绘制像素点即可! MFC 中CXXXView类中添加函数: //Wu算法画反走样圆 void ...

  4. 中点分割裁剪算法介绍 (简单易懂)

    目录 一.算法介绍 二.算法描述 一.算法介绍 裁剪效果图:   中点分割裁剪算法的思想类似于二分思想,不断地在中点处将线段一分为二,对每段线段重复Cohen-Sutherland裁剪算法的线段可见性 ...

  5. WuxioLin 反锯齿算法(反走样算法,Xiaolin Wu Anti-aliasing algorithm) C# 代码实现

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.锯齿和反锯齿 二.Xiaolin Wu 算法代码 1.C#完整代码如下 2.举例和测试 总结 前言 笔者前几日自己 ...

  6. Python 快速排序算法【简单易懂,代码直接运行】

    Python 快速排序算法[简单易懂,代码直接运行] 给定你一个长度为 n 的整数数列. 请你使用快速排序对这个数列按照从小到大进行排序. 并将排好序的数列按顺序输出. 输入格式 输入共两行,第一行包 ...

  7. 关于python中的模块的定义、使用、优点及其使用cpy文件的介绍 简单易懂

    一 模块的定义及其使用规范 首先pycharm中每一个以.py结尾的python文件都是一个模块,并且模块就相当于一个工具包,当我们想使用这个工具包内的工具的时候,必须要用到import关键字来导入, ...

  8. [计算机图形学]反走样(前瞻预习/复习回顾)

    一.前言:走样的产生 上一篇我们谈到了光栅化,在讲述光栅化时我们得到了光栅化之后的这样一张图,如下图 显然,这和我们原本的三角形严重不符,原因是像素是方块,而无法完美的拟合三角形. 也就是说我们得到的 ...

  9. 排序算法:简单选择排序算法实现及分析

    简单选择排序算法介绍 简单选择排序(Simple Selection Sort)就是通过n-1次关键字排序之间的比较,从n-i+1个记录中选择关键字最小的记录,并和第i(1<=i<=n)记 ...

最新文章

  1. IOS一些显示效果和动画效果资料
  2. 如何修改datagrid行的高度_如何开出一份完美的信用证?
  3. VMM虚拟机启动失败故障处理
  4. 思科交换机配置试题_(思科配置试题可以略过)
  5. Nginx概述与安装
  6. SDNU 1171.合并果子(区间dp)
  7. node mysql 跨库查询_nodejs 在mongodb在跨数据库之中如何进行关联起来查询,并且支持筛选关联表的条件进行查询...
  8. Idea插件——Translation 翻译插件安装与使用
  9. CodeForces round 753 problem A Linear Keyboard(线性键盘)
  10. 【BZOJ3674】—可持久化并查集加强版(可持久化并查集)
  11. 29.2. Ubuntu
  12. 论文笔记_S2D.60_CMRNet:相机到激光雷达地图的注册
  13. 【Try to Hack】masscan
  14. matlab 傅立叶变换去噪
  15. Validity和setCustomVilidity
  16. 练习5:MySQL数据插入、更新与删除
  17. 复星文旅换帅:徐晓亮任董事长职务 钱建农将任复星国际执行总裁
  18. 在线公开课 | 5G时代的视频云服务关键技术与实践
  19. 永远不要忘记_它永远不会忘记一张脸
  20. 最新游戏陪玩源码V2.0升级版/商业版语音聊天系统源码

热门文章

  1. 区块链入门教程(8)--WeBASE-Front节点前置服务
  2. 怎么关闭win10自带杀毒软件
  3. 自考知识电脑图计算机组成原理,自考“计算机组成原理”考试大纲
  4. Python报错 TypeError: Descriptors cannot not be created directly
  5. VMware虚拟机硬盘大小修改
  6. 6-8.4V自动升降压5V 9V 12V PD快充解决方案 TYPE-C快充
  7. 互联网下半场,苏宁“拼购村”如何打造现象级模式
  8. Win10开始菜单点击没有反应打不开怎么办?
  9. 程序员必备之沟通的艺术
  10. html表格优秀作品,40多个漂亮的网页表单设计实例