游戏开发3D基础知识

概念学习:

向量

向量简介

我们将所有彼此平行的向量进行平移,使其起点与坐标原点重合,当某一向量的起始端与坐标原点重合,我们成该向量处于标准位置。这样,我们就可用向量的终点坐标来描述一个处于标准位置的向量。 我们通常用小写粗体字母表示一个向量,又是也是用大写粗体字母,比如:2D,3D,4D向量分别表示为:u=(u_{x},u_{y}), N=(N_{x},N_{y},N_{z}),c=(c_{x},c_{y},c_{z},c_{w})。 D3DX库中,类D3DXVECTOR3表示3D空间中的向量。

向量相等

几何学中,如果两个向量长度和方向都相同,那么这两个向量相等。

向量长度

||u||= sqrt(u_x^2+u_y^2+u_z^2)

向量规范化

向量的规范化就是使向量的模变为1,即变为单位向量。可以通过将向量的每个分量都除以该向量的模来实现向量的规范化。

向量加法

向量加法定义为两个向量对应分量分别相加,只有维数相同的两个分量才能进行加法运算。
u+v = (u_x+v_x, u_y+v_y, u_z+v_z)

向量减法

u-v = u+(-v) = (u_x-v_x, u_y-v_y, u_z-v_z)

数乘

标量可以与向量相乘,顾名思义,该运算可对向量进行缩放。
ku = (ku_x,ku_y,ku_z)

点积

点积是向量代数所定义的两种乘法之一,其运算规则如下:
u*v = u_x*v_x + u_y*v_y + u_z*v_z
上述公式并不具有明显的几何意义,由余弦定理,可以发现u*v = ||u|| * ||v|| * cosθ,即两向量的点积等于两者夹角的余弦再乘以两个向量的模的乘积。

叉积

a\*b = x_1\*y_2-x_2\*y_1 = x_1 \* y_2 - x_2 \* y_1 = a \* b \* sinθ

矩阵

矩阵相等

矩阵数乘

矩阵加法

矩阵乘法

若A为m*n的矩阵,B为n*p矩阵,则乘积AB有意义,且等于一个m*p矩阵

单位矩阵

逆矩阵

矩阵转置

一个m*n矩阵的转置是一个n*m的矩阵。我们用符号M^T表示矩阵M的转置

原文地址:https://www.cnblogs.com/acmlzq/p/11279780.html

时间: 2024-11-08 03:57:50

游戏开发3D基础知识的相关文章

《DirectX 9.0 3D游戏开发编程基础》 第一章 初始化Direct3D 读书笔记

REF设备 参考光栅设备,他能以软件计算方式完全支持Direct3D Api.借助Ref设备,可以在代码中使用那些不为当前硬件所支持的特性,并对这此特性进行测试. D3DDEVTYPE 在程序代码中,HAL设备用值D3DDEVTYPE_HAL来表示.该值是一个枚举变量.REF设备用D3DDEVTYPE_REF来表示.这种类型非常重要,你需要铭记,因为在创建设备的时候,我们必须指定使用哪种设备类型. COM(组件对象模型) 创建COM接口时不可以使用c++关键字new.此外使用完接口,应调用Rel

iOS开发多线程基础知识 NSOperation

-------NSOperation简介---- 1.NSOperation的作用 ·配合使用NSOperation和NSOperationQueue也能实现多线程编程 2.NSOperation和NSOperationQueue实现多线程的具体步骤 ·先将需要执行的操作封装到一个NSOperation对象中 ·然后将NSOperation对象添加到NSOperationQueue中 ·系统会自动将NSOperation中封装的操作放到一条新线程中执行 ---------NSOperation的

Android Camera开发之基础知识篇

概述 Android框架支持设备的相机拍照和录像功能,你的应用可以直接调用系统的Camera应用来拍照或者录像(比如微信拍照),当然也可以利用Android系统提供的API开发一个Camera应用来实现相机拍照和录像功能(比如市面上流行的360相机).此篇文章主要记录相机开发有关的基础知识,以及带着自己的理解翻译Camera官方文档,如有翻译不恰当支出,还请指出改正.当然我会开一个有关相机开发的一个系列,该系列主要内容包括如下: 相机基本预览拍照功能. 实现相机的Flash,Hdr,滤镜,前后摄

html5游戏开发-零基础开发《圣诞老人送礼物》小游戏

开言: 以前lufy前辈写过叫" HTML5游戏开发-零基础开发RPG游戏"的系列文章,在那里面我学习了他的引擎以及了解了游戏脚本.自从看了那几篇文章,我便对游戏开发有了基本的认识.今天我也以零基础为视点,为大家讲述如何开发一款简单的游戏.希望大家看了这篇文章,能使你对理解游戏开发有帮助. 你可以先测试一下游戏: http://lufylegend.com/lufylegend_developers/yorhom_Christmas/index.html 1,如何进行游戏开发 1.1游

HTML5游戏开发技术基础整理

随着HTML5标准最终敲定,HTML5将有望成为游戏开发领域的的热门平台.HTML5游戏能够运行于包括iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是目前跨平台应用开发的最佳实施方案.本文系根据[HML5 Canvas游戏开发实战]一书中的内容整理而成,是了解和学习HTML5游戏开发的基础内容,希望能够帮助到那些和博主一样致力于游戏开发的朋友们! JavaScript中的面向对象编程 对于游戏开发来说,面向对象编程(OOP)是一种重要而且必要的方法,所以在了解HTML5游戏

iOS开发多线程基础知识

--------------------------多线程概念基础------- 进程:正在运行的程序 内存:每个进程所占的存储空间 线程:1个进程要像执行任务,必须得有线程,线程是进程的基本执行单元, 线程的串行: ·1个线程中人物的执行是串行的 ·0同一个时间内,1个线程只能执行1个任务 0·线程是进程的一条执行路径 --------多线程 ·一个进程中可以开启多条线程,每条线程可以并行(同时)同时执行不同的任务 ·进程->车间 线程->车间工人 线程的并行: ·进程内多个线程同时执行,可

HTML5游戏开发中基础的Tag讲解

一般在HTML5游戏开发中,基础的Tag都用在标题,段落以及分行上,下面就来讲解下几种最常用的Tag.当然最好用的HTML5学习方式就是跟随示例,今天我们的HTML5游戏开发教程也从实例开始. 首先来看一下标题中的Tag应用.在HTML5游戏开发中,我们用从h1至h6的几个Tag来定义文章的标题,每个正文中的标题都是自成一段的.例如这样: <html>  <head></head>  <body>   <h1>This is a heading&

进行软件开发的基础知识

        软件开发:需要做什么? 如何做? 用什么去完成?        一.过程:控制和管理软件开发活动 软件过程用来控制和管理软件团队的开发活动和进度,对于个人来说,也需要使用一定的过程方法来规范化自己的开发流程. 一个值得尝试的方案是:迭代+瀑布模型+测试驱动开发. 这种方案首先将系统分成多个迭代故事,然后,针对每个迭代故事使用瀑布模型并融入测试驱动开发理念. 具体做法: S1:将系统开发分解为多个故事的迭代,每个故事中包含若干个模块. S2:针对每个故事中的模块,使用 “需求分析-

游戏开发之基础图像---3d图像处理

http://dev.gameres.com/Program/Visual/3D/3Darit.htm float 类型数据有效数字是小数点后面6位 单精度 doluble 类型数据是至少10位,双精度 在赋值是默认是double类型,所以强制转换(floag)或初始化数据后面加1.0f 在运算中double 类型数据快于float 嵌入式设备float 快于double,可以在ti dsp中测试验证!