int rotate(t_element *element, t_vec3 rot_axis, double angle);
void translate(t_element *element, t_vec3 direction, double distance);
+void change_radius(t_element *element, double change);
+void change_height(t_element *element, double change);
#endif // MINIRT_H
static const double TRANSLATION_STEP = 0.1;
static const double ROTATION_STEP = 0.1;
+static const double RESIZE_STEP = 0.1;
static const t_vec3 X_VEC = {.x = 1, .y = 0, .z = 0};
static const t_vec3 Y_VEC = {.x = 0, .y = 1, .z = 0};
rotate(element, forwards, -ROTATION_STEP);
else if (keycode == XK_q)
rotate(element, forwards, ROTATION_STEP);
+ else if (keycode == XK_r)
+ change_radius(element, RESIZE_STEP);
+ else if (keycode == XK_t)
+ change_radius(element, -RESIZE_STEP);
+ else if (keycode == XK_f)
+ change_height(element, RESIZE_STEP);
+ else if (keycode == XK_g)
+ change_height(element, -RESIZE_STEP);
else if (keycode == XK_o)
s->scene.relative_directions = !s->scene.relative_directions;
if (keycode != XK_Escape && keycode != XK_A)
/* By: ljiriste <ljiriste@student.42prague.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/12/06 09:48:43 by ljiriste #+# #+# */
-/* Updated: 2024/12/06 12:49:57 by ljiriste ### ########.fr */
+/* Updated: 2025/01/08 14:08:08 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
*element_center = vec_add(*element_center, change);
return ;
}
+
+void change_radius(t_element *element, double change)
+{
+ double *radius;
+
+ if (element->type == SPHERE)
+ radius = &element->object.sphere.radius;
+ else if (element->type == CYLINDER)
+ radius = &element->object.cylinder.radius;
+ else
+ return ;
+ *radius += change;
+ if (*radius < 0)
+ *radius = 0;
+ return ;
+}
+
+void change_height(t_element *element, double change)
+{
+ double *height;
+
+ if (element->type == CYLINDER)
+ height = &element->object.cylinder.height;
+ else
+ return ;
+ *height += change;
+ if (*height < 0)
+ *height = 0;
+ return ;
+}