diff --git a/apps/tools/twndel/tool.c b/apps/tools/twndel/tool.c index 88719d9..d1919a1 100644 --- a/apps/tools/twndel/tool.c +++ b/apps/tools/twndel/tool.c @@ -238,8 +238,8 @@ static void process_camera_rotation(void) { static void process_camera_translation(void) { - Vec3 right = vec3_cross(state.camera_direction, (Vec3){0,1,0}); - Vec3 up = vec3_cross(state.camera_direction, right); + Vec3 right = vec3_norm(vec3_cross(state.camera_direction, (Vec3){0,1,0})); + Vec3 up = vec3_norm(vec3_cross(state.camera_direction, right)); Vec3 was = state.camera_position; if (input_action_pressed("camera_rotate_left")) @@ -383,7 +383,7 @@ static bool find_closest_face(uint8_t* object_result, uint16_t *face_result) { Vec3 p1 = point_to_vec3(oi, f->p[1]); Vec3 p2 = point_to_vec3(oi, f->p[2]); - Vec3 n = vec3_cross(vec3_sub(p1, p0), vec3_sub(p2, p0)); + Vec3 n = vec3_norm(vec3_cross(vec3_sub(p1, p0), vec3_sub(p2, p0))); /* culling */ if (vec3_dot(state.camera_direction, n) > 0) continue; @@ -396,24 +396,24 @@ static bool find_closest_face(uint8_t* object_result, uint16_t *face_result) { if (dist >= closest_distance) continue; /* left normals are used to determine whether point lies to the left for all forming lines */ - Vec3 ln0 = vec3_cross(n, vec3_sub(p1, p0)); + Vec3 ln0 = vec3_norm(vec3_cross(n, vec3_sub(p1, p0))); if (vec3_dot(ln0, vec3_sub(p0, i)) > 0) continue; - Vec3 ln1 = vec3_cross(n, vec3_sub(p2, p1)); + Vec3 ln1 = vec3_norm(vec3_cross(n, vec3_sub(p2, p1))); if (vec3_dot(ln1, vec3_sub(p1, i)) > 0) continue; if (f->p[3] == INVALID_POINT) { /* triangle */ - Vec3 ln2 = vec3_cross(n, vec3_sub(p0, p2)); + Vec3 ln2 = vec3_norm(vec3_cross(n, vec3_sub(p0, p2))); if (vec3_dot(ln2, vec3_sub(p2, i)) > 0) continue; } else { /* quad */ Vec3 p3 = point_to_vec3(oi, f->p[3]); - Vec3 ln2 = vec3_cross(n, vec3_sub(p3, p2)); + Vec3 ln2 = vec3_norm(vec3_cross(n, vec3_sub(p3, p2))); if (vec3_dot(ln2, vec3_sub(p2, i)) > 0) continue; - Vec3 ln3 = vec3_cross(n, vec3_sub(p0, p3)); + Vec3 ln3 = vec3_norm(vec3_cross(n, vec3_sub(p0, p3))); if (vec3_dot(ln3, vec3_sub(p3, i)) > 0) continue; }