/// <summary>Returns squared max distance between two bounding boxes.</summary> /// <remarks>Returns squared max distance between two bounding boxes. This is furthest distance between points on the two envelopes.</remarks> /// <param name="other">The bounding box to calculate the max distance two.</param> /// <returns>Squared distance value.</returns> public double SqrMaxDistance(com.epl.geometry.Envelope2D other) { if (IsEmpty() || other.IsEmpty()) { return(com.epl.geometry.NumberUtils.TheNaN); } double dist = 0; com.epl.geometry.Point2D[] points = new com.epl.geometry.Point2D[4]; QueryCorners(points); com.epl.geometry.Point2D[] points_o = new com.epl.geometry.Point2D[4]; other.QueryCorners(points_o); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { double d = com.epl.geometry.Point2D.SqrDistance(points[i], points_o[j]); if (d > dist) { dist = d; } } } return(dist); }
public virtual void QueryCoordinates(com.epl.geometry.Point2D[] dst) { if (dst == null || dst.Length < 4 || m_envelope.IsEmpty()) { throw new System.ArgumentException(); } m_envelope.QueryCorners(dst); }
public virtual void TestEnvelope2D_corners() { com.epl.geometry.Envelope2D env = new com.epl.geometry.Envelope2D(0, 1, 2, 3); NUnit.Framework.Assert.IsFalse(env.Equals(null)); NUnit.Framework.Assert.IsTrue(env.Equals((object)new com.epl.geometry.Envelope2D(0, 1, 2, 3))); com.epl.geometry.Point2D pt2D = env.GetLowerLeft(); NUnit.Framework.Assert.IsTrue(pt2D.Equals(com.epl.geometry.Point2D.Construct(0, 1))); pt2D = env.GetUpperLeft(); NUnit.Framework.Assert.IsTrue(pt2D.Equals(com.epl.geometry.Point2D.Construct(0, 3))); pt2D = env.GetUpperRight(); NUnit.Framework.Assert.IsTrue(pt2D.Equals(com.epl.geometry.Point2D.Construct(2, 3))); pt2D = env.GetLowerRight(); NUnit.Framework.Assert.IsTrue(pt2D.Equals(com.epl.geometry.Point2D.Construct(2, 1))); { com.epl.geometry.Point2D[] corners = new com.epl.geometry.Point2D[4]; env.QueryCorners(corners); NUnit.Framework.Assert.IsTrue(corners[0].Equals(com.epl.geometry.Point2D.Construct(0, 1))); NUnit.Framework.Assert.IsTrue(corners[1].Equals(com.epl.geometry.Point2D.Construct(0, 3))); NUnit.Framework.Assert.IsTrue(corners[2].Equals(com.epl.geometry.Point2D.Construct(2, 3))); NUnit.Framework.Assert.IsTrue(corners[3].Equals(com.epl.geometry.Point2D.Construct(2, 1))); env.QueryCorners(corners); NUnit.Framework.Assert.IsTrue(corners[0].Equals(env.QueryCorner(0))); NUnit.Framework.Assert.IsTrue(corners[1].Equals(env.QueryCorner(1))); NUnit.Framework.Assert.IsTrue(corners[2].Equals(env.QueryCorner(2))); NUnit.Framework.Assert.IsTrue(corners[3].Equals(env.QueryCorner(3))); } { com.epl.geometry.Point2D[] corners = new com.epl.geometry.Point2D[4]; env.QueryCornersReversed(corners); NUnit.Framework.Assert.IsTrue(corners[0].Equals(com.epl.geometry.Point2D.Construct(0, 1))); NUnit.Framework.Assert.IsTrue(corners[1].Equals(com.epl.geometry.Point2D.Construct(2, 1))); NUnit.Framework.Assert.IsTrue(corners[2].Equals(com.epl.geometry.Point2D.Construct(2, 3))); NUnit.Framework.Assert.IsTrue(corners[3].Equals(com.epl.geometry.Point2D.Construct(0, 3))); env.QueryCornersReversed(corners); NUnit.Framework.Assert.IsTrue(corners[0].Equals(env.QueryCorner(0))); NUnit.Framework.Assert.IsTrue(corners[1].Equals(env.QueryCorner(3))); NUnit.Framework.Assert.IsTrue(corners[2].Equals(env.QueryCorner(2))); NUnit.Framework.Assert.IsTrue(corners[3].Equals(env.QueryCorner(1))); } NUnit.Framework.Assert.IsTrue(env.GetCenter().Equals(com.epl.geometry.Point2D.Construct(1, 2))); NUnit.Framework.Assert.IsFalse(env.ContainsExclusive(env.GetUpperLeft())); NUnit.Framework.Assert.IsTrue(env.Contains(env.GetUpperLeft())); NUnit.Framework.Assert.IsTrue(env.ContainsExclusive(env.GetCenter())); }
/// <summary>Transforms envelope</summary> /// <param name="env">The envelope that is to be transformed</param> internal void Transform(com.epl.geometry.Envelope2D env) { if (env.IsEmpty()) { return; } com.epl.geometry.Point2D[] buf = new com.epl.geometry.Point2D[4]; env.QueryCorners(buf); Transform(buf, buf); env.SetFromPoints(buf, 4); }