光栅

【转】光栅化操作阶段

被刻印的时光 ゝ 提交于 2020-03-06 11:41:48
1.从顶点处理进入硬件处理阶段,在这里,先将顶点组装成图元,再将各个图元光栅化为片元集合。 2.光栅化过程:剪裁操作、透视除法、背面剔除操作、视口转换已经扫描转换。 3.剪裁操作:三角形与视椎体空间关系三种。 4.透视除法:投影转换生成齐次剪裁空间内的顶点。各顶点初一自身的w坐标后将齐次坐标转换成笛卡尔坐标,该过程将生成透视效果,因此成为透视除法。就是Mproj矩阵跟所有顶点相乘。 5.背面剔除:相机与该顶点的v和该顶点的法线n的点积。n.v=|||n|||v||cos@>0 ; n.v<0; n.v=0; OpenGL和Direct3D都提供了函数来完成背面剔除操作。 6.3dsMax至OpenGL:翻转坐标轴 OpenGL至Direct3D:反射,顶点重排列 7.视口转换:即定义了左上角的x,y,长宽w,h,z的maxz ,minz 8.扫描转换:处理顶点属性(法线、纹理坐标、颜色值),两个顶点颜色插值计算出其他像素的颜色(左上原则) 来自: http://blog.sina.com.cn/s/blog_aa5f606d0102w0bl.html 来源: https://www.cnblogs.com/timeObjserver/p/12425173.html

光栅图形学——直线段的扫描转换算法

馋奶兔 提交于 2020-02-20 04:42:51
数学上的直线是没有宽度、由无数个点构成的集合,显然,光栅显示器只能近地似显示直线。当我们对直线进行光栅化时,需要在显示器有限个象素中,确定最佳逼近该直线的一组象素,并且按扫描线顺序,对这些象素进行写操作,这个过程称为用显示器绘制直线或 直线的扫描转换 。 一、数值微分(DDA)算法 1、算法原理 根据直线方程y=kx+b,由两个直线的端点(x0,y)(x1y1)可求得斜率k。可以将变量x设定初值为x0,y初值y0。每次x步进1,同时使y步进k,可获得表示直线的所有近似的结果集。 2、算法实现 //数值微分法 void DrawLine(CDC * pDC,int x0,int y0,int x1,int y1,COLORREF color) { int x; float y,k; k = (float)(y1-y0)/(x1-x0); y = (float)y0; for (x=x0;x<x1;x++) //每次x步进1 { y += k; //每次y增量为k pDC->SetPixel(x, (int)(y+0.5), color); //每次对y的值四舍五入 } } 3、补充 这个算法只适合|k|<=1的情况。在|k|>1时,必须交换x和y的位置,y每增加1,x增加1/k。 在这个算法中,y和k必须用浮点数来表示,每一步都要对y进行四舍五入后取整,不利于机器实现 二、中点划线法

CG-光栅图形学直线扫描转换算法-学习笔记

佐手、 提交于 2020-02-20 04:41:29
一、直线扫描转换算法——DDA画线算法 备注:DDA(Digital Differential Analyzer) ---> 数值微分法 1. 引进图形学中的一个很重要的思想——增量思想 2. 算法原理 采用直线的斜截式方程进行推理,坐标系为光栅像素坐标系,可用坐标仅为整数坐标点。 y i = kx i + b y i+1 = kx i+1 + b = k (x i + 1) + b = kx i + k + b = kx i + b + k = y i + k 由以上两式得: y i+1 = y i + k (当前步的Y值等于前一步的Y值加上斜率) 目的:将原来的 乘法和加法变成了一个加法 ! 3. 示例 用DDA扫描转换连接两点P 0 (0,0)和P 1 (5,3)的直线段 1° 计算斜率 k = 0.6 < 1 2° 根据公式 y i+1 = y i + k 计算趋近的像素坐标点: 【注意】此处Y加上0.5是做了四舍五入的处理,减少误差! 二、直线扫描转换算法——中点画线算法 改进: 将DDA中的浮点运算变成整数加法 ! 1. 引入直线的一般式方程: F(x,y)= 0 ----> Ax + By + C = 0 其中: A = -(∆y);B = (∆x);C = -B( ∆x ); 2. 基本数学知识: 1° 对于直线上的点: F(x,y)= 0 2° 对于直线上方的点:

光栅图形学(二):圆弧的扫描转换算法

◇◆丶佛笑我妖孽 提交于 2020-02-20 04:38:40
圆的特征   圆被定义为给定中心位置(x p ,y p )的距离为 r 的点集。圆心位于原点的圆有4条对称轴。 x=0 x=y x=-y y=0   若已知圆弧上一点(x,y),可以得到其关于4条对称轴的其他7个点,这种性质被称为 八对称性 。   因此只要扫描转换1/8圆弧,就可以用八对称性求出整个圆弧的像素集。 中点画圆法   构造函数 F(x,y) = x 2 + y 2 - R 2 ,如果点在圆内,F<0;否则,F > 0。   对于初始点(x p ,y p ),需要考虑的是中点 M(x p +1,y p -0.5),即 F(M)=(x p +1) 2 +(y p -0.5) 2 - R 2 。(给定点 [0, r],则 d=1.25-r)   (1)若 d<0, 即中点在圆内,目标点在在上半格,而且下一个判别式 d1=F(x p +2, y p -0.5)= d+2x p +3。   (2)若 d>0, 即中点在圆外,目标点在下半格,而且下一个判别式 d2 = F(x p +2, y p -1.5)= d+2(x p- y p )+5。 1 // 伪代码 2 void MidPointCircle(int r) { 3 int x, y; 4 float d; 5 x = 0; y = r; 6 d = 1.25 - r; 7 draw(x, y); 8 while (x

图形渲染管线简介

元气小坏坏 提交于 2020-02-14 13:58:34
The Graphics Rendering Pipeline 渲染管线,这章主要讲光栅化渲染管线。 毕业前实习时,也实现过一个简单的软光栅化渲染管线,再复习一下。 在计算机图形学领域,shading指基于表面相对灯光的角度、距灯光的距离、相对于相机的角度和材质的属性等来修改物体/表面/多边形的颜色,进而创造一个具有真实感效果的过程。 In computer graphics, shading refers to the process of altering the color of an object/surface/polygon in the 3D scene, based on things like (but not limited to) the surface's angle to lights, its distance from lights, its angle to the camera and material properties (e.g. bidirectional reflectance distribution function) to create a photorealistic effect. Shading is performed during the rendering process by a program called a

500线电机光电码盘

余生长醉 提交于 2020-02-02 02:11:28
^500线光电测速码盘 | 包括有圆形光栅和测量电路板^ None 车模竞赛中对于车速的控制至关重要,特别对于今年信标组中H车模尤其如此。但对H车模上四个电机如何进行方便的测速就成了一个很大的问题。在推文“ ”,介绍了车模提供商在电机同轴上增加HALL传感器获得电机转速的方案,但该方案不能够满足对于速度精度的要求。今天,H车模提供商发送过来四个500线光电码盘样品进行测试,看是否满足竞赛要求,据说每套光电码盘组件价格在50元左右。 赛璐璐光栅 这种光电码盘的核心是硬质透明塑料(Polycarbonate:聚碳酸酯)光栅,每周印制了500条黑线。配合专用的光栅读取传感器,可以获得码盘转动的角度。 下图显示了在高倍放大镜显示的码盘光栅图案。相比于普通的金属码盘中的镂空光栅,这种码盘光栅是通过特殊工艺在聚碳酸酯透明薄片表面刻画上中心辐射分布光栅,光栅更加密集和均匀,成本更低。 ^高倍放大后的光栅 | 左图中包括有配套的电路板^ 为了能够固定在电机转子轴上,码盘光栅粘在一个中空金属圆柱体上。在侧面钻有两个用于固定螺丝孔,使用销钉螺栓可以将金属圆柱体锁定在电机输出轴上。 使用内六角螺栓可以将金属圆柱体固定在电机转子轴上 下面是配套的测量电路板。其中包括有光栅传感器,可以检测到光栅转动的线数。通过两路正交脉冲输出,可以表明光栅旋转的方向。 在电路板直径上包括有两个电机引脚焊接孔

双轮摩托车模安装测试

天大地大妈咪最大 提交于 2020-02-01 18:53:01
前天收到智能车竞赛车模供应商送过来的电动摩托车模的样品,计划近期进行测试它的特性。 电动摩托车模外观 这款车模运动包括前后两个车模。前轮为被动轮,后轮是动力驱动轮,由小型直流有刷电机通过定时皮带轮驱动。 前轮固定在前车叉,通过两个平行杆车体中的舵机输出转向杆相连。舵机控制前轮的方向。 相比于前一款电动摩托车膜,这款车膜没有增加平衡动量轮,所以整体车模非常轻盈。但该车模只能维持运动平衡,无法保持静态平衡。 电动摩托车膜外观 小型直流电机通过定时皮带轮驱动后轮。为了保证皮带轮有一定的张力,在皮带的中间有一个螺栓外套一个滚筒压住皮带轮。这使得皮带轮与轴承之间存在着很大的摩擦力。 在电机上施加3~6V的电压,后轮被拖动转动。由于摩擦力的存在,在空转的时候,电机工作电流在2A左右。当电压小于3V时,静态摩擦力使得电机无法转动。这会对后面进行速度控制造成一定的困难,应该需要进行改进。 驱动电机通电后转动 为了对后轮进行速度控制,车模对于小型电机配有512线的光电编码盘散件。散件包括有光电码盘电路、光栅、引线、保护塑料壳以及固定工具配件。 这个光电编码盘可以直接固定在驱动电机的后端引线上。 512线光电编码盘散件 光电编码盘通过两个焊盘与电机后端引线焊接。驱动电机电压通过统一的“外部接口”与控制电路板相连。焊接后,电机引线也为电路板提供支持。 外部接口包括六根线:左右两个是电机驱动引线

高性能Web动画和渲染原理系列(4)“Compositor-Pipeline演讲PPT”学习摘要【华为云技术分享】

ぐ巨炮叔叔 提交于 2020-01-22 19:24:41
【摘要】 学习chromium对合成层的处理 示例代码托管在: http://www.github.com/dashnowords/blogs 博客园地址: 《大史住在大前端》原创博文目录 附件PPT来自chromium官方网站开发文档。术语里的cc指的是Chromium Compositor 一直以来都想了解浏览器合成层的运作机制,但是相关的中文资料大多比较关注框架和开发技术,这方面的资料实在是太少了,后来在chromium官方网站的文档里找到了项目组成员malaykeshav在 2019年4月的一份关于浏览器合成流水线的演讲PPT,个人感觉里面讲的非常清楚了,由于没有找到视频,有些部分只能自行理解,本文仅对关键信息做一些笔记,对此感兴趣的读者可以在文章开头的github仓库或附件中拿到这个PPT自行学习。 摘要 1.合成流水线 合成流水线,就是指浏览器处理合成层的工作流程,其基本步骤如下: 大致的流程就是说Paint环节会生成一个列表,列表里登记了页面元素的绘制指令,接着这个列表需要经过Raster光栅化处理,并在合成帧中处理纹理,最后的Draw环节才是将这些纹理图展示在浏览器内容区。 2. 预定义UI层 chromium中预定义了一些指定类型的UI层,大致分为: Not Drawn - 为了处理透明度或滤镜效果、transform变形或者clip剪裁的非绘制层 Solid

阵列波导光栅(AWG)的工作原理

大憨熊 提交于 2019-12-27 19:21:24
AWG是Arrayed Waveguide Grating阵列波导光栅,是密集波分复用系统(DWDM)中的首选技术。AWG是一种平面波导器件,是利用PLC技术在芯片衬底上制作的阵列波导光栅。与FBG和TTF相比,AWG具有集成度高、通道数目多、插入损耗小、易于批量自动化生产等优点。 AWG的工作原理,可以从凹面光栅来分析。凹面光栅结构如图1所示,光栅的槽面分布在一个半径为R=2r的大圆上,在光栅前面存在一个小圆,其半径r是大圆的一半,这个小圆称为罗兰圆。凹面光栅兼有传统光栅和透镜两种功能,从罗兰圆上任意一点P1发出的光束,经凹面光栅衍射之后,必定聚焦在罗兰圆上另一点P2。衍射角θ与入射角α之间满足关系式(1)。 根据式(1),衍射角θ是波长相关的。当一束复色光波从P1点发出,经凹面光栅衍射之后,不同波长将会聚焦在罗兰圆上的不同位置(P2点附近)。 图1. 凹面光栅的衍射 输入/输出星形耦合器具有类似凹面光栅的结构,图2是输出星形耦合器的结构,阵列波导的端口都分布在一个直径为R=2r的大圆上,而输出波导的端口都分布在一个半径为r的小圆(罗兰圆)上。输入星形耦合器的结构与星形耦合器类似,差别仅在于数十根输出波导被一根输入波导替代,输入波导的端口位于输出波导的中心位置C。 图2. 输出星形耦合器的结构 凹面光栅与星形耦合器之间的类比,如图3所示。在凹面光栅中,复色光束从罗兰圆上的一点发出