public List <GeoPoint> getIntersectionPoints(GeoPolygon another)
        {
            List <GeoPoint> result = new List <GeoPoint>();

            foreach (var selfSegment in Segments)
            {
                foreach (var anotherSegment in another.Segments)
                {
                    var resPoint = selfSegment.getIntersectionPoint(anotherSegment);
                    if (resPoint != null)
                    {
                        result.Add(resPoint);
                    }
                }
            }
            return(result);
        }
 public bool isInPolygon(GeoPolygon polygon)
 {
     return(polygon.containsPoint(this));
 }
 public bool contains(GeoPolygon another)
 {
     return(Points.FindAll(x => x.isInPolygon(another)).Count == Points.Count);
 }
        public bool intersectsWith(GeoPolygon another)
        {
            var pointsInAnother = Points.FindAll(x => x.isInPolygon(another)).Count;

            return(pointsInAnother > 0 && pointsInAnother < Points.Count);
        }