summaryrefslogtreecommitdiff
path: root/content/geometry/sortAround.cpp
blob: 9b09808ffbef575360d9fa52cbbb1891fa743855 (plain)
1
2
3
4
5
6
7
8
9
10
11
bool left(pt p) { return real(p) < 0 ||
                        (real(p) == 0 && imag(p) < 0); }

// counter clockwise, starting with "11:59"
void sortAround(pt p, vector<pt>& ps) {
	sort(all(ps), [&](const pt& a, const pt& b){
		if (left(a - p) != left(b - p))
			return left(a - p) > left(b - p);
		return cross(p, a, b) > 0;
	});
}