这条高中向量坐标运算公式总结的数学公式是不是错的?我哪里理解错了?

”图形学很大程度上就直接把数学表达式转换成代码,数学表达越清晰,对应代码就越容易理解“写在前面:
记得自己第一次看流水线时,啥都不懂给每个没听过的名词都加了注但也还是蒙在壶里QAQ,把流水线放在第一篇的目的不是为了吃透,而是作为一个框架,以后学习的知识都与这个过程息息相关。能吃透最好,不理解也没关系,但阶段基本任务顺序和概念的名字就算一点也不懂也一定要狠狠地记下!!!狠狠地记下!!!狠狠地记下!!!
第二章原意是准备更庄老师的课(自己更文前也看了1/4了),但想了想,自己直面高数恐惧才是必要的。这东西一旦往下学,根本逃不掉,只会越学越懵逼(没错我已经经历一次了qwq)。毕竟第一次看百人就是在这里给寄掉的!!!(太没用了死于MVP矩阵)其实现在想来,好好自己梳理一下,也不能算难,还是能处的。这两章数学基础,我会尽可能的在哪里寄掉在哪里爬起来,确保自己能学透,质朴的理解就好了,毕竟对于我来讲,数学只是达到理解渲染的工具,只要这个工具能使,就足够了,优化这种东西就交给会花里胡哨一个题100种解法的大神们研究吧!(苦苦地寻找大腿ing×)好!收住!开整!高中数学回顾集合与映射函数基础对于后面看编程基础前期比较有用,自己上学期磕了一点C#表示,类,对象,结构相关联系非常大对数与解二次方程这一块的推导不会多说,高中基础,暂且码公式高中解方程中,D为△,那个判断根的图相关就不放出了,过于基础了。三角值得一提的是奇变偶不变,符号看象限毕达哥拉斯公式,以前做选择题用过一些,注明下sec:正割
sec=1/coscot:余切。 cot=cos/sin(tan倒数)csc:余割
csc=1/sin高中基础,暂且码公式。(角相关度数转换弧度数(弧度=π/180°),勾股定理就不在说了)向量基础定义向量即有方向(可以是原点任意方向),有长度(可为0)的量,向量也称矢量(回忆高中求角,边长,汽车追尾问题阵痛PTSD……,嗯回忆起来,基础的,相反向量/平行向量/零向量就不太过多讲了)速度即矢量:向东30km/h,通俗的讲:”→“长这样的都叫向量点与向量的区别
点:无大小,方向。但有固定位置。向量:有大小,方向。但无固定位置。零向量(矢量每个方向的分量为0):大小为0,任意方向,无固定位置,不可被归一化。表示没有位移。简单运算由平行四边形法,三角形定则,和2D坐标系(没画,高中绝对推导过,这里就默认会了)则可知:单位矢量是指那些模长为1的矢量,也被称为归一化矢量(normalized vector)。对于任何非零矢量,把它转换为单位矢量的过程被叫做归一化(normalization)点积(dot):向量相乘最简单的方式:点积满足的一些乘法定律高中学的时候,它的名字是点乘,几何意义就是用来算投影的。用法:经典知二求三(已知两个量便可求第三个量)这里稍微升级一下接着下面的新内容做一些补充:在图形学中的运用:1.已知夹角分解向量,算投影的方式,将比如说是将一个二维向量分解成两个互相垂直的向量2.通过向量和夹角能得到关于一个前与后的信息(详解《games101》)3.通过计算向量夹角,判断向量是否接近(cos值(三角函数图像),正值说明二者接近,小于90度,负值反之)向量运算补充兰伯特光照——点积的其中一个运用Lambert光照模型主要是用来模拟粗糙物体表面的光照现象Lambert光照模型属于经验模型,(这里没有考虑光照的衰减)漫反射的基本特点有两点:(1)反射强度与观察者的角度没有关系;(2)反射强度与光线的入射角度有关系。我们从高中学习了解到点乘用来算投影的方法,但我们当时能计算的是:假设平行光(太阳光)照射在向量上,有正投影,有夹角。试着想像一下,若平行光不是照射向量,而是照射在我们制作的物体表面,那么制作的模型的法线会与光方向产生夹角,又因为常识可知,之所以能看见物体是因为物体反射了光。好了,现在我们知道了入射角(通过点乘,且已知归一化的法线和光向量),常识可知反射角等于入射角。诶,有光了,物体是不是会被照亮,我们能看得见把,会是什么样子???收看庄老师小课堂AP01后半部分,shaderforge连一连~Lamebert=Dot(Normal Dir. ,Light Dir.)(这里的光方向是指光的反方向,图形学约定俗成使用劣弧)代码版,目前绝对能懂的:(dot应该是能认识了!好!)写兰伯特,这里把负值去掉啦(因为负值没多大用,照不到光的地方死黑也就是0了)半兰伯特则是在兰伯特基础上*0.5+0.5叉积最开始我自己牵强的记忆方法:点积cos换sin,然后掏出右手糊弄糊弄,好了,可以跳过了(不是)。确信叉积还是蛮有用的(虽然自己目前涉及不深。)但因为第一次看的时候被狠狠地难住了5min。(没错总有些人比如说我就是左右不分……)所以会稍微啰嗦几句。由闫佬的PPT可知(看图),定义向量a与向量b叉乘,我们会得到一个垂直于a,b平面的新向量(黄色的那条)。新向量的模长为原a,b向量模长乘以其原夹角的sin值这里值得注意的是:向量点积得到数(标量),而向量叉积得到新向量(大小和方向)。那么,目前我们知道向量是有大小和方向的,叉积得到的新向量模长是可以求的(见上图),又知道这个新向量是垂直于原来两个向量所在平面的,但光知道垂直是不够的,我们需要知道方向(是朝上还是朝下垂直?)这个时候我们需要引入右手螺旋定则来判定方向:直接戳了一下games101,顺带一提闫大讲课的表情包真的非常好用×右手螺旋定则:掏出神の右手,四指围绕方向代表向量叉乘的方向(向量a叉乘向量b,即a指向b的方向)大拇指的指向代表叉乘得到的新向量的方向
(可以回想一下高中判断电流磁场时的感觉,有些类似)叉积的运用1.给定两轴,可以得到第三个轴,从而建立三维空间下的坐标系(右手螺旋定则)左边部分,如果对右手螺旋定则不熟悉,画个轴自己拿出手比划比划由右手螺旋定则可知,叉乘不满足乘法交换律,结合律,但满足 反交换律(交换后得到的新向量方向相反)相同向量叉积得到的结果是零向量(因为此时sin值0新向量模长为0)结合笛卡尔坐标系食用叉乘2.在坐标系下,借助两个向量叉乘得到的新向量方向(z值的正负,右手螺旋定则),来判定两个向量的的相对位置(左/右)3.判断点是否在某个图形的内/外(图中三角形,叉乘,某一点是否一直在同一边)判断内外这一条几何意义的运用和光栅化(判断点是否在三角形内等)息息相关coner case:得出为0的边界情况,怎么判断覆盖一般是自己说了算……坐标系上一章,非常粗糙(因为大部分是背下来梳理的)的介绍了空间转换,这里稍微一点点细化一下,具体变换讲解得放到矩阵后面。(得看懂了来才能放自己专栏输出qwq)详细解释见3D数学基础*科普是C#里面的一些东西,尘封已久的笔记……变量......故名思意,会变化的量,不变的即常量变量关系到数据的存储,数据可以放在变量中,更具需要可从变量中取出数据进行查看变量有不同的内涵,则称为类型,不同类型的变量要用不同的方法来处理。使用变量之前需要先声明变量,即给变量指定名称和类型。声明变量后,就可以把他们作为存储单元,存储所声明数据类型的数据。语法:<type> <name>;
//以声明一个int类型的变量并赋值为例
int int1=6;简单类型即组成应用程序中基本构件的类型以下为常见简单类型表一般目前我写过的,用int类型比较多float和double常用都有int包含的范围没有float广使用float范围的值时,后面要加f(0.354f)与double值区分开string的字符串数量是没有上线的,因为它可以使用可变大小的内存字符串是引用类型,以上所提其他类型是值类型,所以字符串也可以被赋予null值表达式简介C#包含许多执行这类处理的运算符。把变量和字面值(在使用运算符时,它们都称为操作数)与运算符组合起来,就可以创建表达式,它是计算的基本构件运算符大致分为如下3类:一元运算符,处理一个操作数。二元运算符,处理两个操作数。三元运算符,处理三个操作数。数学运算符半兰伯特,*0.5+0.5,运算符号后续更庄老师的课会提到哦!int i=1,a=++i+++i
没错非常欠揍且无语的写法,a=6(有的编译器是5),特别无聊的可以去搜一搜。注意:自增与自减(++a与a++)=++a //(此时先a自增1,再赋值给左边)
=a++ //(此时先赋值,再自增1)
a+=3 即a=a+3
a-=3 即a=a-3参考资料:百人计划GAMES101第二课前半部分庄老师的课AP01后半部分《Unityshader入门精要》第四章《计算机图形学》(美国)Peter.Shirley.《3D数学基础:图形与开发》《C#入门经典》第三章(建议看到这篇文的纯粹0基础编程连电脑都没怎么玩过的,先玩电脑,熟悉DCC,再b站看一下siki免费的课,再考虑看专栏,自动省略二进制相关过于基础的东西了)(所有我目前找的参考书都在may佬和庄佬群里面都有PDF)}

我要回帖

更多关于 向量坐标运算公式总结 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信