Exemplo n.º 1
0
        public static float SqrDistanceToPoint(Vector2 point, LineSegment2D segment)
        {
            Vector2 diff  = point - segment.Center;
            float   param = math.dot(segment.Direction, diff);
            Vector2 closestPoint;

            if (-segment.Extent < param)
            {
                if (param < segment.Extent)
                {
                    closestPoint = segment.Center + param * segment.Direction;
                }
                else
                {
                    closestPoint = segment.Point1;
                }
            }
            else
            {
                closestPoint = segment.Point0;
            }
            diff = closestPoint - point;
            return(diff.sqrMagnitude);
        }
Exemplo n.º 2
0
 public static float DistanceToPoint(this LineSegment2D lineSegment, Vector2 point)
 {
     return(Mathf.Sqrt(SqrDistanceToPoint(point, lineSegment)));
 }