Praeclarum.Graphics.LineSegmentF.DistanceTo C# (CSharp) Метод

DistanceTo() публичный Метод

public DistanceTo ( PointF p3 ) : float
p3 PointF
Результат float
		public float DistanceTo (PointF p3)
		{
			var x21 = EndX - X;
			var y21 = EndY - Y;
			var x31 = p3.X - X;
			var y31 = p3.Y - Y;

			var d = x21*x21 + y21*y21;
			if (d <= 0) return (float)Math.Sqrt (x31*x31 + y31*y31);

			var n = x31*x21 + y31*y21;
			var u = n / d;

			if (u <= 0) {
				return (float)Math.Sqrt (x31*x31 + y31*y31);
			}
			else if (u >= 1) {
				var x32 = p3.X - EndX;
				var y32 = p3.Y - EndY;
				return (float)Math.Sqrt (x32*x32 + y32*y32);
			}
			else {
				var dx = X + u*x21 - p3.X;
				var dy = Y + u*y21 - p3.Y;
				return (float)Math.Sqrt (dx*dx + dy*dy);
			}
		}