public static TSVector2 Multiply(TSVector2 value1, FP scaleFactor) { value1.x *= scaleFactor; value1.y *= scaleFactor; return(value1); }
public static void LerpUnclamped(ref TSVector2 value1, ref TSVector2 value2, FP amount, out TSVector2 result) { result = new TSVector2( TSMath.Lerp(value1.x, value2.x, amount), TSMath.Lerp(value1.y, value2.y, amount)); }
public void Scale(TSVector2 other) { this.x = x * other.x; this.y = y * other.y; }
public static TSQuaternion Inverse(TSQuaternion rotation) { FP invNorm = FP.One / ((rotation.x * rotation.x) + (rotation.y * rotation.y) + (rotation.z * rotation.z) + (rotation.w * rotation.w)); return(TSQuaternion.Multiply(TSQuaternion.Conjugate(rotation), invNorm)); }
/// <summary> /// Constructor for "square" vector. /// </summary> /// <param name="value"> /// A <see cref="System.Single"/> /// </param> public TSVector2(FP value) { x = value; y = value; }
public static void SmoothStep(ref TSVector2 value1, ref TSVector2 value2, FP amount, out TSVector2 result) { result = new TSVector2( TSMath.SmoothStep(value1.x, value2.x, amount), TSMath.SmoothStep(value1.y, value2.y, amount)); }
public static TSQuaternion Slerp(TSQuaternion from, TSQuaternion to, FP t) { t = TSMath.Clamp(t, 0, 1); FP dot = Dot(from, to); if (dot < 0) { to = Multiply(to, -1); dot = -dot; } FP halfTheta = FP.Acos(dot); return(Multiply(Multiply(from, FP.Sin((1 - t) * halfTheta)) + Multiply(to, FP.Sin(t * halfTheta)), 1 / FP.Sin(halfTheta))); }
public static void DistanceSquared(ref TSVector2 value1, ref TSVector2 value2, out FP result) { result = (value1.x - value2.x) * (value1.x - value2.x) + (value1.y - value2.y) * (value1.y - value2.y); }
public static void Dot(ref TSVector2 value1, ref TSVector2 value2, out FP result) { result = value1.x * value2.x + value1.y * value2.y; }
public static TSVector2 CatmullRom(TSVector2 value1, TSVector2 value2, TSVector2 value3, TSVector2 value4, FP amount) { return(new TSVector2( TSMath.CatmullRom(value1.x, value2.x, value3.x, value4.x, amount), TSMath.CatmullRom(value1.y, value2.y, value3.y, value4.y, amount))); }
public static void Distance(ref TSVector2 value1, ref TSVector2 value2, out FP result) { DistanceSquared(ref value1, ref value2, out result); result = (FP)FP.Sqrt(result); }
public static void Barycentric(ref TSVector2 value1, ref TSVector2 value2, ref TSVector2 value3, FP amount1, FP amount2, out TSVector2 result) { result = new TSVector2( TSMath.Barycentric(value1.x, value2.x, value3.x, amount1, amount2), TSMath.Barycentric(value1.y, value2.y, value3.y, amount1, amount2)); }
public static TSVector2 Barycentric(TSVector2 value1, TSVector2 value2, TSVector2 value3, FP amount1, FP amount2) { return(new TSVector2( TSMath.Barycentric(value1.x, value2.x, value3.x, amount1, amount2), TSMath.Barycentric(value1.y, value2.y, value3.y, amount1, amount2))); }
public void Set(FP x, FP y) { this.x = x; this.y = y; }
public static void Multiply(ref TSVector2 value1, FP scaleFactor, out TSVector2 result) { result.x = value1.x * scaleFactor; result.y = value1.y * scaleFactor; }
public static TSVector2 Hermite(TSVector2 value1, TSVector2 tangent1, TSVector2 value2, TSVector2 tangent2, FP amount) { TSVector2 result = new TSVector2(); Hermite(ref value1, ref tangent1, ref value2, ref tangent2, amount, out result); return(result); }
public static TSVector2 SmoothStep(TSVector2 value1, TSVector2 value2, FP amount) { return(new TSVector2( TSMath.SmoothStep(value1.x, value2.x, amount), TSMath.SmoothStep(value1.y, value2.y, amount))); }
public static void Hermite(ref TSVector2 value1, ref TSVector2 tangent1, ref TSVector2 value2, ref TSVector2 tangent2, FP amount, out TSVector2 result) { result.x = TSMath.Hermite(value1.x, tangent1.x, value2.x, tangent2.x, amount); result.y = TSMath.Hermite(value1.y, tangent1.y, value2.y, tangent2.y, amount); }
public static FP Angle(TSVector2 a, TSVector2 b) { return(FP.Acos(a.normalized * b.normalized) * FP.Rad2Deg); }
public static TSVector2 ClampMagnitude(TSVector2 vector, FP maxLength) { return(Normalize(vector) * maxLength); }
public static TSQuaternion RotateTowards(TSQuaternion from, TSQuaternion to, FP maxDegreesDelta) { FP dot = Dot(from, to); if (dot < 0) { to = Multiply(to, -1); dot = -dot; } FP halfTheta = FP.Acos(dot); FP theta = halfTheta * 2; maxDegreesDelta *= FP.Deg2Rad; if (maxDegreesDelta >= theta) { return(to); } maxDegreesDelta /= theta; return(Multiply(Multiply(from, FP.Sin((1 - maxDegreesDelta) * halfTheta)) + Multiply(to, FP.Sin(maxDegreesDelta * halfTheta)), 1 / FP.Sin(halfTheta))); }
public static TSVector2 LerpUnclamped(TSVector2 value1, TSVector2 value2, FP amount) { return(new TSVector2( TSMath.Lerp(value1.x, value2.x, amount), TSMath.Lerp(value1.y, value2.y, amount))); }
public static TSQuaternion Lerp(TSQuaternion a, TSQuaternion b, FP t) { t = TSMath.Clamp(t, FP.Zero, FP.One); return(LerpUnclamped(a, b, t)); }
/// <summary> /// Constructor foe standard 2D vector. /// </summary> /// <param name="x"> /// A <see cref="System.Single"/> /// </param> /// <param name="y"> /// A <see cref="System.Single"/> /// </param> public TSVector2(FP x, FP y) { this.x = x; this.y = y; }