1. 程式人生 > >Unity學子之Mathf運算

Unity學子之Mathf運算

在最近學習的unity自帶的第三人稱時,在學習其的指令碼總結了Mathf運算中的函式,有些是直接翻譯官方的,有些是自己用過寫下的總結,由於有些地方也不是很懂,直接看官方的API。如有錯誤請指出謝謝。

1)Mathf.Abs

Public static float Abs(float f);

返回絕對值f

Public static int (int a)

返回絕對值a

2)Mathf.Acos

Public static float Acos(float f)

返回f的反餘弦值

3)Mathf.Approximately

Public static bool Approximately(float a, float b)

比較兩個浮點值,如果相近返回true,

浮點不精確使得使用等於運算子的浮點數不準確。例如,(1.0 == 10.0 / 10.0)每次都可能不會返回trueApproximately()比較兩個浮點數,如果它們在彼此的小值(Epsilon)內,則返回true 

4)Mathf.Asin

Public static float Asin(float f)

返回f的反正弦值

5)Mathf.Atan

Public static float Atan(float f)

返回f的反正切值

6)Mathf.Atan2

Public static float Atan2(float y, float x)

返回tan為y/x的以弧度為單位的角

此函式是預防x為0的情況,當x為0的時候可以進行計算並返回正確的值,而不是丟擲除零異常

7)Mathf.ceil和Mathf.ceilToint

Public static float ceil(float f)

返回大於或等於f的最小整數值(浮點型)

Public static int ceilToint(float f)

返回大於或等於f的最小整數值(整數型)

8)Mathf.Clamp

Public static float Clamp(float value,float min,float max)

若value值在min和max之間,返回value,若小於min,返回min,若大於max返回max

9)Mathf.Clamp01

Publics static float Clamp01(float value)

value值介於0和1之間進行輸出

10)Mathf. ClosestPowerOfTwo

Public static float ClosestPowerTwo(float value)

返回最接近value的2的冪的值

11)Mathf. CorrelatedColorTemperatureToRGB

Public static Color CorrelatedColorTemperatureToRGB(float kelvin)

kelvin以開爾文為單位。範圍在1000到40000,

將開爾文的色溫轉換為RGB顏色。

給定相關色溫(以開爾文為單位),估算RGB當量。曲線擬合誤差最大為0.008
相關色溫定義為從理想黑體發射的電磁輻射的色溫,其表面溫度以開爾文度給出。
溫度必須在100040000度之間

12)Mathf.Cos

Public static float Cos(float f)

返回f的餘弦值

13)Mathf.DeltaAngle

Public static float DeltaAngle(float current ,float target)

返回target - current的差值

14)Mathf.Exp

Public static float Exp(float power)

返回e的power次方的值

15)Mathf.floor和Mathf.floorToint

Public static float Floor(float f)

返回小於或等於f的最小整數值(浮點型)

Public static int floorToInt(int f)

返回小於或等於f的最小整數值(整數型)

?16)Mathf.GammaToLinearSpace

Public static float GammaToLinearSpace(float value)

將給定值從gamma (sRGB)轉換為線性顏色空間。

17)Mathf.InverseLerp

Public static float InverseLerp(float a,float b,float value)

返回value在a和b之間所佔的百分比值

18)Mathf.IsPowerOfTwo

Public static bool IsPowerOfTwo(int value)

若value可以被2整除,返回true,若不可以返回false

19)Mathf.Lerp

Public static float Lerp(float a, float b,float t)

t是a到b之間的差值(類似百分比)

t的取值範圍在0-1,當t=0時,返回a,當t=1時,返回b,t=0.5,返回中間值,

20)Mathf.LerpAngle

Public static float LerpAngle(float a ,float b, float t)

和lerp原理是相同,只不過這個是個角度的差值,確保在360環繞時能做出正確的環繞差值

?21)Mathf.LerpUnclamped

Public static float LerpUnclamped(float a,float b, float t)

和lerp原理相同,只是這裡的t並沒有受限制,可以超出範圍,

計算過程,c=(b-a)/t,若t小於a,從a中減去c,就是返回值

?22)Mathf. LinearToGammaSpace

Public static float LinearToGammaSpace

將給定值從線性顏色空間轉換為gamma (sRGB)

23)Mathf.log

Public static float Log(float f,float p)

返回以p為底f的對數

24)Mathf.log10

Public static float Log10(float f)

返回以10為底f的對數

25)Mathf.Max

Public static float Max(float a,float b)

Public static float Max(float []values)

返回兩個或多個值其中最大的一個

26)Mathf.Min

Public static float Min(float a,float b)

Public static float Min(float []values)

返回兩個或多個值其中最小的一個

27)Mathf.MoveToWards

Public static MoveToWards(float current,float target float maxDelta)

與mathf.lerp()差不多,但是確保了current的值不會超過maxDelta

?28)Mathf.MoveToWardsAngle

Public static MoveToWardsAngle(float current,float target float maxDelta)

與movetowards方法差不多,只不過換成角度了,確保在360環繞時插入正確的值,由於優化原因,maxDelta不能為負值,可能會引起震盪

29)Mathf.NextPowerOfTwo

Public static int NextPowerOfTwo(int value)

返回兩個值的下一個冪。

?30)Mathf.PerlinNoise

Public static float PerlinNoise(float x,float y)

float 值介於0.01.0之間。(返回值可能稍微超過1.0。)

生成2D Perlin噪音。

Perlin噪聲是在2D平面上生成的浮點值的偽隨機模式(儘管該技術確實推廣到三維或更多維,但這在Unity中沒有實現)。噪聲在每個點上不包含完全隨機的值,而是由組成,其值在整個模式中逐漸增大和減小。噪聲可以用作紋理效果的基礎,也可以用於動畫,生成地形高度圖和許多其他內容。Perlin噪聲取樣範圍為0..10(灰度值表示0..1的值)
可以通過傳遞適當的XY座標對平面中的任何點進行取樣。相同的座標將始終返回相同的樣本值,但平面基本上是無限的,因此通過選擇要從中進行取樣的隨機區域,可以輕鬆避免重複。

31)Mathf.pingpong

Public static float Pingpong(float t,float length)

返回值t將在0和length之間移動,不會超出這個範圍

32)Mathf.Pow

Public static float Pow(float f,float p)

返回f的p次方

33)Mathf.Repeat

Public static float Repeat(float t,float length)

返回從0到length之間的值,迴圈t-length(不為負數)迴圈到無法再減時輸出

34)Mathf.Round和Mathf.RoundToInt

Public static float Round(float t)

返回t四捨五入的最近整數值,當t小數後為.5時,則代表t位於兩個整數之間,一邊是偶數。一邊是奇數,則返回偶數

36)Mathf.Sign

Public static float Sign(float t)

當t是正數或0時,返回1,當t為負數時,返回-1

37)Mathf.Sin

Public static float Sin(float f)

返回f的正弦值

38)Mathf.SmoothDamp

public static float SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

隨著時間的推移,逐漸將一個值改變為想要的目標值。

current

The current position.

target

The position we are trying to reach.

currentVelocity

The current velocity, this value is modified by the function every time you call it.

smoothTime

Approximately the time it will take to reach the target. A smaller value will reach the target faster.

maxSpeed

Optionally allows you to clamp the maximum speed.

deltaTime

The time since the last call to this function. By default Time.deltaTime.

Current:當前的位置

Target:想要到達的位置

currentVelocity:當前速度,每次函式呼叫都會改變

smoothTime:想要到達目標的時間

maxspeed:最大速度

deltaTime:上一幀結束到下一幀開始的時間

39)Mathf.SmoothDampAngle

public static float SmoothDampAngle(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime);

隨著時間的推移,逐漸改變給定的角度,使之朝著目標角度傾斜

引數設定是與SmoothDamp函式相同的,只不過這裡是角度,

這兩個函式可以用來平滑任何型別的值,位置、顏色。

40)Mathf.SmoothStep

Public static SmoothStep(float from,float to,float t)

在極限之間插入minmax平滑處理。

此函式在Lerp之間插入,minmax以類似的方式插入。但是,插值將從開始逐漸加速(從from逐漸向to加速),然後向下慢化。這對於建立自然的動畫,淡入淡出和其他過渡非常有用。

41)Mathf.Sqrt

Public static Sqrt(float f)

返回f的平方根

42)Mathf.Tan

Public static Tan(float f)

返回f的正切值