# ~~~
# var p1 = new Point[Float](0.0, 0.0)
# var p2 = new Point[Float](5.0, 0.0)
# var p3 = new Point[Float](0.0, 5.0)
# var p4 = new Point[Float](5.0, 5.0)
# var p5 = new Point[Float](2.5, 2.5)
# var arr = new Array[Point[Float]].with_items(p1, p2, p3, p4)
# var poly = new ConvexPolygon(arr)
# poly.sort_ccw
# assert poly.contain(p5)
# ~~~
redef fun contain(p) do
var prev = points[points.length - 1]
var curr = p
var next = points[0]
var is_ccw = turn_left(prev, curr, next)
for i in [1..points.length[ do
prev = next
next = points[i]
if turn_left(prev, curr, next) != is_ccw then return false
end
return true
end
lib/geometry/polygon.nit:203,2--225,4