public LVector2(LFloat x, LFloat y) { this._x = x._val; this._y = y._val; }
public static Vector3 ToVector3XZ(this LVector2 vec, LFloat y) { return(new Vector3(vec.x.ToFloat(), y.ToFloat(), vec.y.ToFloat())); }
public static LVector2 Lerp(LVector2 a, LVector2 b, LFloat f) { return(new LVector2(true, (int)(((long)(b._x - a._x) * f._val) / LFloat.Precision) + a._x, (int)(((long)(b._y - a._y) * f._val) / LFloat.Precision) + a._y)); }
public static LFloat Max(LFloat a, LFloat b) { return(new LFloat(true, Max(a._val, b._val))); }
public static LFloat Lerp(LFloat a, LFloat b, LFloat f) { return(new LFloat(true, (int)(((long)(b._val - a._val) * f._val) / LFloat.Precision) + a._val)); }
public static bool SameSign(LFloat a, LFloat b) { return((long)a._val * b._val > 0L); }
public static int Sign(LFloat val) { return(System.Math.Sign(val._val)); }
//ccw public static LFloat Cos(LFloat radians) { return(new LFloat(true, LUTCos.table[_GetIdx(radians)])); }
public static LFloat Sqr(LFloat a) { return(a * a); }
public static LFloat Atan2(LFloat y, LFloat x) { return(Atan2(y._val, x._val)); }
//ccw public static LFloat Sin(LFloat radians) { return(new LFloat(true, LUTSin.table[_GetIdx(radians)])); }
public static LFloat Range(LFloat min, LFloat max) { return(_i.Range(min, max)); }
public LVector3(LFloat x, LFloat y, LFloat z) { this._x = x._val; this._y = y._val; this._z = z._val; }
public static LFloat Sqrt(LFloat val) { return(Lockstep.Math.LMath.Sqrt(val)); }
public static LFloat Cos(LFloat radians) { int index = LUTSinCos.getIndex(radians); return(new LFloat(true, (long)LUTSinCos.cos_table[index] / 10)); }
/// <summary> /// 夹角大小 /// </summary> /// <param name="a"></param> /// <param name="b"></param> /// <returns></returns> public static LFloat Angle(LQuaternion a, LQuaternion b) { LFloat single = Dot(a, b); return(LMath.Acos(LMath.Min(LMath.Abs(single), LFloat.one)) * 2 * (180 / LMath.PI)); }