Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >光栅化 (Rasterization)

光栅化 (Rasterization)

作者头像
全栈程序员站长
发布于 2022-09-20 03:25:58
发布于 2022-09-20 03:25:58
6930
举报

上一篇文章讨论了如何在多边形的某一点上分配光强度值,这里主要讨论如何为多边形确定实际的像素,即在栅格屏幕上的对应位置,这个过程称为光栅化(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)

浮点数伪代码:

整数伪代码:

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

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

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

2 光栅化多边形

光栅化多边形可以用链表数组 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.cn/168028.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
模拟试题A
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wpxu08/article/details/70208378
步行者08
2018/10/09
3.7K0
光栅图形学的中的算法
——对《计算机图形学基础教程》胡事民等著 的补充
种花家的奋斗兔
2020/11/13
1.2K0
光栅图形学的中的算法
光栅化[通俗易懂]
定义一个宽高比(Aspect Ratio);还有垂直可视角度 vertical field-of-view (fovY) 。垂直可视角度即从相机原点到上顶中点和下底中点的连线的夹角,可视角度大可以类比成广角相机,它张得就比较开,适合拍近距离的物体;可视角度小,透视投影就越不明显,越像正交投影,就很容易能拍到远处的物体。水平可视角度可以类比。
全栈程序员站长
2022/09/06
1.2K0
光栅化[通俗易懂]
2.3 光栅化阶段
光栅化:决定哪些像素被集合图元覆盖的过程(Rasterization is the process of determining the set of pixels covered by a geometric primitive)。经过上面诸多坐标转换之后,现在我们得到了每个点的屏幕坐标值(Screen coordinate),也知道我 们需要绘制的图元(点、线、面)。但此时还存在两个问题。
代码咖啡
2018/08/28
9330
2.3 光栅化阶段
【GAMES101】光栅化
这个像素pixel,是picture element的简称,抽象的来说,一个像素就是一个带有统一颜色的方块
叶茂林
2023/12/10
1850
【GAMES101】光栅化
图形学入门(二):光栅化
光栅化(Rasterize)就是将一些矢量形状转换为位图(Raster Image)形式。经过这样的变换后,这些形状才可以在屏幕上进行显示,也可以被打印机打印出来。
zhiruili
2021/08/10
4.2K0
图形学入门(二):光栅化
图形学复习
​ 令 \Delta_{1} = 2a,\Delta_{2} = 2(a+b) ;
努力的Greatiga
2022/07/25
1.8K0
【Web技术】1139- 手把手教你实现手绘风格图形
https://juejin.cn/post/6942262577460314143
pingan8787
2021/11/17
8660
【图形学】探秘图形学奥秘:区域填充的解密与实战
在图形学技术的发展中,硬件加速、实时渲染、虚拟现实和增强现实等方面的创新不断推动着图形学的前沿。这门技术为数字世界的可视化和交互提供了强大的工具和方法。
SarPro
2024/02/20
1770
【图形学】探秘图形学奥秘:区域填充的解密与实战
模拟试题B
1.灰度等级为256级,分辨率为2048*1024的显示器,至少需要的帧缓存容量为( )
步行者08
2018/10/09
4.3K2
三角形光栅化时遇到的坑
前一段时间打算写一个完整的游戏, 客户采用Unity3D引擎, 服务端则采用我自己的Silly网络框架。
重归混沌
2020/04/26
1.1K0
计算机图形学光栅化实验_光栅化算法
​ 屏幕被划分成一个个正方体,称为像素。像素使用坐标 ( x , y ) (x, y) (x,y)来表示,其中心是 ( x + 0.5 , y + 0.5 ) (x+0.5, y+0.5) (x+0.5,y+0.5), 范围是 ( 0 , 0 ) (0,0) (0,0)到 ( w i d t h − 1 , h e i g h t − 1 ) (width-1,height-1) (width−1,height−1)。
全栈程序员站长
2022/11/01
4160
004计算机图形学之多边形的扫描转换和区域填充
多边形的扫描转换是指: 把多边形的顶点表示转换为点阵表示。也就是知道多边形的边界,如何找到多边形内部的点,即把多边形内部填上颜色。
上善若水.夏
2018/09/28
1.5K0
实验2 基本图元光栅化
(1) 阅读学习所给的直线光栅化的DDA算法示范代码,将其彻底弄懂,根据实验思考题找出其中的错误;同时能在计算机上编译运行,输出正确结果,指出错误并截图保存为图1至word实验文档(30分钟);
步行者08
2019/02/25
1.1K0
实验2 基本图元光栅化
【GAMES101-现代计算机图形学课程笔记】Lecture 05 Rasterization 1 (Triangles)
的立方体内,那么下一步所要做的事情(把立方体画在屏幕上,即光栅化)就是这一节所要介绍的。
marsggbo
2020/06/12
1.1K0
(一) 3D图形渲染管线
渲染简单的理解可能可以是这样:就是将三维物体或三维场景的描述转化为一幅二维图像,生成的二维图像能很好的反应三维物体或三维场景(如图1):
bering
2019/12/02
1.5K0
渲染流程之光栅化阶段及像素处理阶段
把物体的数学描述以及与物体相关的信息转换为屏幕上用于对应位置的像素及用于填充像素的颜色这个过程成为光栅化
小柔
2022/10/09
6710
如何理解 OpenGL 中着色器、渲染管线、光栅化等概念?
在 OpenGL 中,设置好顶点数据,设置好着色器,调用 drawcall 函数,3D 图形就被绘制出来了。
字节流动
2023/09/18
1K0
如何理解 OpenGL 中着色器、渲染管线、光栅化等概念?
Computer Graphics note(3):视图变换 & 光栅化
M变换:https://blog.csdn.net/Enterprise_/article/details/106880754 VP变换:https://blog.csdn.net/Enterprise_/article/details/106934622
Enterprise_
2020/06/29
9440
Computer Graphics note(3):视图变换 & 光栅化
图像多边形填充
算法:图像多边形填充是不仅可以填充凸多边形,而且可以填充任何不具有自相交的单调多边形,即其轮廓与每条水平线(扫描线)的相交最多为两次(最顶部边缘和/或底部边缘水平)。如果图像多边形填充部分或全部位于图像外部,则将对其进行裁剪,还可以处理以亚像素精度指定的像素坐标,意味着可以将坐标作为编码为整数的定点数传递。
裴来凡
2022/05/28
6660
图像多边形填充
相关推荐
模拟试题A
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档