Mathf结构:常用数学函数的集合。
类变量
◆ static var Deg2Rad:float
描述:度到弧度的转化常量(只读)。
这个等于(PI*2)/360.
//转化30度为弧度
var deg=30.0;
var od=dcg*Mathf.Deg2Rad;
参见:Rad2Deg常量。
◆ static varEpsilon:float
描述:一个小的浮点数值(只读)
比较小于它的值没有多人意见,因为浮点数是不精确的。
print(MathfEpsilon);
◆ static var Infinity:float
描述:表示正无穷(只读).
◆ static var NegativeIntinity:float
描述:表示负无穷(只读).
◆ staic var PI:float
描述:3.14159265358979…值(只读).
◆ static var Rad2deg:float
描述:弧度到度的转化常量(只读).
这个等于360、(PI*2).
转化1弧度为度
var rad=1.0;
var deg=rad*Mathf.Rad2Deg.
参见:Deg2Rad常量
类方法
◆ staric function Abs(f:float):float
描述:返回f的绝对值。
//打印10.5
print(Mathf.Abs(-10.5)).
◆ staric function Abs(value:int):int
描述:返回value的绝对值。
//打印10
print(Mathf.Abs(-10));
◆ staric function Acos(f:float):float
描述:返回f的反余弦_一个弧度角它的余弦是f.
print(Mathf.AcOS(0.5);
◆ staric function Approximately(a:float,b:float):bool
描述:比较两个浮点数值看看它们是否近似。
由于浮点数值不精确,不建议使用等操作来比较它们。例如,1.0==10.0/10.0也许不会返回真。
if(Mathf.Approximately(1.0,10.0/10.0))
print(“same”);
◆ static function Asin(f:float):float
描述:返回f的反正弦_一个弧度角它的正弦是f.
print(Matht.Asin(0.5));
◆ staric function Atan(f:float):float
描述:返回f的反切_一个弧度角它的正切是f.
print(Mathf.Atan(0.5));
◆ staic function Atan2(y:float,x:float):float
描述:返回一个弧度角它的Tan为y/x。
返回的值是一个角度,该角表示x轴和开始于零并终结在(x,y)处的向量之间的角度。
//通常使用transform.lookAt.
//但这可以给你更多的对角度的控制
vartatget:Transform;
function Update()
{
var relativ=transfom.lnverseTeansformPoint(target.position);
var angle=Mathf.Atan2(reative,reative.z)*Mathf.Rad2Deg;
transform.Rotate(0,angle,0);
}
◆ static function Ceil(f:fioat):float
描述:返回大于等于f的最小整数.
◆ static function CeilTolnt(f:fioat):int
描述:返回大于等于f的最小整数.
◆ static function Clamp(value:float,min:float,max:float):float
描述:在一个最小的浮点数和最大的浮点数之间截剪。
//随着时间设置变换位置
//但是不会小于1或大于3
function Update()
{
transtorm,position.x=Mathf.Clamp(lime.time.1.0,3.0);
}
◆ staric function Clamp(value:int,min:int,max:int):int
描述:在min和max之间裁剪值并返回裁剪后的值。
//在1到3之间裁剪10,
//打印3到控制台
prnt(Mathf.Clamp(10,1,3))
◆ static function Clamp01(value;float):float
描述:在0和1之间裁剪值并返回裁剪后的值。
//随着时间设置变换位置
//但是不会小于0或大于1
function Update(){
transform.position.x=Mathf.Clamp01(Time.time);
}
◆ staic function ClosestPowerOflwo(value:int):int
描述:返回最直接的2的幂次值。
例如。7返回8或者19返回16
◆ staric function Cos(f:float):float
描述:返回弧度f的余弦值.
print(Mathf.Cos(3));
◆ staic function EXP(power:float):float
描述:返回e的特定次幂。
print(Mathf.Cos(6));
◆ static function Floor(f:float):float
描述:返回小于f的最大整数.
◆ static function FloorTolnt(f:float):int
描述:返回小于f的最大整数.
◆ static function lnverseLerp(from:float,to:float,value:float):float
描述:在两个值之间计算Lerp参数.
varwalkSpeed=5.0;
varunSpeed=10.0;
var speed=8.0;
//参数现在是3/5
vvar parameter=Mathf.laverseLerp(walkSpeed,runSpeed,speed);
◆ staic tunchon Lerp(a:float,b:float,t:float):float
描述:基本t在a到b之间插值。t本裁剪到0到1之间。
当t为0时返回from . 当t为1时返回to .当t=0.5时返回a和b的平均。
var minimum = 10.0;
var maximum = 20.0;
// 在一秒内从minimum渐变到maximum
Function Update()
{
transform.position.x = Mathf.lerp(minimum,maximum,Time.time);
}
◆ static function LerpAngle(a:float,b:float,t:float):float
描述:与Lerp相同,但是当它们可绕360度时确保插值正确,
变量a和b被认为是度。
//以2为底6的对数
//打印2.584963
print(Mathf.Log(6,2));
◆ static function Log(f:float):float
描述:返回一个数以自然(以e为底)对数。
//10的自然对数
//打印4.60517
print(Mathf.Log(10));
◆ static function Log10(f:float):float
描述:返回一个数以10为底的对数。
//以10为底100的对数
//打印2
print(Mathf.Log10(100));
◆ static function Max(a:float,b:float):float
描述:返回两个值中较大的一个。
//打印2
print(Mathf.Max(1,2));
◆ static function Max(a:int,b:int):int
描述:返回两个值中较大的一个。
//打印2
print(Mathf.Max(1,2));
◆ static function Min(a:float,b:float):float
描述:返回两个值中较小的一个。
//打印1
print(Mathf.Min(1,2));
◆ static function Min(a:int,b:int):int
描述:返回两个值中较小的一个。
//打印1
print(Mathf.Min(1,2));
◆ static function PingPong(t:float,length:float):float
描述:来回改变t值,t值不会超过length,也不会小于0,只会在length和0之间循环。
function Update()
{
//让x位置在0到3之间循环
transform.position.x = Mahtf.PingPong(Time.time,3);
}
◆ static function Pow(f:float,p:float):float
描述:返回f的p次方。
print(Mahtf.Pow(6,1.8));
◆ static function Repeat(t:float,length:float):float
描述:使t值循环,不大于length不小于0。它与操作模板类似,但可以使用浮点数。
function Update()
{
//让x位置在0到3之间循环
transform.position.x = Mahtf.Repeat(Time.time,3);
}
◆ static function Sign(f:float):float
描述:返回f的符号。
当f为正或为0则返回1,为负返回-1。
◆ static function Sin(f:float):float
描述:返回以f为弧度的sin值。
print(Mahtf.Sin(3));
◆ static function SmoothDamp(current:float,target:float,ref currentVelocity:float,smoothTime:float,maxSpeed:float = Mahtf.Infinity,deltaTime:float =Time.deltaTime):float
描述:逐步的向期望值变化。
这个值就像被一个不会崩溃的弹簧防震器所影响。这个函数可以用来平滑任何类型的值,位置,颜色,标量。最常用于让一个跟随摄像机的速度变的平滑。
current 就是当前位置。target是我们希望达到的位置。currentVelocity是当前速度,这个值在你访问这个函数的时候会被随时修改。 smoothTime是要到达目标位置的近似时间,实际到达目标时要快一些。maxSpeed可以让你随意的设定最大速度。deltaTime是上次访问该函
数到现在的时间。缺省为Time.deltaTime。
//平滑到目标高度
var target : Transform;
var smoothTime = 0.3;
private var yVelocity = 0.0;
function Update ()
{
var newPosition = Mathf.SmoothDamp(transform.position.y, target.position.y,yVelocity, smoothTime);
transform.position.y = newPosition;
}
◆ Static function SmoothDampAngle(current: float, target: float, ref currentVelocity): float, smoothTime: float, maxSpeed: float=Mathf.Infinity, deltaTime: float=Time.deltaTime): float
描述: 基于Game Programming Gems4章节1.10
随着时间逐渐的改变一个角度为目的的角度。这个值被像弹簧阻尼一样的函数平滑。这个函数可以用来平滑任何一种值,位置,颜色,标量。最常见的是平滑一个跟随摄像机。
current 是当前位置。target是我们试图到达的位置。currentVelocity是当前速度,这个值在每次你调用这个函数的时候都被修改。 smoothTime是到达目的地近似时间,实际的时间将更短。maxSpeed为允许的最大速度。deltaTime为从上次调用该函数到现在的时间。缺省为Time.deltaTime。
//一个简单的平滑跟随摄像机。
//跟随目标的朝向
var target : Transform;
var smooth = 0.3;
var distance = 5.0;
private var yVelocity = 0.0;
function Update ()
{
//从目前的y角度变换到目标y角度
var yAngle = Mathf.SmoothDampAngle(transform.eulerAngles.y,target.eulerAngles.y, yVelocity, smooth);
//target的位置
var position = target.position;
//然后,新角度之后的距离便宜
position += Quaternion.Euler(0, angle, 0) * Vector3 (0, 0, -distance);
//应用位置
transform.position = position;
//看向目标
transform.LookAt(target);
}
◆ static function SmoothStep (from : float, to : float, t : float) : float
描述:在min与max中插值并在限定处渐入渐出
◆ static function Sqrt (f : float) : float
描述:返回f的平方根
print(Mathf.Sqrt(10));
◆ static function Tan (f : float) : float
描述:返回弧度f的正切值
print(Mathf.Tan(0.5));
Matrix4x4
一个标准的4×4变换矩阵。
一个变换矩阵可以执行任意的线形3D变换(例如,评议,旋转,缩放,切边等等)并且偷师变化使用齐次坐标。脚本中很少使用矩阵:最常用Vector3,Quaternion,而且Transform类的功能更简单。单纯的矩阵用于特殊情况,如设置非标准相机投影。
参考任何图形学教程获取关于变换矩阵的深入揭示。
在Unity中,Matrix4x4被Transform,Camera,Material和GL函数使用。
变量
◆ var inverse : Matrix4x4
描述:返回该矩阵的逆(只读)
如果用原始矩阵诚意逆矩阵结果为identity矩阵。
如果一些矩阵以一个特定的方式变换响亮,逆矩阵可以将他们变换回去。例如worldToLoclaMatrix和localToWorldMatrix是互逆的。
◆ var this[row : int,column : int]:float
描述:访问[row,column]处的元素。
row和column必须在0到3之间,矩阵是一个4×4的数组,你可以通过使用这个函数访问单个的元素。
注意标准数学符号-row是第一个索引。
◆ var this[index : int]:float
描述:按顺序索引存取元素(包括在0..15)
矩阵是一个4×4的数组,所以它的总数为16,。你可以使用一维索引来存取单个元素。index是row+column*4
◆ var transpose : Matrix4x4
描述:返回这个矩阵的转置(只读)。
转置矩阵是将原矩阵行列交换得到的(沿主对角线翻转)
函数
◆ function GetColumn(i : int):Vector4
描述:获取矩阵的一列。
第i列作为Vector4返回,i必须在0到3之间。
参见:SetColumn
◆ function GetRow(i : int):Vector4
描述:返回矩阵的一行。
第i行作为Vector4返回,i必须在0到3之间。
参见:SetRow
◆ function MultiplyPoint (v : Vector3):Vector3
描述:通过这个矩阵变换位置。
返回由任意矩阵变化得到的位置v。如果这个矩阵是一个正规的3D变换矩阵,使用MultiplyPoint3x4比它更快。MultiplyPoint是较慢的,但是能处理投影变换。
参见:MultiplyPoint,MultiplyVector。
◆ function MultiplyPoint3x4(v : Vector3):Vector3
描述:通过这个矩阵变换位置(快)。
返回由当前变换矩阵变换得到的位置v。这个函数是MultiplyPoint的快速版,但是它只能处理常规的3D变化。Multiplypoint是较慢的,但是能处理投影变换。
参见:MultiplyPoint,MultiplyVector。
◆ function MultiplyVector(v : Vector3):Vector3
描述:通过这个矩阵变换方向。
这个函数类似于MultiplyPoint,但它是变换方向而不是位置。变换方向时,只考虑矩阵的旋转部分。
参见:MultiplyPoint,MultiplyPoint3x4。
◆ function SectColumn(i : int,v:vector4):void
描述:设置矩阵的一列。
使用这个来构建一个变换矩阵,这个矩阵使用right,up和forward向量。
//从变换构建一个矩阵
var matrix = Matrix4x4();
//从变换构建一个矩阵
function Start ()
{
matrix.SetColumn (0, transform.right);
matrix.SetColumn (1, transform.up);
matrix.SetColumn (2, transform.forward);
var p = transform.position;
matrix.SetColumn (3, Vector4 (p.x, p.y, p.z, 1));
}
//设置第i列为v。i必须在0到3之间。
参见:GetColumn
◆ function SetRow(i : int,v:Vector4):void
描述:设置矩阵的一行。
设置第i行为v。i必须在0到3之间。
参见:GetRow
◆ function SetTRS(pos : Vector3, q:Quaternon, s:Vector3):void
描述:设置这个矩阵为一个变换,旋转和缩放矩阵。
当前的矩阵本修改一遍具有位置pos,旋转q和缩放s。
◆ function ToString():string
描述:返回已格式化的该矩阵的字符串。
类变量
◆ static var identity : Matrix4x4
描述:返回单位矩阵(只读)。
这个矩阵在使用的时候不会影响任何东西。它的主对角线上全是1,其他位置全是0。
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
参见:zero变量。
◆&n, bsp;static var zero : Matrix4x4
描述:返回所有元素都为零的矩阵(只读)。
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
参见:identity变量。
类方法
◆ static operator * (lhs : Matrix4x4,rhs : Matrix4x4) : Matrix4x4
描述:两个矩阵相乘。
返回lhs * rhs。
◆ static operator * (lhs : Matrix4x4,v:Vector4):Vector4
描述:由矩阵来变换一个Vector4。
◆ static function Ortho(left : float,right : float,bottom : float,top : float,zNear : float,zFar : float):Matirx4x4
描述:创建一个正交投影矩阵。
返回的矩阵是视口ledt到right,bottom到top的区域,zNear和zFar深度裁剪面板。
如果你想使用正交来做像素修正渲染,最好使用GL.LoadPixelMatrix,因为它会为Direct3D渲染器运用适当的half-texel便宜。
参见:GL.LoadPixelMatrix,GL.LoadProjectionMatrix,GUI.matrix
◆ static function Perspective(fov : float,aspect : float,zNear : float,zFar : float):Matrix4x4
描述:创建一个透视投影矩阵。
fov为透视矩阵的垂直视野,aspect为宽高比,zNear和zFar设置为深度裁剪面板。
参见:GL.LoadPixelMatrix,GL.LoadProjectionMatrix,GUI.matrix
◆ static function Scale(v:Vector3):Matrix4x4
描述:穿件一个缩放矩阵。
返回沿着坐标轴被响亮v缩放的矩阵,该矩阵看起来像这样:
v x 0 0 0
0 v y 0 0
0 0 v z 0
0 0 0 1
◆ static function TRS(pos:Vector3,q:Quaternion,s:Vector3):Matrix4x4
描述:创建一个变换,旋转和缩放矩阵。
返回的矩阵具有位置pos,旋转q和缩放s。