/// <summary> /// Shortest distance from box to circle /// </summary> public double DistanceTo(Circle3d c) { if (c.Center.IsInside(this)) { return(0); } double min_dist = Double.PositiveInfinity; foreach (Triangle triangle in ListOfTriangles) { double dist = c.DistanceTo(triangle); if (dist < min_dist) { min_dist = dist; } } return(min_dist); }
/// <summary> /// Shortest distance between plane and circle (including interior points) /// </summary> /// <param name="c">Target circle</param> /// <param name="point_on_plane">Closest point on plane</param> /// <param name="point_on_circle">Closest point on circle</param> public double DistanceTo(Circle3d c, out Point3d point_on_plane, out Point3d point_on_circle) { return(c.DistanceTo(this, out point_on_circle, out point_on_plane)); }
/// <summary> /// Distance from plane to circle /// </summary> public double DistanceTo(Circle3d c) { return(c.DistanceTo(this)); }
/// <summary> /// Shortest distance between sphere and circle (including interior points) (approximate solution). /// <para> The output points may be not unique in case of intersecting objects.</para> /// </summary> /// <param name="c">Target circle</param> /// <param name="p1">Closest point on sphere</param> /// <param name="p2">Closest point on circle</param> public double DistanceTo(Circle3d c, out Point3d p1, out Point3d p2) { return(c.DistanceTo(this, out p2, out p1)); }
/// <summary> /// Shortest distance between triangle and circle (including interior points) /// </summary> public double DistanceTo(Circle3d c) { Point3d point_on_circle, point_on_triangle; return(c.DistanceTo(this, out point_on_circle, out point_on_triangle)); }
/// <summary> /// Shortest distance between segment and circle (including interior points) /// </summary> /// <param name="c">Target circle</param> /// <param name="point_on_segment">Closest point on segment</param> /// <param name="point_on_circle">Closest point on circle</param> public double DistanceTo(Circle3d c, out Point3d point_on_segment, out Point3d point_on_circle) { return(c.DistanceTo(this, out point_on_circle, out point_on_segment)); }