Nez.PhysicsShapes.ShapeCollisions.pointToCircle C# (CSharp) Method

pointToCircle() public static method

public static pointToCircle ( Vector2 point, Circle circle, CollisionResult &result ) : bool
point Microsoft.Xna.Framework.Vector2
circle Circle
result CollisionResult
return bool
		public static bool pointToCircle( Vector2 point, Circle circle, out CollisionResult result )
		{
			result = new CollisionResult();

			// avoid the square root until we actually need it
			var distanceSquared = Vector2.DistanceSquared( point, circle.position );
			var sumOfRadii = 1 + circle.radius;
			var collided = distanceSquared < sumOfRadii * sumOfRadii;
			if( collided )
			{
				result.normal = Vector2.Normalize( point - circle.position );
				var depth = sumOfRadii - Mathf.sqrt( distanceSquared );
				result.minimumTranslationVector = -depth * result.normal;
				result.point = circle.position + result.normal * circle.radius;

				return true;
			}

			return false;
		}

Usage Example

示例#1
0
 public override bool pointCollidesWithShape(Vector2 point, out CollisionResult result)
 {
     return(ShapeCollisions.pointToCircle(point, this, out result));
 }