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); }
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; }
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]; }
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); }
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); }