光栅化 (Rasterization)

光栅化 (Rasterization)上一篇文章讨论了如何在多边形的某一点上分配光强度值,这里主要讨论如何为多边形确定实际的像素,即在栅格屏幕上的对应位置,这个过程称为光栅化(Rasterization)或者扫描转换(Scanconv

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

上一篇文章讨论了如何在多边形的某一点上分配光强度值,这里主要讨论如何为多边形确定实际的像素,即在栅格屏幕上的对应位置,这个过程称为光栅化(Rasterization)或者扫描转换 (Scan conversion)。

1 光栅化边

主要方法:DDA算法

起始点(xs,ys),终点(xe,ye)

Δy = 1,Δx 用 m 表示

∵ Δy/x= (ye-ys)/ (xe-xs), Δy = 1,

∴ m =  (xe-xs)/(ye-ys)

浮点数伪代码:

光栅化 (Rasterization)

整数伪代码:

光栅化 (Rasterization)

这里 x = xi, xf > 0 时,一开始 xf = -0.5,四舍五入,如果 xf > 0,则说明 mf > 0.5,所以近1。

光栅化 (Rasterization)

PS: div是整除,mod是取余,ye-ys为常数。

这里存在的一个问题是将3*3的正方形画成4*4,解决的办法是去掉第一个顶点或者去掉最后一个,这个根据个人习惯。

 

2 光栅化多边形

光栅化 (Rasterization)

光栅化多边形可以用链表数组 a[n] 来实现,a[i] 代表 yi 所包含的所有的 x 值的链表(linked list)。链表的元素结构是 A(value, pointer),pointer指向下一个元素。

如图所示,竖条的每一个小格代表一个 a[i],y的值是无序的,扫描中,每一条扫描线每产生一对 (x,y),找到对应y值,如果不存在这个y,则加入一个链表,即 a[n+1],然后 x 根据升序插入,因为是链表,所以可以插入。在得出多边形在屏幕中相应位置时,也要计算改像素点的光强并存储。

PS: a[0] 出现两个相同的 x 值4,是因为它处于转折点。

 

实现光栅后,接下来要做的事情是多边形填充,可参见转载的文章 多边形区域填充算法--扫描线填充算法

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168028.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • qtcpsocket断开_2020-05-06 QT子线程使用QTcpSocket连接服务器

    qtcpsocket断开_2020-05-06 QT子线程使用QTcpSocket连接服务器为什么要是用多线程?多线程的使用主要是为了处理比较耗时的过程。多线程的实现可以通过两种方式实现分别是:1.继承QThread实现多线程2.继承QObject实现多线程(由于继承QObject的多线程实现方法更加灵活,Qt官方推荐使用该方法实现多线程)。这里将采用第二种方式实现多线程多线程实现过程1.创建一个继承于QObject的自定义线程类,用来处理比较耗时的功能。相关函数:voidsetFla…

  • softmax 损失函数与梯度推导「建议收藏」

    softmax 损失函数与梯度推导「建议收藏」softmax与svm很类似,经常用来做对比,svm的lossfunction对wx的输出s使用了hingefunction,即max(0,-),而softmax则是通过softmaxfunction对输出s进行了概率解释,再通过crossentropy计算lossfunction。将score映射到概率的softmaxfunction:,其中,,j指代i-thclass。…

  • 怎样和领导汇报工作,更容易获得升职加薪?谈谈和领导汇报的艺术

    怎样和领导汇报工作,更容易获得升职加薪?谈谈和领导汇报的艺术

  • delphi数组排序_sql排序函数

    delphi数组排序_sql排序函数var  m_bSort:  boolean=false;  //控制正反排序的变量     //ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法  function  CustomSortProc(Item1,  Item2:  TListItem;  ParamSort:  integer):  integer;  stdcall

  • 大数据资产管理实战

    大数据资产管理实战各位好,今天和大家分享“大数据资产管理实战”这个课题。本次分享包括大数据资产管理的概述、方法论和实施效果三个部分的内容。第一部分:大数据资产管理概述提到企业数字化转型,不得不提现在的一个主流观点:未来的企业必将成为数字化企业,每个公司都将会成为软件公司!未来企业增长和竞争的能力越来越取决于其数字化创新能力。为了应对企业数字化转型,企业IT架构采用分布式、微服务、移动化、大数据等技术来应对业务变化带…

  • Android自定义View之declare-styleable记录[通俗易懂]

    Android自定义View之declare-styleable记录[通俗易懂]format值类型reference资源IDcolor颜色值dimension尺寸值float浮点值string字符串fraction百分数<declare-styleablename=”XXX”>//自定义View的类名<attrname=””format=”reference”/>//资源ID<attrname=…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号