目录 1.坐标空间 1.2 坐标空间的变换 @ 1.坐标空间 我们在以前渲染流水线中就接触了坐标空间的变换.例如,在学习顶点着色器流水线阶段时,我们说过,顶点着色器的最基本功能就是把模型的顶点坐标从模型空间转换到齐次裁剪坐标空间中. 1.2 坐标空间的变换 我们先要为后面的内容做些数学铺垫.在渲染流水线中,我们往往需要把一个点或方向矢量从一个坐标空间转换到另一个坐标空间.这个过程到底是怎么实现的? 我们把问题一般化,我们知道,要想定义一个坐标空间,必须指明其原点的位置和三个坐标轴的方向.而这些数…
1. Unity Shader的内置变量(数学篇) 使用Unity写shader的一个好处在于,它提供了很多内置参数,这使得我们不在需要自己手动算一些值.本文给出Unity内置的用于空间变换和摄像机以及屏幕参数的内置变量.这些内置变量可以在UnityShaderVariables.cginc文件中找到定义和说明. 1.1 变换矩阵 首先是用于坐标空间变换的矩阵.表中给出了Unity5.2版本提供的所有内置变换矩阵.下面的所有矩阵都是float4×4类型的. 上表给出了这些矩阵的常用用法.但读者可…
@[TOC] 1. 顶点的坐标空间变换过程 我们知道,在渲染流水线中,一个顶点要经过多个坐标空间的变换才能最终被画在屏幕上.一个顶点最开始是在模型空间中定义的,它最后会被变换到屏幕空间中,得到真正的屏幕像素坐标.因此接下来我们将解释顶点要进行的各种空间变换的过程. 为了帮助大家理解这个过程,我们将建立在农场游戏的实例背景下,每讲到一种空间变换,我们都会解释如何应用到这个案例中. 在我们的农场游戏中,妞妞很好奇自己是如何渲染到屏幕上的.它只知道自己和一群小伙伴快乐的在农场里吃草,而前面一直有一个摄…
1. 笛卡尔坐标系 在游戏中,我们使用的数学大部分都是为了计算位置.距离和角度等变量.而这些就算大部分是在笛卡尔坐标系下进行的. 1.1 二维笛卡尔坐标系 一个二维笛卡尔坐标系包含了两个部分的信息 1.一个特殊的位置,即原点,他是整个坐标系的中心 2.两条过原点的互相垂直的矢量,即x轴和y轴.这些坐标轴也被称为是该坐标系的基矢量. 虽然在图中x轴和y轴分别是水平方向的和垂直方向的.但这并不是必须的.而且虽然图中的x轴指向右.y轴指向上,但这也不是必须的.如下图所示 1.2 三维笛卡尔坐标系 在三…
法线变换 法线(normal),也被称为法矢量(normal vector).在以前我们已经讲过如何使用变换矩阵来变换一个顶点或方向矢量,但法线是需要我们特殊处理的一种方向矢量.在游戏中,模型的顶点往往会携带额外的信息,而顶点法线就是其中一种信息.当我们变换一个模型的时候,不仅需要变换它的顶点,还需要变换顶点法线,以便在后续处理(如片元着色器)中计算光照等. 一般来说,点和绝大部分方向矢量都可以使用同一个4×4或3×3的变换矩阵Ma->b把其从坐标空间A变换到坐标空间B中.但在变换法线的时候,如…
摘录自 冯乐乐的<Unity Shader入门精要> 笛卡尔坐标系 1)二维笛卡尔坐标系 在游戏制作中,我们使用的数学绝大部分都是计算位置.距离.角度等变量.而这些计算大部分都是在笛卡尔坐标系下进行的. 一个二维的笛卡尔坐标系包含了两个部分的信息: 一个特殊的位置,即原点,它是整个坐标系的中心. 两条过原点的互相垂直的矢量,即X轴和Y轴.这些坐标轴也被称为是该坐标的矢量. OpenGL 和 DirectX 使用了不同的二维笛卡尔坐标系.如下图所示: 2)三维笛卡尔坐标系 在三维笛卡尔坐标系中,…
数学对于计算机图形学的重要性是不言而喻的.在学习Shader之前,首先就要打好数学基础,好在入门Unity Shader所需的数学知识都是线性代数中很基础的的内容.按部就班的来,第一篇文章记录总结的是坐标系,点,矢量等概念以及简单的运算.本文主要源自<Unity Shader入门精要>一书的读书笔记. 如果有小伙伴对Shader着色器相关的概念还不了解的话,可以先看下这篇文章一篇文章搞懂到底什么是渲染流水线 坐标系 在三维笛卡尔坐标系中,我们需要定义3个坐标轴和一个原点.这3个坐标轴被称为该坐…
<ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把列值的第一个字符转为大写 3.comcat(*,*):把列1的值与列2的值连接成一个字符串 4.substr(*,m,n):返回指定的字符串(该字符串第m个字符开始,长度为n) 5.length(*):返回列值的长度 6.instr(*,m,n):返回n字符在列值中的数字位置,m是表示从m个字符开始搜索 7.…
第三章  进程管理 姓名:王玮怡  学号:20135116 一.进程 1.进程的含义 进程是处于执行期的程序以及相关资源的总称,程序本身并不是进程,实际上就是正在执行的代码的实时结果.Linux内核通常把进程也叫“任务”. 2.线程的含义 执行线程简称线程,是在进程中互动的对象.内核调度的对象是线程而不是进程.Linux系统不区分线程和进程,线程只是一种特殊的进程. 3.进程的执行过程 (1)clone()调用fork(),通过复制一个现有进程来创建一个全新的进程,进程开始存活.其中调用fork…
第三章 进程管理 一.进程 1.进程 进程就是处于执行期的程序. 进程就是正在执行的程序代码的实时结果. 进程是处于执行期的程序以及相关的资源的总称. 进程包括代码段和其他资源. 2.线程 执行线程,简称线程,是在进程中活动的对象. 内核调度的对象是线程而不是进程. Linux对线程并不特别区分,视其为特殊的进程. 3.虚拟处理器和虚拟内存 在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存. 包含在同一个进程中的线程可以共享虚拟内存,但是每个都拥有各自的虚拟处理器. 4.几个函数 f…
2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二.三章 ch2 标识符与关键字 基本数据类型: 逻辑类型:boolean 整数类型:int.byte.short.long(注意:long型常量用后缀L来表示:且Java中没有无符号声明) 字符类型:char 浮点类型:float.double(float常量后面必须有后缀f或F ) 类型转换运算 输入.输出数据 数组 ch3 运算符与表达式 if条件分支语句 switch开关语句 循环语句(包括for语句.wh…
第三章是基于对一个windows窗口的学习,来达到对windows程序运行机制的理解. 从语言的角度看消息机制,Windows给程序发消息的本质就是调用"窗口过程"函数. Don't Call Me, I'll Call You! 主动激励,被动响应. /*------------------------------------------------------------ HELLOWIN.C -- Displays "Hello, Windows 98!" i…
第三章:基本的bash shell命令 bash程序使用命令行参数来修改所启动shell的类型 参数 描述 -c string 从string中读取命令并处理他们 -r 启动限制性shell,限制用户在默认目录下活动 -i 启动交互性shell,允许用户输入 -s 从标准输入读取命令 环境变量PS1.PS2 PS1:控制默认命令行提示符格式 PS2:控制后续命令行提示符格式   bash shell提示符字符串中使用的特殊字符 字符 描述 \a 报警字符 \d “日 月 年”格式显示的日期 \e…
第三章 进程管理 进程是Unix操作系统抽象概念中最基本的一种. 进程管理是所有操作系统的心脏所在. 一.进程 1. 进程是处于执行期的程序.除了可执行程序代码,还包括打开的文件.挂起的信号.内核内部数据.一个或者多个执行线程等多种资源 线程是在进程活动中的对象:内核调度的对象是线程而不是进程 在Linux系统中,并不区分线程和进程 可能存在两个或者多个进程执行的是同一个程序:甚至N个进程共享打开的文件.地址空间之类的资源 2. 线程:是进程中活动的对象.每个线程都有一个独立的程序计数器,进程栈…
这一章也是本书基本理论的一章,我对这章后面有些公式看的比较模糊,这一会章涉及线性代数和概率论基础知识,讲了几种经典的线性模型,回归,分类(二分类和多分类)任务. 3.1 基本形式 给定由d个属性描述的示例 x =(x1:x2:… :xd),其中xi是x在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即: f(x) = w1x1 + w2x2 + … + wdxd + b 一般用向量形式写成: f(x) = wTx + b 其中x =(x1…
1. 本周学习总结 1.1 写出你认为本周学习中比较重要的知识点关键词,如类.对象.封装等 关键词:类 对象 封装 构造函数 this,static,final 1.2 用思维导图或者Onenote或其他工具将这些关键词组织起来 2. 书面作业 1.以面向对象方式改造数据结构作业'有理数'(重点) 注意:属性必须修饰为为private 1.1 截图你主要代码(需要在程序中出现你的学号和姓名)并粘贴程序的git地址. git地址 1.2 对比你的代码与历程的代码,说明面向对象编程与面向过程编程有何…
一.进程 1.进程就是处于执行期的程序(目标码存放在某种存储介质上).但进程并不仅仅局限于一段可执行程序代码,通常进程还要包含其他资源.执行线程,简称线程(thread),是在进程中活动的对象. 2.每个线程都拥有一个独立的程序计数器.进程技和一组进程寄存器. 3.内核调度的对象是线程,而不是进程.对Linux 而言,线程是一种特殊的进程. 4.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存. 5.程序本身并不是进程,进程是处于执行期的程序以及相关的资源的总称. 6.Linux 系…
Undefined类型 该类型只有一个值,即undefined. 对未初始化的变量和未定义的变量,用typeof检测,都会返回'undefined' Null类型 该类型只有一个值,null.并且从逻辑角度看,null值表示一个空对象指针,所以typeof null =='object'. 只要意在保存对象的变量还没有真正的保存对象,就应该明确的让该变量保存null值. var a = null; if (a) { a.again = 1; } else { a.again = 2; } //这…
多线程服务器的适用场合与常用编程模型 进程间通信与线程同步; 以最简单规范的方式开发功能正确.线程安全的多线程程序; 多线程服务器是指运行在linux操作系统上的独占式网络应用程序; 不考虑分布式存储, 只考虑分布式计算; 进程与线程 进程(process)是操作系统里最重要的两个概念之一(另一个是文件), 粗略的讲, 一个进程是"内存中正在运行的程序"; 每个进程有自己独立的地址空间(adress space), "在同一个进程"还是"不在同一个进程&q…
换行后的左大括号造成的问题: class FooHolder { def foo() { println("foo was called") } } Scala认为def foo()这行代码定义了一个抽象方法.这是因为它没有捕捉到后面的大括号,认定def foo()是完整的一行语句.当编译时,它认为这是一个洗呢匿名代码块,应该在类构建过程中执行. 解决办法:加一条新的编码规定,要求所有的方法定义使用"="语法. trait FooHolder2{ def foo()…
3.1 类 类在Java语言中是一种最基本的引用数据类型,是组成Java程序的基本要素.具有相同属性(状态)和方法(行为)的一组对象的集合称为类,其内部包括属性和方法两个主要部分. 3.11 类的定义 类是一种引用数据类型,用户必须先定义类,然后用它声明类实例:而简单数据类型由Java系统定义,用户可以直接使用它定义数据,这是类和简单数据类型的区别. 一个类的定义包含两部分:类声明和类体. [类修饰符] class 类名 [extends 父类名] [implements 接口名列表] //类声…
1.浮点数值 虽然小数点前面可以没有整数,但是并不推荐这种写法. 由于保存浮点数值需要的内存空间是保存整数值的两倍,因此ECMAScript会不失时机地将浮点数值转化为整数数值.显然,如果小数点后面没有任何数字,那么这个数值就可以作为整数值来保存.同样,如果浮点数值本身表示的就是一个整数,那么该值也会被转换为整数.例如: var floatNum1 = 1.; //小数点后没有数字——解析为1 var floatNum2 = 10.0;//整数,解析未10 浮点数值的最高精度是17位小数,但在进…
20165205 2017-2018-2 <Java程序设计>第三周学习总结 教材学习内容总结 学习类的概念(类体,成员变量,方法) 学会构造方法(默认和自定义构造方法) 学会创建.使用对象(注意对象引用和实体) 学会同目录下的文件源文件一起使用的方法(同时编译) 学会参数传值 学会对象的组合与复用 学会区别实例变量和类便利 了解方法重载(注意不要出现歧义) 学会使用this关键字 学会使用包 学会import的用法(帮助包的使用) 了解访问权限 了解类封装,对象数组,JRE扩展与jar文件,…
20155229 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 BigDecimal提供有plus().substract().multiply().divide()进行加.减.乘.除等运算. "="与"=="在两大类型系统下的区别: 基本类型:=是将值复制给变量,==是比较两个变量储存的值是否相同: 类类型:=用在指定参考名称参考某个对象,==比较两个参考名是否参考同一对象.(!=是比较两个名称是否没参考同一对象…
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中图片比较模糊,毕竟都是从PDF中截图出来的,有点丢像素,大致能看就行- -,另外还是渣翻,但个人觉的比前两章翻译的稍微进步了那么一点点- -,希望后面几章翻译的越来越溜,就这样) 第三章 扩展你的blog应用 在上一章中我们学习了表单的基础和在你的项目集成第三方的应用.这一章将会覆盖以下内容: 创建…
第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思想  心得: 与以往的各种语言的根本不同的是,它的设计出发点就是为了更能直接的描述问题域中客观存在的事务   一个面向过程的设计思想和面向对象的设计思想的不同的例子 例如:我要去新疆 面向过程:我开车,挂挡,踩油门,到河北....... 面向对象: 我命令去新疆,车怎么去不关我事( 信息封装在车的类…
第三章 bean 的配置 ​ 在本章中,我们将介绍以下内容: bean 定义的继承: 如何解决 bean 类的构造函数的参数: 如何配置原始类型 (如 int .float 等) .集合类型(如 java.util.List.java.util.Map)等以及自定义类型 (如 Address ) 等的 bean 属性和构造函数参数: 如何通过使用 p 命名空间和 c 命名空间分别指定 bean 属性和构造参数来使用应用程序上下文 XML 文件变得简洁: Spring 的 FactoryBean…
python学习心得第三章 1.三元运算 变量=值1 if 条件 else 值2 由图如果条件成立则赋值1给变量,如果条件不成立则赋值2给变量. 2.数据类型 集合:set() class set(object): """ set() -> new empty set object set(iterable) -> new set object Build an unordered collection of unique elements. "&quo…
第三章 C++中的C 3.4.4 指针简介 ‘&’运算符:只要在标识符前加上‘&’,就会得出标识符的地址. C和C++有一个专门存放地址的变量类型.这个变量类型叫做指针(pointer). int* ipa,ipb,ipc;    //只有ipa是指针,ipb和ipc是一般的int 要通过指针访问变量,可以使用以前定义指针使用的同样的运算符来间接引用这个指针 *ipa=100: 3.4.6C++引用简介 C++增加了另外一种给函数传递地址的途径,这就是”按引用传递“(pass-by-ref…
第三章 Git使用入门 使用Git的目的是减少各种版本的Linux的压缩大小,提供源代码在Linux上进行编译. 在这一个章节中,其实就是关键步骤的操作,虽然Git与我们学习的android没有很大的联系,但是在开发环境中也是必不可少的.通过学习这个章节,学习到了安装,查看,提取Git的方法.下面将详细讲述. 一.安装Git 可能大多数Linux上已经安装了Git,如果没有可以用下面的命令. Ubuntu10.04版本以下的有-core与原来的区分, 必须的:apt-get install gi…