1变换 在3D游戏的整个开发过程中,通常需要以某种方式对一系列的向量进行变换.通常用到的变换包括平移,缩放和旋转. 1.1通用变换 通常可将n x n可逆矩阵M看成是一个从坐标系到另一个坐标系的变换矩阵.M的列给出了坐标系从原坐标系到新坐标系的映射.例如M是一个n x n可逆矩阵,当M与向量(1,0,0),(0,1,0)和(0,0,1)相乘时,可以得到 类似地,M-1的列给出了坐标轴从新坐标轴系到原坐标轴系的映射.这样对于任意给定的线性无关的向量U,V,W可以构造一个变换矩阵,该矩阵将这些向量映…
说实话关于四元数这一节真的是不好懂,因为里面涉及到好多数学知识,单说推出来的公式就有很多.不怕大家笑话,对于四元数的学习我足足花了两天的时间,包括整理出这篇文章.在前面一章我写到了“变换”,这也是总结的学习笔记.我发现,写博客真是的是一个好多学习方法,加上之前一个博士师兄告诉我,要想好好的学习一本书或者一门技术,那么以此将学习笔记或者经验写成博客专栏是一种有效的方法.现在我要坚持这种方式,给自己留下学习过程中的足迹,也给大家分享一下.欢迎大家指出其中的不足,谢谢! 四元数是表示旋转的另一种数学形…
<易传·系辞上传>:”易有太极,是生两仪,两仪生四象,四象生八卦.” 借用一下古代先人们的智慧引一下本文的主题-三维图形中的点线面,在三维几何中也有一句话可以和上面的话相对应:由点成线,由线成面,由面成体,由体成形. 点向量和方向向量 首先我们要明确在三维空间中表示点的点向量和表示方向的方向向量的区别,例如A(x,y,z)可以表示一个点向量,而OA(x,y,z)就表示一个方向向量.方向向量在平移过程中将保持不变. 3D空间中的直线 3维空间中有两个点P1和P2,那么通过这两个点的直线可以定义为…
视截体用来表示一个空间的范围,位于这个空间范围内的三维场景的任何物体都可以被看到. 视截体由六个平面围成,其中的四个平面与场景的边界相对应,分别被称为左,右,底,顶视截面.另外两个平面称为近视截面和远视界面,它们定义了最近和最远距离. 视截体与摄像机空间是一致的,摄像机空间也称为眼球空间,它就是一个坐标系,在该坐标系下,摄像机位于原点,x轴指向右边,y轴指向上方,z轴的方向取决于所用的3D图形库.如OpenGL环境下,z轴的方向是摄像机所指方向的反方向,形成了右坐标系.Direct3D环境下,z…
最近严重感觉到数学知识的不足! http://bbs.gameres.com/showthread.asp?threadid=10509 [译]Mathematics for Computer Graphics Mathematics for Computer Graphics数学在计算机图形学中的应用Greg Turk, August 1997 “学习计算机图形学需要多少的数学?”这是初学者最经常问的问题.答案取决于你想在计算机图形学领域钻研多深.如果仅仅使用周围唾手可得的图形软件,你不需要知…
好久没有更新了,最近一直在老家过年,网络不通的,今天才有时间更新一集. 一.TSet<T>是什么 UE4中,除了TArray动态数组外,还提供了各种各样的模板容器.这一节,我们就介绍集合容器——TSet<T>.类似于TArray<T>,尖括号里面的T是模板类型,可以是任何C++类型.一个集合表示了一组互不重复的数据元素.比如TSet<float>表示了一组float集合,TSet<FString>表示了一组FString集合. 二.创建和填充集合…
一.下载安装Turbo C++ 我安装的是Turbo C++ 3.2.2.0下载链接 二.画图 1.打开Turbo C++,点击右下角start turbo C++ 2.点击file ->new 3.输入代码 4.编译运行,如下图所示 //为什么不试试用DEV呢 逃~…
1 . Math.ceil()      向上取整 2.  Math.floor()     向下取整 3. Math.round()    四舍五入取整 4.  Math.random()   生成随机数          生成n - m 的随机整数     parseInt(n + Math.random()*(m-n+1));      parseInt是强制类型转化,转化为整数值 5. Math.abs()  取绝对值 6. Math.PI  数学上圆周率 7. Math.max() …
直接用代码 public class TestNumber { public static void main(String[] args) { float f1 = 5.4f; float f2 = 5.5f; //5.4四舍五入即5 System.out.println(Math.round(f1)); //5.5四舍五入即6 System.out.println(Math.round(f2)); //得到一个0-1之间的随机浮点数(取不到1) System.out.println(Math…
本书參照<<图形学扫盲>> 整理的,原文内容引子: http://www.cppblog.com/lai3d/archive/2008/12/30/70796.html 前言:   以我如今的水平观之,3D图形学分3大块的学习内容:   a.空间几何数学:空间几何变换,加速算法,多边形技术,曲线和曲面,相交測试,碰撞測试.   b.光照着色系统:光照,纹理贴图,高级象素着色光照,艺术性渲染.   c.程序技术性应用:公告板,精灵,天空盒,体绘制,材质系统,场景图,渲染队列.    …