// 20111014 public Extent2D GetExtent() { Extent2D result = Extent2D.Null; points.ForEach(p => result.AddPoint(p)); return(result); }
public static double CoincidenceEvaluation(Extent2D ext1, Extent2D ext2) // newly 20130402 { double dist = ext1.Center.DistTo(ext2.Center); double minArea = Math.Min(ext1.Area, ext2.Area); return(dist * dist / minArea); }
public bool IsCrossedBy(Extent2D extents) { //Point2D p1 = new Point2D(min.x, max.y); //Point2D p2 = new Point2D(max.x, min.y); //return extents.IsPointIn(p1) || extents.IsPointIn(p2) || extents.IsPointIn(min) || extents.IsPointIn(max) || IsExtentsIn(extents) || extents.IsExtentsIn(this); Extent2D sum = this + extents; return((sum.XRange <= this.XRange + extents.XRange) && (sum.YRange <= this.YRange + extents.YRange)); }
// 20111014 public void Add(Extent2D ext) { if (this.IsNull) { min = ext.min; max = ext.max; IsNull = ext.IsNull; } else { if (ext.IsNull) { return; } min = new Point2D(Math.Min(min.X, ext.min.X), Math.Min(min.Y, ext.min.Y)); max = new Point2D(Math.Max(max.X, ext.max.X), Math.Max(max.Y, ext.max.Y)); } }
public bool IsCoveredBy(Extent2D extents) // newly 20130328 { return(extents.min.X >= min.X && extents.min.Y >= min.Y && extents.max.X <= max.X && extents.max.Y <= max.Y); }
public bool IsExtentsIn(Extent2D extents) { return(extents.min.X >= min.X && extents.min.Y >= min.Y && extents.max.X <= max.X && extents.max.Y <= max.Y); }