예제 #1
0
파일: moncube.c 프로젝트: jpmeirsman/42
void			start_fdf(t_data *data, t_fic *tf)
{
	int			i;
	int			j;
	t_mesh		*mesh;
	double		min_z;
	double		max_z;
	double		z;

	data->tf = tf;
	if (tf->nb_columns < tf->nb_rows)
		data->ratio_init_cam = tf->nb_rows * 3;
		else
		data->ratio_init_cam = tf->nb_columns * 3;
	data->ratio_cam = data->ratio_init_cam;
	data->step_cam = data->ratio_init_cam / 5;
	data->cam = set_cam(zero_vector3(), zero_vector3());
	data->cam->position = set_vector3(0, 0 , data->ratio_cam);
//	data->cam->position = set_vector3(0, 0, 0);
	data->cam->target = set_vector3(0, 0, 0);
	mesh = malloc(sizeof(t_mesh));
	data->scene_pos = set_vector3(0, 0, 0);
	data->scene_rot = set_vector3(0.5, 0.5, 0.5);
	data->view_matrix = malloc(sizeof(t_matrix));
	data->projection_matrix= malloc(sizeof(t_matrix));
	data->world_matrix = malloc(sizeof(t_matrix));
	data->transform_matrix = malloc(sizeof(t_matrix));
	data->put_in_canvas = true;

//printf("nbrow : %llu, nbcol : %llu\n",tf->nb_rows, tf->nb_columns);
	min_z = 0;
	max_z = 0;
	for (i = 0; i < tf->nb_rows; i++)
	{
		for (j = 0; j < tf->nb_columns; j++)
		{
			tf->tvect[i][j].x *= -1;
			z = tf->tvect[i][j].z;
			if (min_z > z)
				min_z = z;
			if (max_z < z)
				max_z = z;
		}
	}
//printf("Z : min = %le, max = %le\n",min_z,max_z);
	data->coef_elev = 2 / (max_z - min_z);
	data->coef_init_elev = data->coef_elev;
	data->step_elev = data->coef_elev / 10;

//data->tf->min_elev = 0;
//data->tf->max_elev = 10;
//fdf_bline_color(data, 0, 0,700, 700, 0, 10);
//return;



//	data->anime = 0;
	render_fdf(data);
	print_fdf(data);
}
예제 #2
0
파일: ft_init.c 프로젝트: gabfou/RT
void	init_env(t_env *e)
{
	e->p.x = -0.5;
	e->p.y = -0.5;
	e->p.z = 4.0;
	set_cam(e);
	set_screen(e);
	e->ray.origin = e->cam;
}
예제 #3
0
파일: moncube.c 프로젝트: jpmeirsman/42
void		print_my_cube(t_data *data)
{
	float			center_x;
	float			center_y;
	t_meshes		*my_meshes;

//printf("zzz\n");
	center_x = (float) data->canvas_width / 2;
	center_y = (float) data->canvas_height / 2;
//	my_meshes = malloc(sizeof(t_meshes));
	my_meshes = new_meshes(1);
	data->my_meshes = my_meshes;
	my_meshes->m[0] = new_cube("Mon Cube");
	data->cam = set_cam(zero_vector3(), zero_vector3());
	data->cam->position = set_vector3(0, 0 ,10);
	data->cam->target = set_vector3(0, 0 ,0);
	my_meshes->m[0]->rotation.x += 0.01;
	my_meshes->m[0]->rotation.y += 0.01;

	data->anime = 1;
//printf("\n");
//	render(data, arr_mesh);
//	drawing_loop(data, my_meshes);
}
예제 #4
0
파일: cam.c 프로젝트: cmehay/our_rt
t_data	*get_cam(void)
{
	return (set_cam(NULL, 0));
}