游戏开发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 = a * b * sinθ\)
矩阵
矩阵相等
矩阵数乘
矩阵加法
矩阵乘法
若A为\(m*n\)的矩阵,B为\(n*p\)矩阵,则乘积AB有意义,且等于一个\(m*p\)矩阵
单位矩阵
逆矩阵
矩阵转置
一个\(m*n\)矩阵的转置是一个\(n*m\)的矩阵。我们用符号\(M^T\)表示矩阵M的转置
游戏开发3D基础知识的更多相关文章
- Unity游戏开发面试基础知识
面试第一次知识总结: 一.Unity基本操作 1.unity提供哪几种光源? 点光源.平行光.聚光灯.区域光. 2.物体发生碰撞的必要条件什么? 两个物体必须有碰撞体Collider组件,一个物体上必 ...
- 【Unity3D游戏开发】基础知识之Tags和Layers (三二)[转]
Tags和Layers分别表示是Unity引擎里面的标签和层,他们都是用来对GameObject进行标识的属性,Tags常用于单个GameObject,Layers常用于一组的GameObject.添 ...
- 【笔记】《DirectX 9.0 3D游戏开发编程基础》:Direct3D初始化
Direct3D初始化大概分为4个步骤: 1.获取接口IDirect3D9的指针.(Direct3DCreate9函数调用). 该接口用户获取系统中物理硬件设备的信息并创建接口IDirect3DDev ...
- HTML5游戏开发技术基础整理
随着HTML5标准终于敲定.HTML5将有望成为游戏开发领域的的热门平台. HTML5游戏能够执行于包含iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是眼下跨平台应用开发的最佳实 ...
- html5游戏开发-零基础开发《圣诞老人送礼物》小游戏
开言: 以前lufy前辈写过叫“ HTML5游戏开发-零基础开发RPG游戏”的系列文章,在那里面我学习了他的引擎以及了解了游戏脚本.自从看了那几篇文章,我便对游戏开发有了基本的认识.今天我也以零基础为 ...
- 《DirectX 9.0 3D游戏开发编程基础》必备的数学知识 读书笔记
最近在看游戏导航源码,但是看了几天感觉看不懂.里面全是一些几何运算,以及一些关于3d方面的知识.发现自己缺少3d这方面的知识,正好也想研究一下3d游戏开发的基本原理,于是决定买本书看看了,后来在ope ...
- [Unity3D]Unity3D游戏开发3D选择场景中的对象,并显示轮廓效果强化版
大家好,我是秦培,欢迎关注我的博客,我的博客地址blog.csdn.net/qinyuanpei. 在上一篇文章中,我们通过自己定义着色器实现了一个简单的在3D游戏中选取.显示物体轮廓的实例. 在文章 ...
- css 3d 基础知识
css3d 总结 3d transform (3D变形)(rotate skew scale translate) 基础知识 perspective (视距,景深) perspective-origi ...
- ArcGIS API for JavaScript开发初探——基础知识
1.前言 在ArcGIS Web API开发体系中一共有四大类,分别为: ArcGIS API for Flex ArcGIS API for JavaScript ArcGIS API for RE ...
随机推荐
- 16 input默认样式清除
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...
- React躬行记(5)——React和DOM
React实现了一套与浏览器无关的DOM系统,包括元素渲染.节点查询.事件处理等机制. 一.ReactDOM 自React v0.14开始,官方将与DOM相关的操作从React中剥离,组成单独的rea ...
- request - cookie操作(二)
from urllib import request,parsefrom http.cookiejar import CookieJarheaders = { "User-Agent&quo ...
- java 字节码指令集
This is a list of the instructions that make up the Java bytecode, an abstract machine language that ...
- Python开发【第九篇】: 并发编程
内容概要 操作系统介绍 进程 线程 协程 二. 进程 python并发编程之多进程理论部分 在python程序中的进程操作 运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...
- 安装win7和linux [ubuntu14]双系统
想体验一把ubuntu18.10最新桌面版的快感,但是windows上面的数据又删除不得,所以百度了一下,win7和linux双系统的安装教程. 一.首先在win7上创建新的分区 https://ji ...
- golang切片和数组的区别
好久的没有写博客了,这段时间没事研究了下go这门语言. 我们先介绍下go中的数组和切片的区别和用法 说了这么多 我们先来看段代码吧 var arr1 [3]int var arr2 [3]int = ...
- Java中字符串的一些常用操作方法
package test; public class maintest {public static void main(String[] args) {String str = "a ...
- 并发编程-concurrent指南-交换机Exchanger
java.util.concurrent包中的Exchanger类可用于两个线程之间交换信息.可简单地将Exchanger对象理解为一个包含两个格子的容器,通过exchanger方法可以向两个格子中填 ...
- iOS自动化探索(十)代码覆盖率统计
iOS APP代码覆盖率统计 今年Q3季度领导给加了个任务要做前后端代码覆盖率统计, 鉴于对iOS代码代码比较熟就选择先从iOS端入手,折腾一整天后终于初步把流程跑通了记录如下 覆盖率监测的原理 Xc ...