![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
3D数学
aa20274270
这个作者很懒,什么都没留下…
展开
-
calculate a point in triangle
1. 公式 pT= a * pA + b * pB + c * pC(0 2. 化简: pT= (1 - b - c) * pA + b * pB + c * pC => pT= (1 - b - c) * pA + b * pB + c * pC => pT= pA + b * (pB - pA) + c * (pC - pA)=> b * (pB原创 2016-05-27 01:01:28 · 444 阅读 · 0 评论 -
深入探索透视纹理映射
1.推出了投影之后的x’和原始z之间的关系——x’和1/z是线性关系,y’和1/z也是线形关系。 上图是在相机空间的俯视图,eye是眼睛的位置,也就是原点。np和fp分别是近、远裁剪平面,N和F分别是z=0到两个裁剪平面的距离。pq是一个三角形pqr在xy平面上的两个点,p的坐标为(x, y, z),p’是p投影之后的点,坐标为(x’, y转载 2016-07-21 23:48:28 · 818 阅读 · 0 评论 -
OpenGL Projection Matrix
来源:http://www.songho.ca/opengl/gl_projectionmatrix.htmlOpenGL Projection MatrixOverviewA computer monitor is a 2D surface. A 3D scene rendered by OpenGL must be projected onto the computer scree转载 2016-08-08 14:41:24 · 486 阅读 · 0 评论 -
透视投影详解(Dx 透视投影推导)
概述投影变换完成的是如何将三维模型显示到二维视口上,这是一个三维到二维的过程。你可以将投影变换看作是调整照相机的焦距,它模拟了为照相机选择镜头的过程。投影变换是所有变换中最复杂的一个。视锥体视锥体是一个三维体,他的位置和摄像机相关,视锥体的形状决定了模型如何从camera space投影到屏幕上。最常见的投影类型-透视投影,使得离摄像机近的物体投影后较大,而离摄像机较远的物体投影后转载 2017-03-25 23:52:55 · 1996 阅读 · 0 评论 -
推导相机变换矩阵
参考 推导相机变换矩阵 : http://blog.csdn.net/popy007/article/details/5120158在上面的文章中,了解到坐标转换公式。具体的公式: P = MA * PA = MB * PB (其中 MA 是一个矩阵,代表一个坐标系,MB也是一个矩阵,代表一个坐标系,那么PA,PB就是各自坐标系的点)开始推导:1.原创 2017-03-26 13:27:34 · 1069 阅读 · 0 评论 -
Partial Derivatives(偏导数)
主要是记录下 偏导数的一些重要的性质:原创 2017-04-13 16:00:36 · 2477 阅读 · 0 评论 -
Use Partial Derivatives To Calculate Triangle Vertex Tangent (利用偏导数计算三角形的顶点切线)
Muli3D Calculate vertex tangent> : http://blog.csdn.net/aa20274270/article/details/68945012 给出来一种方法来计算顶点的切线,下面用另一种方法来计算顶点的切线,主要参考pbrt的。下面给出过程:注意:1. 有关公式参考 http://blog.原创 2017-04-13 16:28:18 · 948 阅读 · 0 评论 -
为什么不在投影除法后裁剪
在齐次空间对顶点和线裁剪是如今图形学管线进行裁剪的标准做法。一个世界坐标系下点经过观察变换后会映射到屏幕空间,在这其中会经过如下的矩阵变换:世界坐标系到相机坐标系的变化,相机坐标系下的透视投影变换到规范化空间,然后从规范化空间变换到屏幕空间。其中,裁剪就发生在透视投影变化之后,但在透视除法之前。先简单解释透视投影和透视除法: 透视投影指经过透视变化矩阵之后的得到齐次坐标; 透视除法指将透视转载 2017-04-13 22:06:31 · 1061 阅读 · 0 评论 -
左右手坐标系转换
假定Sz是一个缩放矩阵,能把z取反,也就是Sz = 1 0 0 0 1 0 0 0 -1P = (x,y,z),P' = (x,y,-z) 也就是P 和 P'在不同手性下表示相同位置的一个点 那么 P = Sz * P',反之也成立,也就是 P' = Sz * P平移变换的变换同上现在考虑Y轴的旋转,也就是yaw 假定在左手系下, P1 是 P变换后转载 2017-05-10 21:13:20 · 2773 阅读 · 0 评论 -
Spherical linear interpolation for Quaternions 2(四元数的球面插值计算,另一种方式)
解析:为什么要求 v⊥,其实,这里主要的思想就是为 v' 构建一个坐标系,这个坐标系的一个轴 为 v1, 另一个轴为 v⊥,简单理解就是x,y轴,那么,v'就可以分解成v1, v⊥轴上的分量,这样就可以求出v'了;开始解释 2.7, 2.8 公式:v0,v1都是单位向量。为了求 v⊥,那么可以尝试求蓝色的向量。1. 红色的向量 r =原创 2017-06-16 17:06:44 · 727 阅读 · 0 评论 -
欧拉角的万向锁
什么是万向节死锁(Gimbal Lock)呢?万向节死锁有时又被简称为万向节锁或者万向锁,是指当三个万向节其中两个的轴发生重合时,会失去一个自由度的情形。(也就是两个轴处于同一水平面上就会发生万向锁)。旋转顺序也有层次的关系,如果是 y -> x -> z的话,对应的关系就是,y是x的父亲,x是z的父亲,那么,当y旋转, x,z也是跟着旋转,当x旋转,z也会跟着旋转,但是y不会转载 2015-09-14 10:13:58 · 966 阅读 · 0 评论 -
A Translation for Quaternion 一篇对四元数的翻译
参考论文 : http://www.cs.ucr.edu/~vbz/resources/quatut.pdf四元数定义四元数有好几种定义的方式,这些方式的形态也许有所不同,但实质却彼此等价。了解这些形态是必要的,因为每一种形态对我们都非常有用。历史上, Hamilton首次将四元数定义为形如广义复数的形式: w+ix+jy+kz , 其中,i2 = j2 = k2 = -1转载 2015-09-19 12:09:29 · 1023 阅读 · 0 评论 -
绕任意轴旋转的矩阵推导
绕任意轴旋转的矩阵推导 左手坐标系下,一点绕任意轴旋转θ角的右乘矩阵:其中C为cosθ,S为sinθ,A为单位化的旋转轴以下推导均为左手坐标 首先我们将P看成从原点出发的自由向量,将其分解为平行于轴A与垂直于轴A的分量A1,A2的形式: (公式1)如图2:图2 (公式2)转载 2015-12-03 16:07:59 · 6403 阅读 · 1 评论 -
Vector4 的理解
在写一个Vertex结构的时候,不知道位置Pos,用Vector3,还是用Vector4比较好,最后选择,用Vector4.原因:1. 点,用Vector4表示就是(x,y,z,1)。2. 向量,用Vector4表示就是(x,y,z,0)。那么,向量是两个点相减组成,得到,(x1,y1,z1,1)- (x2,y2,z2,1) = (x1 - x2, y1 - y2,z1 - z2,原创 2016-07-21 23:57:38 · 7759 阅读 · 3 评论 -
反射矩阵(reflection matrix)推导
1. 了解 平面方程(Plane Equation) :http://www.cnblogs.com/kesalin/archive/2009/09/09/plane_equation.html2. 设平面为(nx,ny,nz,d),则以此平面为镜面的列主序反射矩阵如下:推导如下:一,平面的表示:如图所示,过点p,法向量为n的平面,可表示转载 2016-08-02 18:39:53 · 11787 阅读 · 0 评论 -
Hermite Curve Interpolation
参考 : http://cubic.org/docs/hermite.htmIntroductionHermite curves are very easy to calculate but also very powerful. They are used to smoothly interpolate between key-points (like object moveme转载 2016-09-09 17:35:31 · 1351 阅读 · 0 评论 -
球的体积微分公式
公式:dV=(r^2)sinθdθdφdr 弧长的计算公式:弧长=θ*r,θ是弧度r是半径其实就是 长 * 宽 * 高长 * 宽 * 高 = rdθ * rsinθdφ * dr原创 2016-09-19 14:51:16 · 11391 阅读 · 0 评论 -
The Law of Refraction
参考:https://www.math.ubc.ca/~cass/courses/m309-01a/chu/Fundamentals/snell.htmWhen light travels from one medium to another, it generally bends, or refracts. The law of refraction gives us a w转载 2016-09-21 20:38:29 · 835 阅读 · 0 评论 -
OpenGL Normal Vector Transformation
OpenGL Normal Vector TransformationRelated Topics: OpenGL Transformation, Plane EquationWhen lighting is enabled in OpenGL, the normal vectors are used to determine how much light is receive...转载 2016-11-18 17:34:02 · 564 阅读 · 0 评论 -
球面UV坐标
1. 如图2. 公式3. 坐标, 假设是单位球,r = 1φ = arctan(x / z)θ = arccos(y)根据 arctan的定义 : 定义域R , 值域(-π / 2,π / 2)根据 arccos的定义 : 定义域[-1, 1] , 值域[0,π]所以,得到φ = arctan(x / z) --- (-π / 2...原创 2016-09-30 14:12:17 · 5899 阅读 · 1 评论 -
视锥体裁剪(从矩阵中提取6个裁剪面)
视锥体(frustum),是指场景中摄像机的可见的一个锥体范围。它有上、下、左、右、近、远,共6个面组成。在视锥体内的景物可见,反之则不可见。为提高性能,只对其中与视锥体有交集的对象进行绘制。视锥体我们计算出视锥体六个面的空间平面方程,将点坐标分别代入六个面的平面方程做比较,则可以判断点是否在视锥体内。空间平面方程可表示为:转载 2017-03-25 21:59:10 · 2266 阅读 · 0 评论 -
DirectX视口变换矩阵详解(推导ViewportMatrix)
转载:http://www.cnblogs.com/graphics/archive/2009/10/13/1582773.html视口变换在投影变换之后,视口变换的作用是将投影平面上的点转换为屏幕上的点,这是一个缩放的过程。投影变换的作用是将viewing frustum(视景体)中的场景投影到一个平面上,这个平面就是投影平面,在DirectX中,使用近剪裁平面作为投影平面(z=转载 2017-03-25 22:41:56 · 1682 阅读 · 0 评论 -
Spherical linear interpolation for Quaternions (四元数的球面插值计算)
在pbrt中介绍四元数的时候,看到有介绍 四元数的 球面插值公式 的推导,在这里记录一下:公式1 :公式1推导:如图,目的就是为了求 vt,其实观察得到vt = k0 * v0 + k1 * v1看图得到, k0v0 对应的就是蓝色的那条边,k1v1 对应的就是红色的那条边。注意,k原创 2017-06-16 16:20:29 · 1140 阅读 · 0 评论