update color scheme

This commit is contained in:
2026-03-06 12:52:47 +01:00
parent 836b42f425
commit 6bfe217fee
6 changed files with 40 additions and 23 deletions

View File

@ -87,8 +87,8 @@ auto cpu_spring_system::calculate_spring_force(const size_t s) -> void
const float inv_len = 1.0f / sqrt(sq_len);
const float len = sq_len * inv_len;
const float hooke = SPRING_CONSTANT * (len - REST_LENGTH);
const float dampening = DAMPENING_CONSTANT * Vector3DotProduct(delta_vel, delta_pos) * inv_len;
const float hooke = SPRING_K * (len - REST_LENGTH);
const float dampening = DAMPENING_K * Vector3DotProduct(delta_vel, delta_pos) * inv_len;
const Vector3 a_force = Vector3Scale(delta_pos, -(hooke + dampening) * inv_len);
const Vector3 b_force = a_force * -1.0f;

View File

@ -42,6 +42,7 @@ auto input_handler::init_handlers() -> void
register_key_pressed_handler(KEY_C, &input_handler::clear_graph);
register_key_pressed_handler(KEY_I, &input_handler::toggle_mark_solutions);
register_key_pressed_handler(KEY_O, &input_handler::toggle_connect_solutions);
register_key_pressed_handler(KEY_Z, &input_handler::toggle_color_by_distance);
register_key_pressed_handler(KEY_TAB, &input_handler::toggle_editing);
register_key_pressed_handler(KEY_F, &input_handler::toggle_restricted_movement);
@ -142,12 +143,17 @@ auto input_handler::camera_zoom() const -> void
auto input_handler::camera_fov() const -> void
{
if (!mouse_in_graph_pane() || !IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT)) {
if (!mouse_in_graph_pane() || !IsKeyDown(KEY_LEFT_CONTROL)) {
return;
}
const float wheel = GetMouseWheelMove();
camera.fov -= wheel * FOV_SPEED;
if (IsKeyDown(KEY_LEFT_SHIFT)) {
camera.fov -= wheel * FOV_SPEED * FOV_MULTIPLIER;
} else {
camera.fov -= wheel * FOV_SPEED;
}
}
auto input_handler::select_block() -> void
@ -407,6 +413,11 @@ auto input_handler::toggle_connect_solutions() -> void
connect_solutions = !connect_solutions;
}
auto input_handler::toggle_color_by_distance() -> void
{
color_by_distance = !color_by_distance;
}
auto input_handler::toggle_mark_path() -> void
{
mark_path = !mark_path;

View File

@ -63,7 +63,11 @@ auto orbit_camera::update(const Vector3& current_target, const Vector3& mass_cen
const float y = sin(angle_y) * actual_distance;
const float z = cos(angle_y) * cos(angle_x) * actual_distance;
fov = Clamp(fov, MIN_FOV, MAX_FOV);
if (projection == CAMERA_ORTHOGRAPHIC) {
fov = Clamp(fov, MIN_FOV, MAX_ORTHO_FOV);
} else {
fov = Clamp(fov, MIN_FOV, MAX_PERSP_FOV);
}
camera.position = Vector3Add(target, Vector3(x, y, z));
camera.target = target;

View File

@ -104,7 +104,7 @@ auto renderer::draw_mass_springs(const std::vector<Vector3>& masses) -> void
} else if (state.get_visit_counts().at(mass) > 0) {
// Visited vertex
c = VERTEX_VISITED_COLOR;
} else if (distances.size() == masses.size()) {
} else if (input.color_by_distance && distances.size() == masses.size()) {
c = lerp_color(VERTEX_FARTHEST_COLOR,
VERTEX_CLOSEST_COLOR,
static_cast<float>(distances[mass]));