Esempio n. 1
0
void convex_hull(poly & t, poly & r) {
	unsigned i;
	Compare order;
	// Search leftmost vertex
	order.p0 = t[0];
	for (i = 1; i < t.size(); ++i)
		if (t[i].real() < order.p0.real())
			order.p0 = t[i];
	sort(t.begin(), t.end(), order);
	for (i = 0; i < t.size(); ++i) {
		r.push_back(t[i]);
		// Pop vertices that become internal
		while (r.size() > 3u && angle(r.end()[-3], r.end()[-2], r.end()[-1])) {
			r.end()[-2] = r.back();
			r.pop_back();
		}
	}
	return;
}
Esempio n. 2
0
inline void reduce(poly &a){
    int N = (int)a.size();

    while (N > 0 && a[N - 1] == 0)a.pop_back(), N--;
}