public static Vector2 MultiplyVector2(FMatrix3x3 m1, Vector2 vec) { Vector2 outVector = new Vector2(); outVector.x = m1.m00 * vec.x + m1.m01 * vec.y + m1.m02; outVector.y = m1.m10 * vec.x + m1.m11 * vec.y + m1.m12; return(outVector); }
public static FAABB2D Multiply(FAABB2D box, FMatrix3x3 matrix) { return(new FAABB2D() { Min = matrix * box.Min, Max = matrix * box.Max }); }
protected override void UpdateCollisionBody_internal() { FCollRect rect = new FCollRect() { Offset = Offset, Size = Size }; rect.TRS = FMatrix3x3.CreateTRS(Vector2.zero, transform.rotation.eulerAngles.z, transform.localScale); CollisionBody = rect.ToPoly(); }
protected override void UpdateCollisionBody_internal() { FMatrix3x3 TRS = FMatrix3x3.CreateTRS(Offset, transform.rotation.eulerAngles.z, transform.localScale); CollisionBody = new FCollPoly() { Vertices = new Vector2[Vertices.Length] }; for (int i = 0; i < Vertices.Length; i++) { CollisionBody.Vertices[i] = TRS * Vertices[i]; } }
public static FMatrix3x3 CreateTRS(Vector2 translation, float rotation, Vector2 scale) { float cos = Mathf.Cos(rotation * Mathf.Deg2Rad); float sin = Mathf.Sin(rotation * Mathf.Deg2Rad); FMatrix3x3 m = new FMatrix3x3(); m.m00 = scale.x * cos; m.m01 = scale.y * -sin; m.m02 = translation.x; m.m10 = scale.x * sin; m.m11 = scale.y * cos; m.m12 = translation.y; m.m20 = 0; m.m21 = 0; m.m22 = 1; return(m); }
public static Vector2 operator *(FMatrix3x3 m, Vector2 v) { return(FMatrix3x3.MultiplyVector2(m, v)); }