func (q *ContainsVertexQuery) ContainsVertex() int {
	referenceDir := Point{q.target.Ortho()}
	bestPoint := referenceDir
	bestDir := 0
	for k, v := range q.edgeMap {
		if v == 0 {
			continue  
		}
		if OrderedCCW(referenceDir, bestPoint, k, q.target) {
			bestPoint = k
			bestDir = v
		}
	}
	return bestDir
}
ContainsVertex reports a +1 if the target vertex is contained, -1 if it is
not contained, and 0 if the incident edges consisted of matched sibling pairs.
package s2
type ContainsVertexQuery struct {
	target  Point
	edgeMap map[Point]int
}
func NewContainsVertexQuery(target Point) *ContainsVertexQuery {
	return &ContainsVertexQuery{
		target:  target,
		edgeMap: make(map[Point]int),
	}
}
func (q *ContainsVertexQuery) AddEdge(v Point, direction int) {
	q.edgeMap[v] += direction
}