http://www.cnblogs.com/wywnet/p/3585075.html

Vector3: 
Unity3D中Vector3类定义(只写有用的): 
属性: 
x,y,z                表示一个空间向量。 
this                       用于访问x,y,z三个数据使用数组的方式访问,比如[0][1][2] 
normalized            返回单位化向量后的值(只读)。单位化向量是个很重要的概念,他常常是各种计算的基点,他保证了在不改变方向的前提下,使向量长度变为1。公式如下: 
                                                                
magnitude              返回向量长度值(只读),这词取得真怪,反正就是向量的模运算,得到向量的长度。公式就是x平方+y平方+z平方然后根号便是。这都不记得了赶紧回家面壁。 
sqrmagnitude         返回向量的平方长度(只读)。上面那个不开根号就是了。 
 
方法: 
Scale(a:vector3,b:vector3):vertor3  缩放,返回a的每个坐标乘以b的相对应的每个坐标。注意他是静态函数。 
Normalize() 向量化,注意magnitude向量长度会变为1. 
 
类特有的一些属性(直接粘help的了): 
zero      Shorthand for writing Vector3(0, 0, 0) 
one       Shorthand for writing Vector3(1, 1, 1) 
forward   Shorthand for writing Vector3(0, 0, 1) 
up        Shorthand for writing Vector3(0, 1, 0) 
right     Shorthand for writing Vector3(1, 0, 0) 
 
Maxtrix4*4: 
矩阵也是3D图形学一个重要的概念,在D3D里用的很平凡,但是U3D里好像都已经封装到各个Object上去了,所以很容易忽视掉,但不能忽视它的存在。在3D世界里,每个物体均有自身的世界矩阵,摄像机有摄像机矩阵,投影场景有projection矩阵,对顶点、向量、物体实施各种平移、旋转、缩放都是通过矩阵来完成的。计算机3D物体的标准4×4矩阵是这样定义的:(表示不出来矩阵大括号,请读者就当左4行的[和右4行的]当成一对大括号) 
                  [ x,  y  ,z  ,0]    <-  物体的右方向向量 
                  [ x,  y  ,z  ,0]    <-  物体的上方向向量 
                  [ x,  y  ,z  ,0]    <-  物体的前方向向量 
                  [ x,  y  ,z  ,1]    <-  物体所在的坐标 
注意:前三行的坐标一定是互有90度的,(除非特殊情况,例如空间扭曲之类的=.=)因为他们是物体的三个坐标轴。第四列的 0 0 0 1 是为了补齐4*4矩阵,为了计算方便而已。 
矩阵一样有单位矩阵和0矩阵, 
[1 0 0] 
[0 1 0]   其他的我就不说了,在Unity里头是完全封装的(见Transform) 
[0 0 1] 
 
Transform: 
这个就是U3D所封装的矩阵运算了,用于缩放,平移,还有定位(这个囧,他把矩阵给放这用了,所有物体都可以用transform类型来存放)。Transform所实现的功能不过就是物体矩阵的运算罢了,具体如下: 
 
Variables 
position                    Vector3类型,物体位置,相对于世界坐标系的值。就是矩阵的最后一行的值。 
localPosition             Vector3类型,物体相对于父元素的位置. 
eulerAngles              Vector3类型,旋转后的欧拉角相对世界坐标的值。简单理解为各向量坐标所转动的值就好了。 
localEulerAngles      Vector3类型,相对父元素的欧拉角。 
right                        Vector3类型,表示x轴(U3里红色的轴)方向的单位向量。 
up                           Vector3类型,表示y轴(U3里绿色的轴)方向的单位向量。 
forward                   Vector3类型,表示z轴(U3里蓝色的轴)方向的单位向量。 
rotation                   Quaternion类型(quatermion就是个四维数,比vector3多一个w变量表示旋转角度的),世界坐标旋转。. 
localRotation           Quaternion类型,本地坐标的旋转度数(相对父元素)。 
localScale                Vector3类型,相对本地坐标系缩放(就是矩阵的乘法) 
parent                      Transform类型,他的父元素。 
worldToLocalMatrix  Matrix4*4类型,把一个点从世界坐标系的位置转换为本地坐标系位置。(终究得用矩阵,哈哈)只读 
localToWorldMatrix  Matrix4*4类型,把一个点从本地坐标系转换为世界坐标系。(只读) 
root                          Transform类型,返回最上层的那个Transform,就是他父亲的父亲的父亲的。。。(如果有的话) 
childCount                int型,你子元素的数量。。。 
lossyScale                Vector3类型,相对世界坐标系缩放。 
 
Functions 
Translate (translation : Vector3, relativeTo : Space=Space.Self) : void   平移物体,space可以是Self和World,这个不用说了吧 
Rotate (eulerAngles : Vector3, relativeTo : Space = Space.Self) : void  绕欧拉角度的向量旋转 
RotateAround (point : Vector3, axis :Vector3, angle : float) : void  点point按axis的轴旋转angle度 
LookAt (target : Transform, worldUp :Vector3 ) : void 让这个物体的z轴面向target物体 
TransformDirection (direction : Vector3) : Vector3  将direction从本地坐标转换为世界坐标 
InverseTransformDirection (direction : Vector3): Vector3  将derection从世界坐标转换为本地坐标 
TransformPoint (position :Vector3): Vector3  同理 
InverseTransformPoint (position : Vector3) : Vector3 
DetachChildren () : void    解除所有子对象 
Find (name : string) : Transform   按名字寻找并返回子对象 
IsChildOf (parent : Transform) : bool   看他是不是别人的子对象 
 
 

在unity3D里面。两个向量的点乘所得到的是两个向量的余弦值,也就是-1 到1之间,0表示垂直,-1表示相反,1表示相同方向。

两个向量的叉乘所得到的是两个向量所组成的面的垂直向量,分两个方向。

简单的说,点乘判断角度,叉乘判断方向。

形象的说当一个敌人在你身后的时候,叉乘可以判断你是往左转还是往右转更好的转向敌人,点乘得到你当前的面朝向的方向和你到敌人的方向的所成的角度大小。

 

【Unity】矩阵运算的更多相关文章

  1. 【原创翻译】初识Unity中的Compute Shader

    一直以来都想试着自己翻译一些东西,现在发现翻译真的很不容易,如果你直接把作者的原文按照英文的思维翻译过来,你会发现中国人读起来很是别扭,但是如果你想完全利用中国人的语言方式来翻译,又怕自己理解的不到位 ...

  2. 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)

    写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...

  3. 【我的书】Unity Shader的书 — 目录(2016.5.19最后一次更新)

    写在前面 感谢所有点进来看的朋友.没错,我目前打算写一本关于Unity Shader的书. 出书的目的有下面几个: 总结我接触Unity Shader以来的历程,给其他人一个借鉴.我非常明白学Shad ...

  4. 【Unity Shaders】法线纹理(Normal Mapping)的实现细节

    写在前面 写这篇的目的是为了总结我长期以来的混乱.虽然题目是"法线纹理的实现细节",但其实我想讲的是如何在shader中编程正确使用法线进行光照计算.这里面最让人头大的就是各种矩阵 ...

  5. 骨骼动画的原理及在Unity中的使用

    制作骨骼动画 我们看看这几步操作后,我们得到了那些数据: 1.每个皮肤顶点的初始世界坐标. 2.每个骨骼关节顶点的初始世界坐标. 3.每个顶点被骨骼顶点的影响信息. 4.骨骼如何移动. 骨骼动画原理 ...

  6. 游戏的物理和数学:Unity中的弹道和移动目标提前量计算

    下载地址:https://www.jianguoyun.com/p/DZPN6ocQ2siRBhihnx8 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺 ...

  7. unity shader 内置变量

    官网Manual:http://docs.unity3d.com/Manual/SL-UnityShaderVariables.html unity提供大量的内置变量,来供我们使用,主要包括一些 :矩 ...

  8. 汇总:unity中弹道计算和击中移动目标计算方法

    http://download.jikexueyuan.com/detail/id/432.html 弹道计算是游戏里常见的问题,其中关于击中移动目标的自动计算提前量的话题,看似简单,其实还是挺复杂的 ...

  9. Unity 中的坐标系

    说明: 注意几点: 0 行向量右乘矩阵与列向量左乘矩阵,两个矩阵互为逆矩阵 1 法线转换与mul,mul函数左乘矩阵当列矩阵计算,右乘当行矩阵计算 2 叉乘与左右手系,左手系用左手,右手系用右手,ax ...

随机推荐

  1. 常让人误解的一道js小题

    一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...

  2. 使用 SQL的 for xml path来进行字符串拼接 (group by)

    参考: http://www.cnblogs.com/repository/archive/2011/01/18/1938418.html select convert(varchar(10),c.[ ...

  3. Autodesk 招人了,开发顾问,感兴趣的或者有推荐的人扔简历过来啊

    Autodesk ADN招人了,在上海,开发顾问, JD如下. 如果你感兴趣或者有人推荐,扔简历过来啊, daniel.du@autodesk.com,赶早不赶晚啊.   Job Title: Dev ...

  4. 【C语言】外部函数和内部函数

    目录 [外部函数]  [内部函数] 1.外部函数  定义的函数能被本文件和其它文件访问(默认). 注:不允许有同名的外部函数. 2.内部函数  定义的函数只能被本文件访问,其它文件不能访问. 注:允许 ...

  5. c中的基本运算

    一. 算术运算 C语言一共有34种运算符,包括了常见的加减乘除运算 1. 加法运算+ l 除开能做加法运算,还能表示正号:+5.+90 2. 减法运算- l 除开能做减法运算,还能表示符号:-10.- ...

  6. iOS开发之UISearchBar初探

    iOS开发之UISearchBar初探 UISearchBar也是iOS开发常用控件之一,点进去看看里面的属性barStyle.text.placeholder等等.但是这些属性显然不足矣满足我们的开 ...

  7. 2.1 CMMI2级——7个PA简述

    摘要: 阶段式的CMMI没有1级,最开始的级别就是2级.一个处于“无序化”生产的软件公司,要进行过程改进,首要是改进什么呢?2级告诉你,我们需要从计划.计划跟踪.需求管理.采购.度量.配置管理.质量保 ...

  8. 搬家至独立博客 http://blog.imzjy.com

    欢迎访问 http://blog.imzjy.com

  9. SSIS技巧--优化数据流缓存

    问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换.之前看了很多 ...

  10. Java对象的序列化

    1.概念 序列化:把Java对象转换为字节序列的过程. 反序列化:把字节序列恢复为Java对象的过程. 2.用途 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个 ...