} // public override int ComputeOrientation(Coordinate p1, Coordinate p2, Coordinate q) /// <summary> /// Tests to see if point p is in the envelope of ring. /// </summary> /// <param name="p">Point to test.</param> /// <param name="ring">Geometry from which to create envelope.</param> /// <returns>Returns true if point is in envelope of ring.</returns> private bool IsInEnvelope(Coordinate p, Coordinates ring) { Envelope envelope = new Envelope(); for (int i = 0; i < ring.Count; i++) { envelope.ExpandToInclude( ring[i] ); } return envelope.Contains( p ); } // private bool IsInEnvelope(Coordinate p, Coordinates ring)
/// <summary> /// Return a square envelope containing the argument envelope, /// whose extent is a power of two and which is based at a power of 2. /// </summary> /// <param name="itemEnv"></param> public void ComputeKey(Envelope itemEnv) { _level = ComputeQuadLevel(itemEnv); _env = new Envelope(); ComputeKey( _level, itemEnv ); // MD - would be nice to have a non-iterative form of this algorithm while ( !_env.Contains( itemEnv ) ) { _level += 1; ComputeKey( _level, itemEnv ); } }