void echoCylinderSet(echoObject *cylind, int axis) { if (cylind && echoTypeCylinder == cylind->type) { CYLINDER(cylind)->axis = axis; } return; }
t_intersectInfo *cylinder_intersection(t_cylinder *cylinder, t_ray r) { t_intersectInfo *i; t_vector nray_origin; t_vector nray_direction; t_cylinder ncylinder; t_ray nray; if (!(i = (t_intersectInfo *)malloc(sizeof(t_intersectInfo)))) return (NULL); nray_origin = SUB(r.origin, mult(cylinder->direction, DOT_PROD(r.origin, cylinder->direction))); nray_direction = SUB(r.direction, mult(cylinder->direction, DOT_PROD(r.direction, cylinder->direction))); ncylinder = CYLINDER(SUB(cylinder->origin, mult(cylinder->direction, DOT_PROD(cylinder->origin, cylinder->direction))), cylinder->direction, cylinder->radius, cylinder->color); nray = RAY(nray_origin, nray_direction); if (!(project_2d_cylinder(&(ncylinder), nray, i))) return (NULL); return (end_int(cylinder, r, i)); }