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。