Generation

generate functionSat, 12 Nov 2022

sutherland-hodgman

template <typename T, typename F> void sutherland_hodgman(const std::vector<T>& subject, const std::vector<T>& clip, const F& clip_test, std::vector<T>& output) { output = subject; for (auto edge = clip.begin(), last = std::prev(clip.end()); edge != clip.end(); edge = std::next(edge)) { auto prev = last; std::vector<T> input = output; output.clear(); for (auto p = input.begin(), last_p = std::prev(input.end()); p != input.end(); p = std::next(p)) { bool inside_prev = clip_test(*prev, *p); bool inside_edge = clip_test(*edge, *p); if (inside_prev && inside_edge) { output.push_back(*p); } else if (inside_prev) { output.push_back(intersect(*prev

Questions about programming?Chat with your personal AI assistant