哪些企业需要做网站建设wordpress 自定义标题

diannao/2025/10/17 3:56:49/文章来源:
哪些企业需要做网站建设,wordpress 自定义标题,官方网站链接如何做,绍兴seo排名收费将坐标变换为标准化设备坐标#xff0c;接着再转化为屏幕坐标的过程通常是分步进行的#xff0c;也就是类似于流水线那样子。在流水线中#xff0c;物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个过渡坐标系(Inte…将坐标变换为标准化设备坐标接着再转化为屏幕坐标的过程通常是分步进行的也就是类似于流水线那样子。在流水线中物体的顶点在最终转化为屏幕坐标之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个过渡坐标系(Intermediate Coordinate System)的优点在于在这些特定的坐标系统中一些操作或运算更加方便和容易这一点很快就会变得很明显。对我们来说比较重要的总共有5个不同的坐标系统 局部空间(Local Space或者称为物体空间(Object Space))世界空间(World Space)观察空间(View Space或者称为视觉空间(Eye Space))裁剪空间(Clip Space)屏幕空间(Screen Space) 概述 为了将坐标从一个坐标系变换到另一个坐标系我们需要用到几个变换矩阵最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space)在这里它称为局部坐标(Local Coordinate)它在之后会变为世界坐标(World Coordinate)观察坐标(View Coordinate)裁剪坐标(Clip Coordinate)并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个变换过程做了什么 局部坐标是对象相对于局部原点的坐标也是物体起始的坐标。下一步是将局部坐标变换为世界空间坐标世界空间坐标是处于一个更大的空间范围的。这些坐标相对于世界的全局原点它们会和其它物体一起相对于世界的原点进行摆放。接下来我们将世界坐标变换为观察空间坐标使得每个坐标都是从摄像机或者说观察者的角度进行观察的。坐标到达观察空间之后我们需要将其投影到裁剪坐标。裁剪坐标会被处理至-1.0到1.0的范围内并判断哪些顶点将会出现在屏幕上。最后我们将裁剪坐标变换为屏幕坐标我们将使用一个叫做视口变换(Viewport Transform)的过程。视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内。最后变换出来的坐标将会送到光栅器将其转化为片段。 局部空间 局部空间是指物体所在的坐标空间即对象最开始所在的地方。想象你在一个建模软件比如说Blender中创建了一个立方体。你创建的立方体的原点有可能位于(0, 0, 0)即便它有可能最后在程序中处于完全不同的位置。甚至有可能你创建的所有模型都以(0, 0, 0)为初始位置译注然而它们会最终出现在世界的不同位置。所以你的模型的所有顶点都是在局部空间中它们相对于你的物体来说都是局部的。 世界空间 如果我们将我们所有的物体导入到程序当中它们有可能会全挤在世界的原点(0, 0, 0)上这并不是我们想要的结果。我们想为每一个物体定义一个位置从而能在更大的世界当中放置它们。世界空间中的坐标正如其名是指顶点相对于游戏世界的坐标。如果你希望将物体分散在世界上摆放特别是非常真实的那样这就是你希望物体变换到的空间。物体的坐标将会从局部变换到世界空间该变换是由模型矩阵(Model Matrix)实现的。 模型矩阵是一种变换矩阵它能通过对物体进行位移、缩放、旋转来将它置于它本应该在的位置或朝向。你可以将它想像为变换一个房子你需要先将它缩小它在局部空间中太大了并将其位移至郊区的一个小镇然后在y轴上往左旋转一点以搭配附近的房子。你也可以把上一节将箱子到处摆放在场景中用的那个矩阵大致看作一个模型矩阵我们将箱子的局部坐标变换到场景/世界中的不同位置。 观察空间 观察空间经常被人们称之OpenGL的摄像机(Camera)所以有时也称为摄像机空间(Camera Space)或视觉空间(Eye Space)。观察空间是将世界空间坐标转化为用户视野前方的坐标而产生的结果。因此观察空间就是从摄像机的视角所观察到的空间。而这通常是由一系列的位移和旋转的组合来完成平移/旋转场景从而使得特定的对象被变换到摄像机的前方。这些组合在一起的变换通常存储在一个观察矩阵(View Matrix)里它被用来将世界坐标变换到观察空间。在下一节中我们将深入讨论如何创建一个这样的观察矩阵来模拟一个摄像机。 裁剪空间 在一个顶点着色器运行的最后OpenGL期望所有的坐标都能落在一个特定的范围内且任何在这个范围之外的点都应该被裁剪掉(Clipped)。被裁剪掉的坐标就会被忽略所以剩下的坐标就将变为屏幕上可见的片段。这也就是裁剪空间(Clip Space)名字的由来。 因为将所有可见的坐标都指定在-1.0到1.0的范围内不是很直观所以我们会指定自己的坐标集(Coordinate Set)并将它变换回标准化设备坐标系就像OpenGL期望的那样。 为了将顶点坐标从观察变换到裁剪空间我们需要定义一个投影矩阵(Projection Matrix)它指定了一个范围的坐标比如在每个维度上的-1000到1000。投影矩阵接着会将在这个指定的范围内的坐标变换为标准化设备坐标的范围(-1.0, 1.0)。所有在范围外的坐标不会被映射到在-1.0到1.0的范围之间所以会被裁剪掉。在上面这个投影矩阵所指定的范围内坐标(1250, 500, 750)将是不可见的这是由于它的x坐标超出了范围它被转化为一个大于1.0的标准化设备坐标所以被裁剪掉了。 如果只是图元(Primitive)例如三角形的一部分超出了裁剪体积(Clipping Volume)则OpenGL会重新构建这个三角形为一个或多个三角形让其能够适合这个裁剪范围。 由投影矩阵创建的观察箱(Viewing Box)被称为平截头体(Frustum)每个出现在平截头体范围内的坐标都会最终出现在用户的屏幕上。将特定范围内的坐标转化到标准化设备坐标系的过程而且它很容易被映射到2D观察空间坐标被称之为投影(Projection)因为使用投影矩阵能将3D坐标投影(Project)到很容易映射到2D的标准化设备坐标系中。 一旦所有顶点被变换到裁剪空间最终的操作——透视除法(Perspective Division)将会执行在这个过程中我们将位置向量的xyz分量分别除以向量的齐次w分量透视除法是将4D裁剪空间坐标变换为3D标准化设备坐标的过程。这一步会在每一个顶点着色器运行的最后被自动执行。 在这一阶段之后最终的坐标将会被映射到屏幕空间中使用glViewport中的设定并被变换成片段。 将观察坐标变换为裁剪坐标的投影矩阵可以为两种不同的形式每种形式都定义了不同的平截头体。我们可以选择创建一个正射投影矩阵(Orthographic Projection Matrix)或一个透视投影矩阵(Perspective Projection Matrix)。 正射投影 正射投影矩阵定义了一个类似立方体的平截头箱它定义了一个裁剪空间在这空间之外的顶点都会被裁剪掉。创建一个正射投影矩阵需要指定可见平截头体的宽、高和长度。在使用正射投影矩阵变换至裁剪空间之后处于这个平截头体内的所有坐标将不会被裁剪掉。它的平截头体看起来像一个容器 上面的平截头体定义了可见的坐标它由由宽、高、近(Near)平面和远(Far)平面所指定。任何出现在近平面之前或远平面之后的坐标都会被裁剪掉。正射平截头体直接将平截头体内部的所有坐标映射为标准化设备坐标因为每个向量的w分量都没有进行改变如果w分量等于1.0透视除法则不会改变这个坐标。 要创建一个正射投影矩阵我们可以使用GLM的内置函数glm::ortho glm::ortho(0.0f, 800.0f, 0.0f, 600.0f, 0.1f, 100.0f);前两个参数指定了平截头体的左右坐标第三和第四参数指定了平截头体的底部和顶部。通过这四个参数我们定义了近平面和远平面的大小然后第五和第六个参数则定义了近平面和远平面的距离。这个投影矩阵会将处于这些xyz值范围内的坐标变换为标准化设备坐标。 正射投影矩阵直接将坐标映射到2D平面中即你的屏幕但实际上一个直接的投影矩阵会产生不真实的结果因为这个投影没有将透视(Perspective)考虑进去。所以我们需要透视投影矩阵来解决这个问题。 透视投影 如果你曾经体验过实际生活给你带来的景象你就会注意到离你越远的东西看起来更小。这个奇怪的效果称之为透视(Perspective)。透视的效果在我们看一条无限长的高速公路或铁路时尤其明显正如下面图片显示的那样 正如你看到的那样由于透视这两条线在很远的地方看起来会相交。这正是透视投影想要模仿的效果它是使用透视投影矩阵来完成的。这个投影矩阵将给定的平截头体范围映射到裁剪空间除此之外还修改了每个顶点坐标的w值从而使得离观察者越远的顶点坐标w分量越大。被变换到裁剪空间的坐标都会在-w到w的范围之间任何大于这个范围的坐标都会被裁剪掉。OpenGL要求所有可见的坐标都落在-1.0到1.0范围内作为顶点着色器最后的输出因此一旦坐标在裁剪空间内之后透视除法就会被应用到裁剪空间坐标上 顶点坐标的每个分量都会除以它的w分量距离观察者越远顶点坐标就会越小。这是也是w分量非常重要的另一个原因它能够帮助我们进行透视投影。最后的结果坐标就是处于标准化设备空间中的。 在GLM中可以这样创建一个透视投影矩阵 glm::mat4 proj glm::perspective(glm::radians(45.0f), (float)width/(float)height, 0.1f, 100.0f);同样glm::perspective所做的其实就是创建了一个定义了可视空间的大平截头体任何在这个平截头体以外的东西最后都不会出现在裁剪空间体积内并且将会受到裁剪。一个透视平截头体可以被看作一个不均匀形状的箱子在这个箱子内部的每个坐标都会被映射到裁剪空间上的一个点。下面是一张透视平截头体的图片 它的第一个参数定义了fov的值它表示的是视野(Field of View)并且设置了观察空间的大小。如果想要一个真实的观察效果它的值通常设置为45.0f但想要一个末日风格的结果你可以将其设置一个更大的值。第二个参数设置了宽高比由视口的宽除以高所得。第三和第四个参数设置了平截头体的近和远平面。我们通常设置近距离为0.1f而远距离设为100.0f。所有在近平面和远平面内且处于平截头体内的顶点都会被渲染。 当你把透视矩阵的 near 值设置太大时如10.0fOpenGL会将靠近摄像机的坐标在0.0f和10.0f之间都裁剪掉这会导致一个你在游戏中很熟悉的视觉效果在太过靠近一个物体的时候你的视线会直接穿过去。 把它们都组合到一起 我们为上述的每一个步骤都创建了一个变换矩阵模型矩阵、观察矩阵和投影矩阵。一个顶点坐标将会根据以下过程被变换到裁剪坐标 注意矩阵运算的顺序是相反的记住我们需要从右往左阅读矩阵的乘法。最后的顶点应该被赋值到顶点着色器中的gl_PositionOpenGL将会自动进行透视除法和裁剪。 进入3D 既然我们知道了如何将3D坐标变换为2D坐标我们可以开始使用真正的3D物体而不是枯燥的2D平面了。 在开始进行3D绘图时我们首先创建一个模型矩阵。这个模型矩阵包含了位移、缩放与旋转操作它们会被应用到所有物体的顶点上以变换它们到全局的世界空间。让我们变换一下我们的平面将其绕着x轴旋转使它看起来像放在地上一样。这个模型矩阵看起来是这样的 进入3D 既然我们知道了如何将3D坐标变换为2D坐标我们可以开始使用真正的3D物体而不是枯燥的2D平面了。 在开始进行3D绘图时我们首先创建一个模型矩阵。这个模型矩阵包含了位移、缩放与旋转操作它们会被应用到所有物体的顶点上以变换它们到全局的世界空间。让我们变换一下我们的平面将其绕着x轴旋转使它看起来像放在地上一样。这个模型矩阵看起来是这样的 glm::mat4 model; model glm::rotate(model, glm::radians(-55.0f), glm::vec3(1.0f, 0.0f, 0.0f)); 通过将顶点坐标乘以这个模型矩阵我们将该顶点坐标变换到世界坐标。我们的平面看起来就是在地板上代表全局世界里的平面。 接下来我们需要创建一个观察矩阵。我们想要在场景里面稍微往后移动以使得物体变成可见的当在世界空间时我们位于原点(0,0,0)。要想在场景里面移动先仔细想一想下面这个句子 将摄像机向后移动和将整个场景向前移动是一样的。 这正是观察矩阵所做的我们以相反于摄像机移动的方向移动整个场景。因为我们想要往后移动并且OpenGL是一个右手坐标系(Right-handed System)所以我们需要沿着z轴的正方向移动。我们会通过将场景沿着z轴负方向平移来实现。它会给我们一种我们在往后移动的感觉。 在下一个教程中我们将会详细讨论如何在场景中移动。就目前来说观察矩阵是这样的 glm::mat4 view; // 注意我们将矩阵向我们要进行移动场景的反方向移动。 view glm::translate(view, glm::vec3(0.0f, 0.0f, -3.0f));最后我们需要做的是定义一个投影矩阵。我们希望在场景中使用透视投影所以像这样声明一个投影矩阵 glm::mat4 projection; projection glm::perspective(glm::radians(45.0f), screenWidth / screenHeight, 0.1f, 100.0f);既然我们已经创建了变换矩阵我们应该将它们传入着色器。首先让我们在顶点着色器中声明一个uniform变换矩阵然后将它乘以顶点坐标 #version 330 core layout (location 0) in vec3 aPos; ... uniform mat4 model; uniform mat4 view; uniform mat4 projection;void main() {// 注意乘法要从右向左读gl_Position projection * view * model * vec4(aPos, 1.0);... }我们还应该将矩阵传入着色器这通常在每次的渲染迭代中进行因为变换矩阵会经常变动 int modelLoc glGetUniformLocation(ourShader.ID, model)); glUniformMatrix4fv(modelLoc, 1, GL_FALSE, glm::value_ptr(model)); ... // 观察矩阵和投影矩阵与之类似我们的顶点坐标已经使用模型、观察和投影矩阵进行变换了最终的物体应该会 稍微向后倾斜至地板方向。离我们有一些距离。有透视效果顶点越远变得越小。 让我们检查一下结果是否满足这些要求

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连连跨境电商网站开发设计模板网站都有哪些

引言 在考虑生成对抗网络的文献时,Wasserstein GAN 因其与传统 GAN 相比的训练稳定性而成为关键概念之一。在本文中,我将介绍基于梯度惩罚的 WGAN 的概念。文章的结构安排如下: WGAN 背后的直觉;GAN 和 WGAN 的比较;…

张家界做网站公司传统类型的企业网站

tag常被称作里程碑,发版Release时用到。 怎么添加tag? 问 : 刚修改完代码 还未 Commit 可以直接 git tag v2.4.6.1 -m "[Update]更新proxy379ac539"吗? 答: 不可以,git tag 命令是用来给已经存…

企业网站 案例字节跳动员工人数2019

若是大一学子或者是真心想学习刚入门的小伙伴可以私聊我,若你是真心学习可以送你书籍,指导你学习,给予你目标方向的学习路线,无套路,博客为证。 本系列文章将会以通俗易懂的对话方式进行教学,对话中将涵盖…

网站建设费用上海公司做网站的费用如何记账

描述 小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个 n * m 的砖块矩阵。小红会炸 k 次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。 输入描述 第一行输入三个正整数 n, m, k,代表矩阵的行…

网站建设与维护岗位职责南京企业网站做优化

OpenDDS、FastDDS数据分发服务中间件设计 软件架构 应用层DDS层RTPS层传输层 软件层次 FastDDS整体架构如下,这里可以看到DDS和RTPS的关系。另外缺少一部分IDL(统一描述语言),其应该是Pub、Sub的反序列化、序列化工具。 在RT…

旅游网站开发的国内外现状阳江做网站公司

解决方式 当使用自定义组件或者slot标签作为组件A的插槽内容时,在组件A中必须定义一个默认插槽,对普通view等标签无限制。且因为wx:if为false的插槽等同没有定义 场景复现(仅以自己遇到情况为例) 1、调试基础库2.19.4 2、使用w…

个人网站 内容建设四川省住房城乡建设厅官网查询

这里说的日期是指字符串的日期格式,如“2014-10-15”,我们要推断这个日期是否在今天之前,网上看到好多推断的方法,都是拿这个日期转换成Date对象 然后与new Date()比較,使用comparetTo() 或者before()方法&#xff0c…

大型美容网站建设动态图表制作方法

ES6是JavaScript语言的新一代标准,是ECMAScript的第六个版本,加入了很多新的功能和语法,在很多框架,如在使用Vue,React等框架的项目中一般都采用ES6语法来编写的,下面对经常用到的ES6语法做简要的介绍。 1.let,const l…

国外社交网站设计欣赏高端ppt制作

之前的一段时间让我意识到,零碎的知识记录和发布对自己的学习和掌握来说意义不大,如果不能从基础知识开始建立生动的原理,发布这些博客只是让自己成为一个无情的背诵者。另外更可悲的一点是,会让自己误认为学会了自己发布的内容。…

怎么自己做网站推广百度站长工具平台登录

简介 主芯片STM32F103ZET6,读取内部温度其他知识 内部温度所在ADC通道 温度计算公式 V25跟Avg_Slope值 参考文档 stm32f103ze.pdf 电压计算公式 Vout Vref * (D / 2^n) 其中Vref代表参考电压, n为ADC的位数, D为ADC输入的数字信号。 实现…

做如美团式网站要多少钱平台网站开发价格

组织机构 部门 部门可以创建下级部门部门可以设置部门主管,可以是多人部门可以默认构建,沟通群可以设置部门信息,比如电话、简介可以设置部门的可见性,比如隐藏本部门,本部门将不会在组织机构、搜索,个人…

做网站asp和asp.net有没有专门做布料的网站

前言 在C语言中,当我们定义了一个结构体时,通常需要编写一个函数来初始化它,否则在创建结构体变量时容易忘记调用初始化函数,导致程序出错。但在C中,我们将不会有这样的烦恼,前提是编写了正确的构造函数。…

做网站推销好做吗编程网址

FDTD2018a安装问题记录 目录问题解决方案 目录 问题 解决方案 电脑名字如果是中文改成英文

宏大建设集团有限公司网站人事怎么做招聘网站比对分析

转载自 对Java的URL类支持的协议进行扩展的方法JAVA默认提供了对file,ftp,gopher,http,https,jar,mailto,netdoc协议的支持。当我们要利用这些协议来创建应用时,主要会涉及到如下几个类:java.net.URL、java.net.URLConnection、InputStream。URL类默认…

接单做网站wordpress后台管理插件

计算机内存原理 要说递归和栈的问题,首先就要说下计算机内存的基本原理。简单理解计算机内存原理可以将一台电脑看作超市的存包柜,每个柜子都有柜号(即计算机中的地址,如0x000000f)。当需要将数据存储到计算机中时&…

怎么在网上查网站空间是双线还是单线嘉兴网站建设方案策划

目录 ​​​​​​​一、文件和目录(II) 1、文件 2、目录 二、文件存取方法、存取控制(II) 1、文件存取方法 2、文件的访问 3、文件控制 三、常见嵌入式文件系统(I) 一、文件和目录(I…

可以做书的网站贷款网站建设

转载链接:http://www.jb51.net/css/72443.html 用css3的animation完成一个动画,当只有这个动画完成时才执行令一个事件,比如让动画保持在终止的状态或其他一些事件。我们该怎么办呢。 第一种方法: 用计时器,设定一个…

免费域名注册网站有哪些网站建设分享

下载Windows Live Writer整体安装包,最好是离线安装包 2.在xp系统上安装 3.查找C:\Program Files\Common Files\Windows Live\.cache目录 .cache目录是隐藏的,目录下面就是各个安装文件的msi安装包 4.拷贝相应的msi文件,到Windows 2003安装就…

茂名优化网站建设家装网站

前言 近日,艾伦人工智能研究所联合多个顶尖学术机构发布了史上首个100%开源的大模型“OLMo”,这一举措被认为是AI开源社区的一大里程碑。OLMo不仅公开了模型权重,还包括了完整的训练代码、数据集和训练过程,为后续的开源工作设立…

科技有限公司可以做网站建设吗媒体代发网站

文章目录 一、目标:容器事件和事件监听器二、设计:容器事件和事件监听器三、实现:容器事件和事件监听器3.1 工程结构3.2 容器事件和事件监听器类图3.3 定义和实现事件3.3.1 定义事件抽象类3.3.2 定义应用上下文事件实现类3.3.3 上下文刷新事件…