#pragma once

#include <C2/lm/vector2.h>
#include <C2/lm/vector3.h>

#include <vector>


namespace lib_geo
{


class ConvexHullGen2d
{
private:
	typedef std::pair<float, int> AngleVidPair;

public:
	// xy平面上で指定頂点列の凸包を生成する
	void Generate(const std::vector<lm::vec3f>& i_points, std::vector<lm::vec3f>& o_convex_hull);
	void Generate(const std::vector<lm::vec3f>& i_points, const lm::vec3f& normal, const lm::vec3f& up_in2d, std::vector<lm::vec3f>& o_convex_hull);

private:
	void Sort_ax(std::vector<lm::vec3f>& P);
	void CalcConvexHullMain(std::vector<lm::vec3f> P, std::vector<lm::vec3f>& ch);
};


}
