光栅化 (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,是因为它处于转折点。

 

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

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法[通俗易懂]

    RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法[通俗易懂]RNN网络的学习算法-BPTT笔记本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗Ctrl+B斜体Ctrl+I引

    2022年6月23日
    31
  • 区块链应用 | 普华永道报告:区块链不只是比特币,还将改变这8大领域

    区块链应用 | 普华永道报告:区块链不只是比特币,还将改变这8大领域

    2021年5月26日
    246
  • Linux零拷贝_Linux开发教程

    Linux零拷贝_Linux开发教程引言传统的Linux操作系统的标准I/O接口是基于数据拷贝操作的,即I/O操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘I/O的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘I/O操作。但是数据传输过程中的数据拷贝操作却导致了极大的CPU开销,限

    2025年11月26日
    3
  • VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123[通俗易懂]

    VMware Workstation 不可恢复错误: (vcpu-0) vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123[通俗易懂]使用VMware®Workstation11.1.2build-2780323安装MacOS系统时出现以下错误:VMwareWorkstation不可恢复错误:(vcpu-0)vcpu-0:VERIFYvmcore/vmm/main/physMem_monitor.c:1123日志文件位于“H:\VMware\OSX\vmware.log”中。您可以请求支持。…

    2022年10月3日
    2
  • 十进制小数转二进制小数方法

    十进制小数转二进制小数方法十进制小数转二进制小数方法转自:http://www.cnblogs.com/upzone/articles/1389365.html十进制小数→→→→→二进制小数 方法:“乘2取整”对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.如此不断重复,直到小数部分为0或达到精度要求为止

    2022年9月24日
    4
  • 数据库中间件介绍_数据中间件

    数据库中间件介绍_数据中间件文章目录1、Cobar2、Mycat3、OneProxy4、kingshard5、Vitess6、Atlas7、MaxScale8、MySQLRoute9、ShardingSpere(Sharding-JDBC)10、DRDS1、CobarCobar属于阿进而B2B事业群,始于2008年,在阿里服役年多,接管3000+个MySql数据库的schema,集群日处理在线SQL请求50亿次以上。由于Cobar发起人离职,Cobar停止维护。2、Mycat开源社区在阿里Cobar基础上进行

    2025年7月8日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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