Unity Mathf类 笔记

Unity中常用的基本数学库——Mathf

  需要在命名空间UnityEngine下。

参考官方文档:Mathf
Ceeger视界:Mathf 数学运算


静态变量(都是只读的)

变量名说明使用
Deg2RadDegrees-to-radians。把角度换成弧度的变量,等价 (PI * 2)/360 。角度 * Mathf.Deg2Rad == 弧度
Rad2DegRadians-to-degrees。等价 360/(PI * 2)。弧度 * Mathf.Rad2Deg == 角度
Epsilon大于0的最小float的值,常用来避免系统误差。我之前写过,点这里if (a >= b - Mathf.Epsilon && a <= b + Mathf.Epsilon)排除系统误差,判断a的值等于b。
Infinity正无穷,可能是浮点数的最大值吧。略。
NegativeInfinity负无穷。略。
PI3.14159265358979…略。

静态方法

  下面的方法声明都省略了public static 关键字。

三角函数

方法名声明说明
Acosfloat Acos(float f)返回反余弦值。
Asinfloat Asin(float f)返回反正弦值。
Atanfloat Atan(float f)返回反正切值。
Atan2float Atan2(float y, float x)返回反正切值。允许x等于0,及不像Atan(y/x);(x==0)时会抛出异常。所以最好用这个求反正切值。
Cosfloat Cos(float f)返回余弦值。
Sinfloat Sin(float f)返回正弦值。
Tanfloat Tan(float f)返回正切值。

数值转换

方法名声明说明
Absfloat Abs(float f)返回绝对值,浮点型。
Ceilfloat Ceil(float f)返回大于f的最小整数,浮点型。
CeilToIntint CeilToInt(float f)同上,返回整形。
Clampfloat Clamp(float value, float min, float max)返回value限制在min和max范围内的值。就是如果value小于min返回min,大于max就返回max,否则返回value。
Clamp01float Clamp01(float value)限制在0到1之间。等价Clamp(value,0,1)。
Floorfloat Floor(float f)返回小于f的最大整数。
FloorToIntint FloorToInt(float f)同上,返回整形。
Expfloat Exp(float power)返回e的power次方。e为自然指数(2.71828182845904523536…)
Logfloat Log(float f, float p)返回 logpf 的值,f是真值,p是底数。
Log10float Log10(float f)返回 lgf 的值。
Powfloat Pow(float f, float p)返回 fp ,f的p次幂。
Roundfloat Round(float f)四舍五入,但是比较诡异的是不管正负,如果小数部分是0.5,那就返回靠近的偶数,如10.5返回10,11.5返回12。
RoundToIntint RoundToInt(float f)同上,返回整形。
Sqrtfloat Sqrt(float f)返回 f 。f为被开方数。

数值处理

方法名声明说明
Approximatelybool Approximately(float a, float b)判断两个浮点数是否相近,就是上面Mathf.Epsilon使用的意思 。
ClosestPowerOfTwoint ClosestPowerOfTwo(int value)返回最靠近(value的二次方)的数。如value值为7,返回8(2^3),value值为19,返回16(2^4)。
DeltaAnglefloat DeltaAngle(float current, float target)返回两个角最小相差的角度,可以理解为先把两个角都缩小到0-360度内,然后再比较两个角相差角度。
IsPowerOfTwobool IsPowerOfTwo(int value)判断是否是2的次幂。
Maxfloat Max(params float[] values)返回最大的数。
Minfloat Min(params float[] values)返回最小的数。
NextPowerOfTwoint NextPowerOfTwo(int value)返回下一个二次幂,如value为7,返回8;value为139,返回256。
Signfloat Sign(float f)如果f大于等于0,返回1;反之返回-1。

曲线

方法名声明说明
InverseLerpfloat InverseLerp(float a, float b, float value)返回反插值。等价于b - t * (b-a)
Lerpfloat Lerp(float a, float b, float t)返回插值。a小于b,t范围在0~1之间,相当于百分比,等价于t * (b-a) + a
LerpAnglefloat LerpAngle(float a, float b, float t)类似插值,相当于a和b都取360的余数再计算(0 == 360),如果b-a大于180,会变成相当于(b-a-360),及如果b-a等于270度,实际就是-90度。
LerpUnclampedfloat LerpUnclamped(float a, float b, float t)类似插值,但t没有限制,可以爆表的意思。
MoveTowardsfloat MoveTowards(float current, float target, float maxDelta)类似Lerp,但它返回值确保不超过maxDelta,maxDelta为负就是反方向的意思。
MoveTowardsAnglefloat MoveTowardsAngle(float current, float target, float maxDelta)类似LerpAngle ,maxDelta不为负,要反方向的话加180度。
PingPongfloat PingPong(float t, float length)(这方法名真是666)意思就是返回0到length之间摆动的值,初始值为t。实质有点像正弦那曲线,只不过是直的。
Repeatfloat Repeat(float t, float length)从0到length的周期变化,类似t对length求模。只不过t是浮点的,更牛了。
SmoothDampfloat SmoothDamp(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime)平滑阻尼,就是很顺溜的减速过去目标,返回新的current值,常见用于镜头跟踪。
SmoothDampAnglefloat SmoothDampAngle(float current, float target, ref float currentVelocity, float smoothTime, float maxSpeed = Mathf.Infinity, float deltaTime = Time.deltaTime)类似上面,减速到目标角度。像有人叫你,你头转向目标。
SmoothStepfloat SmoothStep(float from, float to, float t)平滑插值,逐渐加速然后逐渐减速。返回当前位置。

借用Unity的动画曲线

曲线类名曲线图
Lerp系列,Move系列Lerp系列,Move系列
PingPongPingPong
RepeatRepeat
SmoothDamp系列SmoothDamp系列
SmoothStepSmoothStep

其他

方法名声明说明
CorrelatedColorTemperatureToRGBColor CorrelatedColorTemperatureToRGB(float kelvin)把温度(开氏度)变成颜色,kelvin范围在1000到40000。
GammaToLinearSpacefloat GammaToLinearSpace(float value)转换gamma(sRGB)到linear color space。
LinearToGammaSpacefloat LinearToGammaSpace(float value)转换liner到 gamma color space。
PerlinNoisefloat PerlinNoise(float x, float y)柏林噪波,可以生成比较舒服的随机数,就是说不是完全随机的,有总渐变效果的,可以用来产生随机颜色的渐变效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值