Exemplo n.º 1
0
// Remove elements >= rightIter that make the curve concave after
// adding thisElem.
func (f *frontier) maybeRemoveRightElements(
	thisElem frontierItem, rightIter rbtree.Iterator) {
	if rightIter.Limit() {
		return
	}

	ti := rightIter.Next()
	for !ti.Limit() && !isConcave(thisElem, getItem(rightIter), getItem(ti)) {
		tmp := rightIter
		rightIter = ti
		ti = ti.Next()
		f.tree.DeleteWithIterator(tmp)
	}
}