def contains (self, p):
    """Returns True if point is contained inside this Polygon, False
    otherwise.

    This method uses the Ray Casting algorithm.

    Examples:
    
    >>> p = Polygon()
    >>> p.vertices = [Point(1, 1), Point(1, -1), Point(-1, -1), Point(-1, 1)]

    >>> p.contains( Point(0, 0) )
    True

    >>> p.contains( Point(2, 3) )
    False

    """
    inside = False

    if p in self.bounds():
      for s in self.segments():
        if ((s.p.y > p.y) != (s.q.y > p.y) and
            (p.x < (s.q.x - s.p.x) * (p.y - s.p.y) / (s.q.y - s.p.y) + s.p.x)):
          inside = not inside

    return inside