Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool IsInside(Coordinate pt)
        {
            _crossings = 0;

            // test all segments intersected by ray from pt in positive x direction
            Envelope rayEnv = new Envelope(Double.NegativeInfinity, Double.PositiveInfinity, pt.Y, pt.Y);

            _interval.Min = pt.Y;
            _interval.Max = pt.Y;
            ArrayList segs = _tree.Query(_interval);

            //System.out.println("query size = " + segs.size());

            MCSelecter mcSelecter = new MCSelecter(this, pt);

            foreach (object obj in segs)
            {
                MonotoneChain mc = (MonotoneChain)obj;
                TestMonotoneChain(rayEnv, mcSelecter, mc);
            }

            //p is inside if number of crossings is odd.

            if ((_crossings % 2) == 1)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool IsInside(ICoordinate pt)
        {
            crossings = 0;

            // test all segments intersected by ray from pt in positive x direction
            IEnvelope rayEnv = new Envelope(Double.NegativeInfinity, Double.PositiveInfinity, pt.Y, pt.Y);

            interval.Min = pt.Y;
            interval.Max = pt.Y;
            IList segs = tree.Query(interval);

            MCSelecter mcSelecter = new MCSelecter(this, pt);

            for (IEnumerator i = segs.GetEnumerator(); i.MoveNext();)
            {
                MonotoneChain mc = (MonotoneChain)i.Current;
                TestMonotoneChain(rayEnv, mcSelecter, mc);
            }

            /*
             *  p is inside if number of crossings is odd.
             */
            if ((crossings % 2) == 1)
            {
                return(true);
            }
            return(false);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool IsInside(Coordinate pt)
        {
            _crossings = 0;

            // test all segments intersected by ray from pt in positive x direction
            var rayEnv = new Envelope(Double.NegativeInfinity, Double.PositiveInfinity, pt.Y, pt.Y);

            _interval.Min = pt.Y;
            _interval.Max = pt.Y;
            //_interval = Interval.Create(pt.Y);
            IList <MonotoneChain> segs = _tree.Query(_interval);

            MCSelecter mcSelecter = new MCSelecter(this, pt);

            foreach (MonotoneChain mc in segs)
            {
                TestMonotoneChain(rayEnv, mcSelecter, mc);
            }

            /*
             *  p is inside if number of crossings is odd.
             */
            if ((_crossings % 2) == 1)
            {
                return(true);
            }
            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool IsInside(Coordinate pt)
        {
            _crossings = 0;

            // test all segments intersected by ray from pt in positive x direction
            var rayEnv = new Envelope(Double.NegativeInfinity, Double.PositiveInfinity, pt.Y, pt.Y);
            _interval.Min = pt.Y;
            _interval.Max = pt.Y;
            //_interval = Interval.Create(pt.Y);
            IList<MonotoneChain> segs = _tree.Query(_interval);

            MCSelecter mcSelecter = new MCSelecter(this, pt);
            foreach (MonotoneChain mc in segs)
                TestMonotoneChain(rayEnv, mcSelecter, mc);

               /*
            *  p is inside if number of crossings is odd.
            */
            if ((_crossings % 2) == 1)
                return true;
            return false;
        }
Exemplo n.º 5
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="pt"></param>
        /// <returns></returns>
        public bool IsInside(ICoordinate pt)
        {
            crossings = 0;

            // test all segments intersected by ray from pt in positive x direction
            IEnvelope rayEnv = new Envelope(Double.NegativeInfinity, Double.PositiveInfinity, pt.Y, pt.Y);
            interval.Min = pt.Y;
            interval.Max = pt.Y;
            IList segs = tree.Query(interval);

            MCSelecter mcSelecter = new MCSelecter(this, pt);
            for (IEnumerator i = segs.GetEnumerator(); i.MoveNext(); )
            {
                MonotoneChain mc = (MonotoneChain) i.Current;
                TestMonotoneChain(rayEnv, mcSelecter, mc);
            }

            /*
            *  p is inside if number of crossings is odd.
            */
            if ((crossings % 2) == 1)
                return true;
            return false;
        }
Exemplo n.º 6
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="rayEnv"></param>
 /// <param name="mcSelecter"></param>
 /// <param name="mc"></param>
 private static void TestMonotoneChain(Envelope rayEnv, MCSelecter mcSelecter, MonotoneChain mc)
 {
     mc.Select(rayEnv, mcSelecter);
 }
Exemplo n.º 7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="rayEnv"></param>
 /// <param name="mcSelecter"></param>
 /// <param name="mc"></param>
 private void TestMonotoneChain(Envelope rayEnv, MCSelecter mcSelecter, MonotoneChain mc)
 {
     mc.Select(rayEnv, mcSelecter);
 }
Exemplo n.º 8
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="pt"></param>
		/// <returns></returns>
		public bool IsInside(Coordinate pt)
		{
			
			_crossings = 0;

			// test all segments intersected by ray from pt in positive x direction
			Envelope rayEnv = new Envelope(Double.NegativeInfinity, Double.PositiveInfinity, pt.Y, pt.Y);

			_interval.Min = pt.Y;
			_interval.Max = pt.Y;
			ArrayList segs = _tree.Query( _interval );

			//System.out.println("query size = " + segs.size());

			MCSelecter mcSelecter = new MCSelecter(this,pt);
			foreach(object obj in segs)
			{
				MonotoneChain mc = (MonotoneChain) obj;
				TestMonotoneChain(rayEnv, mcSelecter, mc);
			}

			//p is inside if number of crossings is odd.
			 
			if ((_crossings % 2) == 1) 
			{
				return true;
			}
			return false;

		}