光栅化规则不是唯一的,只要能满足在扫描线填充过程中,对于一条分割线两边的像素能够被不重复不遗漏地填充即可。

在gdi3d中目前使用的是下面光栅化规则:

xLeft_int=ceil(xLeft-0.5)
xRight_int=ceil(xRight-1.5)
yTop_int=ceil(yTop-1.5)
yBottom_int=ceil(yBottom-0.5)

下面验证上面规则是满足不重复不遗漏的,如图:

先验证纵向上不重复不遗漏:

(1),假设上面三角形的yBottom=0.5,则下面与之共边的三角形的yTop=0.5,则

yBottom_int=ceil(yBottom-0.5)=ceil(0.5-0.5)=0

yTop_int=ceil(yTop-1.5)=ceil(0.5-1.5)=-1

即上面三角形填充第0行,下面三角形填充第-1行。两行正好相邻,不重复不遗漏。

(2),假设上面三角形的yBottom=0.4,则下面与之共边的三角形的yTop=0.4,则

yBottom_int=ceil(yBottom-0.5)=ceil(0.4-0.5)=0

yTop_int=ceil(yTop-1.5)=ceil(0.4-1.5)=-1

即上面三角形填充第0行,下面三角形填充第-1行。两行正好相邻,不重复不遗漏。

(3),假设上面三角形的yBottom=0.6,则下面与之共边的三角形的yTop=0.6,则

yBottom_int=ceil(yBottom-0.5)=ceil(0.6-0.5)=1

yTop_int=ceil(yTop-1.5)=ceil(0.6-1.5)=0

即上面三角形填充第1行,下面三角形填充第0行。两行正好相邻,不重复不遗漏。

同理可验证横向上也是不重复不遗漏的。

----

参考:https://msdn.microsoft.com/en-us/library/windows/desktop/cc627092(v=vs.85).aspx

最新文章

  1. DPM模型简单记录
  2. doT.js学习
  3. laravel中TokenMismatchException异常处理
  4. js中let和var定义变量的区别
  5. 保证唯一的一种js提交数据方式,还不错
  6. js菜单默认选中
  7. Elasticsearch——使用_cat查看Elasticsearch状态
  8. zkw线段树详解
  9. Process Kill Technology && Process Protection Against In Linux
  10. switch/ifelse 使用总结
  11. SSO单点登录之跨域问题
  12. 基于visual Studio2013解决C语言竞赛题之1046矩阵计算
  13. OR1200数据Cache运用情景分析
  14. Markdown 代码测试
  15. Grass Cownoisseur[Usaco2015 Jan]
  16. 应届生第一次Java面试问题分享
  17. @EnableScheduling注解
  18. [MicroPython]TPYBoardv102超全DIY案例一览
  19. Codeforces Round #402 (Div. 2) D. String Game
  20. Python Socket请求网站获取数据

热门文章

  1. 实用类String.length应用-用户名密码长度
  2. Java高级架构师(一)第21节:通过X-gen生成商品模块
  3. Asp.Net MVC part6 WebAPI
  4. Nginx 编译参数详解/大全
  5. 关于JS中原型链中的prototype与_proto_的个人理解与详细总结
  6. 【mybatis】mybatis中insert 主键自增和不自增的插入情况【mysql】
  7. Sublime Text:格式化插件HTML-CSS-JS Prettify
  8. Linq 简明教程
  9. 前端:微信支付和支付宝支付在pc端和h5页面中的应用
  10. htmltestrunner解决错误日志出界问题