コード例 #1
0
ファイル: deal_hint.c プロジェクト: Morefaya/push_swap
static void	sort_hint(t_hint *hint, int *i, int j)
{
	int	var;
	t_range	rg;

	bzero_rangval(&rg);
	init_rangval(&rg, hint->lst_data, j);
	var = ((t_pile*)(((t_list*)(*(hint->lst_a)))->content))->val;
	if (var >= rg.one && var < rg.two)
	{
		p_local(hint->lst_a, hint->lst_b, hint->mark);
		r_local(hint->lst_b, hint->mark);
		(*i)++;
	}
	else if (var >= rg.three && var < rg.four)
	{
		p_local(hint->lst_a, hint->lst_b, hint->mark);
		if (ft_lstcount(*(hint->lst_b)) > 1)
		{
				if (!check_next(*(hint->lst_b)))
					s_local(hint->lst_b, hint->mark);
		}
		(*i)++;
	}
	else
	{
		hint->mark->asc = 1;
		if (check_rothint(hint, rg))
			r_local(hint->lst_a, hint->mark);
		else
			rev_local(hint->lst_a, hint->mark);
		hint->mark->asc = 0;
	}
}
コード例 #2
0
ファイル: ui_common.cpp プロジェクト: xanxys/construct
std::shared_ptr<Geometry> generateTexQuadGeometry(
	float width, float height, Eigen::Vector3f pos, Eigen::Matrix3f rot) {

	Eigen::Matrix<float, 6, 3 + 2, Eigen::RowMajor> vertex;

	GLfloat vertex_pos_uv[] = {
		-1.0f, 0, -1.0f, 0, 1,
		1.0f, 0, 1.0f, 1, 0,
		-1.0f, 0, 1.0f, 0, 0,

		 1.0f, 0, 1.0f, 1, 0,
		 -1.0f, 0, -1.0f, 0, 1,
		 1.0f, 0, -1.0f, 1, 1,
	};

	for(int i = 0; i < 6; i++) {
		Eigen::Vector3f p_local(
			vertex_pos_uv[i * 5 + 0] * width / 2,
			vertex_pos_uv[i * 5 + 1],
			vertex_pos_uv[i * 5 + 2] * height / 2);

		vertex.row(i).head(3) = rot * p_local + pos;
		vertex.row(i).tail(2) = Eigen::Vector2f(
			vertex_pos_uv[i * 5 + 3], vertex_pos_uv[i * 5 + 4]);
	}

	return Geometry::createPosUV(vertex.rows(), vertex.data());
}
コード例 #3
0
ファイル: deal_hint.c プロジェクト: Morefaya/push_swap
static void	sort_hint_2(t_hint *hint, int *i)
{
	int	var;
	int	first;
	int	last;

	first = get_first(hint->lst_data);
	last = get_last(hint->lst_data);
	var = ((t_pile*)(((t_list*)(*(hint->lst_a)))->content))->val;
	if (var < first)
	{
		p_local(hint->lst_a, hint->lst_b, hint->mark);
		r_local(hint->lst_b, hint->mark);
		(*i)++;
	}
	else if (var >= last)
	{
		p_local(hint->lst_a, hint->lst_b, hint->mark);
		(*i)++;
	}
}