public void ExecuteTest(Operations operation, int innerIterations, Vector2 v1, Vector2 v2) { Vector2 res; switch (operation) { case Operations.Add_Operator: for (int i = 0; i < innerIterations; i++) { res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; res = v1 + v2; } break; case Operations.Add_Function: for (int i = 0; i < innerIterations; i++) { Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); Vector2.Add(v1, v2); } break; case Operations.Sub_Operator: for (int i = 0; i < innerIterations; i++) { res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; res = v1 - v2; } break; case Operations.Sub_Function: for (int i = 0; i < innerIterations; i++) { Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); Vector2.Subtract(v1, v2); } break; case Operations.Mul_Operator: for (int i = 0; i < innerIterations; i++) { res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; res = v1 * v2; } break; case Operations.Mul_Function: for (int i = 0; i < innerIterations; i++) { Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); Vector2.Multiply(v1, v2); } break; case Operations.Dot: for (int i = 0; i < innerIterations; i++) { Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); Vector2.Dot(v1, v2); } break; case Operations.SquareRoot: for (int i = 0; i < innerIterations; i++) { Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); Vector2.SquareRoot(v1); } break; case Operations.Length_Squared: for (int i = 0; i < innerIterations; i++) { v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); v1.LengthSquared(); } break; case Operations.Normalize: for (int i = 0; i < innerIterations; i++) { Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); Vector2.Normalize(v1); } break; case Operations.Distance_Squared: for (int i = 0; i < innerIterations; i++) { Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); Vector2.DistanceSquared(v1, v2); } break; } }
//keep player who see character //when character walk send to list internal float CalculateDistant() { var distantVector3 = target - Position; var distantVector2 = new System.Numerics.Vector2(distantVector3.X, distantVector3.Z); return(MathF.Sqrt(distantVector2.LengthSquared())); }
public static Vector2 Random2DNormal() { var angle = ThreadSafeRandom.NextDouble() * 2 * Math.PI; // Random angle (radians) in [0,360) var result = new Vector2( (float)Math.Cos(angle), (float)Math.Sin(angle) ); Debug.Assert(MathF.Abs(result.LengthSquared() - 1) < 0.001f); return(result); }
/// <summary> /// /// </summary> /// <param name="v"></param> /// <param name="other"></param> /// <returns></returns> public static Vector2 Projection(this Vector2 v, Vector2 other) => Vector2.Dot(v, other) / other.LengthSquared() * other;
[MethodImpl(MethodImplOptions.AggressiveInlining)] public static FLOAT LengthSquared(VECTOR v) { return(v.LengthSquared()); }
internal override void SolveVelocityConstraints(ref TimeStep step) { Body b = _bodyB; XForm xf1; b.GetXForm(out xf1); Vector2 r = MathUtils.Multiply(ref xf1.R, _localAnchor - b.GetLocalCenter()); // Cdot = v + cross(w, r) Vector2 Cdot = b._linearVelocity + MathUtils.Cross(b._angularVelocity, r); Vector2 impulse = MathUtils.Multiply(ref _mass, -(Cdot + _beta * _C + _gamma * _impulse)); Vector2 oldImpulse = _impulse; _impulse += impulse; float maxImpulse = step.dt * _maxForce; if (_impulse.LengthSquared() > maxImpulse * maxImpulse) { _impulse *= maxImpulse / _impulse.Length(); } impulse = _impulse - oldImpulse; b._linearVelocity += b._invMass * impulse; b._angularVelocity += b._invI * MathUtils.Cross(r, impulse); }