2020-06-30 09:14:38
这一篇我们来聊一下光线反射的基础计算,看过点叉积篇的小伙伴们肯定注意到底下有一句话,就是“为了以后的光线反射reflect计算”,这里我们就别以后以后了,现在就动起来。光线反射是一个非常重要的概念,或者说常识,这里我们来聊一下真实世界。现实世界中,我们眼睛之所以看到各种各样的物体,其原因就是太阳发出的光线照射到地球上,然后经过反射后进入人的眼睛,人的眼睛接收到光子后在视网膜上成像,然后通过生物信号...
2020-06-30 09:09:37
国庆放假前写一篇,搞不好整个国庆没得机会写了,在几何开发中,点与凸多边形的关系判断属于很常见的,比如射线与平面相交,判断交点是否在若干顶点组成的多边形中。 和之前判断点在三角形中类似,先来一张点与多边形关系示意图,如下: ①很容易就看的出来,五个夹角之和等于360°,②可以看得出来∠BPC=其他四角之和,除非∠BPC在线段BC上,不然小于180°,则五夹角之和小于360°。...
2020-06-30 09:07:07
判断点在三角形内部,属于三维开发中很常用的一种算法,之前搞忘记说了,前面我们判断射线与平面,如果再加上判断交点是否在三角形内的计算就更好了。 好,假设我们有个三角形,和三角形所在平面的一个点,那么怎么判断点与三角形的关系,先来个示意图,如下:可以看的出来,如果点P在三角形内部,那么P与三角形ABC组成的六个夹角之和为180°(三角形内角和180°),如果在三角形外部,则不然。...
2020-06-30 09:03:42
射线与平面的检测属于三维空间典型的检测算法之一,属于三维中基础实用一通百通的技术之一。 之前我们在空间点与平面中已经大致了解了其中的概念和原理,不清楚的可以先回过去看下,空间表示法A*x+B*y+C*z+D = 0,射线表示法为start + n*dir(起点+模长*朝向),那么射线与平面检测,就是解方程组就好了,还是画个图方便理解,如下:程序设计思路也简单,首先使用叉积计算出平面单位...
2020-06-30 08:59:47
在三维图形问题中,点和直线计算是很常见的,比如,已知三维空间中一条直线和任意非直线上的点,求点到直线的垂线(或垂点),这个问题比较典型,基本上就属于一系列三维空间点与直线关系的代表。 首先如下图:学到现在的几何向量,一眼就看得出来,只需要根据向量PC1与向量PV的点积等于0,得到方程组就可以最终计算出P点坐标了。首先我们确定三维空间中P点表示法,使用C1 + n*dir的形式,其中C1为起...
2020-06-30 08:57:13
最近又回顾了一遍叉积,概念我们应该了解,几何上就是向量a和b,那么向量a和b的叉积得到向量c,向量c与向量a和b相互垂直,也就是说向量c垂直于向量a和b所在的平面,同时向量c的模长等于向量a和b组成的平行四边形的面积。 物理上叉积的意义就是力矩的意义。 这里回顾一下以前写的叉积篇:叉积 实际上有个重要的问题以前忽视掉了,那就是unity左手坐标系中的叉积计算遵循左...
2020-06-30 08:50:07
最近又跑去温习基础数序去了,没办法,人对某个事物的永久记忆是七次理解才能达成,所以抽空写一些常用的数学计算。 在二维和三维开发中,计算向量之间夹角属于很常见的操作,在数学中我们可以使用下面: 1.余弦定理,如果我们知道三边的情况下,使用余弦定理可以计算出任意角的角度,如图: 2.点乘(点积),我们可以通过点乘(点积)推导出: a·b...
2020-06-30 08:45:55
三维引擎中Camera类带有一系列几何函数,这里我们看一下unity中这两个Camera提供的几何函数的意义和实现: 1.ScreenToViewportPoint 顾名思义就是屏幕坐标转视口坐标,在渲染流程中,建模->世界->视口->裁剪->视图得到屏幕坐标系中坐标数值,那么阶段性反过来从屏幕到视口的坐标变换也好理解,屏幕的左下角(0,0)到右...
2020-06-30 08:36:11
这一篇是几何向量的扩展篇之一,因为后面要讲到的CG技术需要这一篇的数学基础,所以额外开一篇进行讲解。 这次我们就观察学习二维中点与直线的重要关系,垂线或者说图形学中的法线,因为这和后续的反射向量、光追计算、镜面计算等有很大依赖关系,比如说我们有一个顶点P处于一块二维镜面前,求这个顶点P在二维镜面中的倒影顶点P',这就需要求出顶点P到镜面所处的直线L的垂线及距离了,如下图: 首先...