public static bool CheckBoxCircleCollision(MVec2 BoxPos, MVec2 BoxSize, MVec2 CirclePos, float CircleRadius) { float auxX = CirclePos.X; float auxY = CirclePos.Y; if (CirclePos.X < BoxPos.X - BoxSize.X / 2.0f) { auxX = BoxPos.X - BoxSize.X / 2.0f; } else if (CirclePos.X > BoxPos.X + BoxSize.X / 2.0f) { auxX = BoxPos.X + BoxSize.X / 2.0f; } if (CirclePos.Y < BoxPos.Y - BoxSize.Y / 2.0f) { auxY = BoxPos.Y - BoxSize.Y / 2.0f; } else if (CirclePos.Y > BoxPos.Y + BoxSize.Y / 2.0f) { auxY = BoxPos.Y + BoxSize.Y / 2.0f; } float distX = CirclePos.X - auxX; float distY = CirclePos.Y - auxY; float sqrDistance = distX * distX + distY * distY; return(sqrDistance <= CircleRadius * CircleRadius); }
public static MVec2 TiroOblicuo(float initialTime, float currentTime, MVec2 initialPosition, MVec2 Speeds, bool towardsX) { MVec2 FinalPos; float TimeDifference = currentTime - initialTime; FinalPos.X = TimeDifference * Speeds.X + initialPosition.X; FinalPos.Y = initialPosition.Y + (Gravity * TimeDifference * TimeDifference) / 2.0f + Speeds.Y * TimeDifference; return(FinalPos); }
public static MVec2 MRUV(float initialTime, float currentTime, MVec2 initialPosition, MVec2 initialSpeeds, MVec2 accelerations) { MVec2 FinalPos; float TimeDifference = currentTime - initialTime; FinalPos.X = initialPosition.X + (accelerations.X * TimeDifference * TimeDifference) / 2.0f + initialSpeeds.X * TimeDifference; FinalPos.Y = initialPosition.Y + (accelerations.Y * TimeDifference * TimeDifference) / 2.0f + initialSpeeds.Y * TimeDifference; return(FinalPos); }
public static MVec2 MRU(float initialTime, float currentTime, MVec2 initialPosition, MVec2 Speeds) { MVec2 FinalPos; float TimeDifference = currentTime - initialTime; FinalPos.X = (TimeDifference * Speeds.X) + initialPosition.X; FinalPos.Y = (TimeDifference * Speeds.Y) + initialPosition.Y; return(FinalPos); }
public static bool CheckCircleCollision(MVec2 FirstPos, float FirstRadius, MVec2 SecondPos, float SecondRadius) { MVec2 difference; difference.X = FirstPos.X - SecondPos.X; difference.Y = FirstPos.Y - SecondPos.Y; float SqrMagnitude = difference.X * difference.X + difference.Y * difference.Y; float SqrSumRadius = (FirstRadius + SecondRadius) * (FirstRadius + SecondRadius); return(SqrSumRadius >= SqrMagnitude); }
public static bool CheckBoxCollision(MVec2 FirstPos, MVec2 FirstSize, MVec2 SecondPos, MVec2 SecondSize) { bool colX = false; if (FirstPos.X == SecondPos.X) { colX = true; } else if (FirstPos.X < SecondPos.X) { if (FirstPos.X + FirstSize.X / 2.0f >= SecondPos.X - SecondSize.X / 2.0f) { colX = true; } } else { if (SecondPos.X + SecondSize.X / 2.0f >= FirstPos.X - FirstSize.X / 2.0f) { colX = true; } } bool colY = false; if (FirstPos.Y == SecondPos.Y) { colY = true; } else if (FirstPos.Y < SecondPos.Y) { if (FirstPos.Y + FirstSize.Y / 2.0f >= SecondPos.Y - SecondSize.Y / 2.0f) { colY = true; } } else { if (SecondPos.Y + SecondSize.Y / 2.0f >= FirstPos.Y - FirstSize.Y / 2.0f) { colY = true; } } return(colX && colY); }