Example #1
0
void	rotate_tri(t_triangle *tri)
{
	rotate_vec_x(tri->rot.x, &tri->v1);
	rotate_vec_y(tri->rot.y, &tri->v1);
	rotate_vec_z(tri->rot.z, &tri->v1);
	rotate_vec_x(tri->rot.x, &tri->v2);
	rotate_vec_y(tri->rot.y, &tri->v2);
	rotate_vec_z(tri->rot.z, &tri->v2);
	rotate_vec_x(tri->rot.x, &tri->v3);
	rotate_vec_y(tri->rot.y, &tri->v3);
	rotate_vec_z(tri->rot.z, &tri->v3);
}
Example #2
0
void			rotate_cone(t_env *env, int i)
{
	rotate_vec_x(CONES[i].rot.x, &CONES[i].v);
	rotate_vec_y(CONES[i].rot.y, &CONES[i].v);
	rotate_vec_z(CONES[i].rot.z, &CONES[i].v);
	CONES[i].shape.pos = CONES[i].p;
}
Example #3
0
void	set_val_cone(t_env *env, float t, t_ray ray)
{
	t_vector	scaled;

	scaled = vector_scale(t, &ray.dir);
	OBJ.new_start = vector_add(&ray.start, &scaled);
	OBJ.normal = vector_sub(&OBJ.new_start, &CN_POS(OBJ.cur_cone));
	unrotate_vec2(env, OBJ.cur_cone, &OBJ.normal);
	OBJ.normal.y *= -1.0f;
	rotate_vec_x(CONES[OBJ.cur_cone].rot.x, &OBJ.normal);
	rotate_vec_y(CONES[OBJ.cur_cone].rot.y, &OBJ.normal);
	rotate_vec_z(CONES[OBJ.cur_cone].rot.z, &OBJ.normal);
	if (vector_dot(&OBJ.normal, &OBJ.normal) == 0)
	{
		env->br = 1;
		return ;
	}
	OBJ.normal = vector_scale(1.0f / ABSV(OBJ.normal), &OBJ.normal);
	vector_norm(&OBJ.normal);
	OBJ.cur_mat = env->obj.mats[CONES[OBJ.cur_cone].shape.material];
}
Example #4
0
void	unrotate_vec(t_env *env, int i, t_vector *vec)
{
	rotate_vec_x(-CYLINDERS[i].rot.x, vec);
	rotate_vec_y(-CYLINDERS[i].rot.y, vec);
	rotate_vec_z(-CYLINDERS[i].rot.z, vec);
}
Example #5
0
void	unrotate_vec2(t_env *env, int i, t_vector *vec)
{
	rotate_vec_x(-CONES[i].rot.x, vec);
	rotate_vec_y(-CONES[i].rot.y, vec);
	rotate_vec_z(-CONES[i].rot.z, vec);
}