diff --git a/app-proto/src/assembly.rs b/app-proto/src/assembly.rs index 1684716..24f9b93 100644 --- a/app-proto/src/assembly.rs +++ b/app-proto/src/assembly.rs @@ -315,7 +315,7 @@ impl Assembly { // step each element along the mass shell geodesic that matches its // velocity in the deformation found above /* KLUDGE */ - // since our test assemblies only include spheres, we assume that every + // since our test assemblies only involve spheres, we assume that every // element is on the 1 mass shell for (_, elt) in self.elements.get_clone_untracked() { elt.representation.update_silent(|rep| { diff --git a/app-proto/src/display.rs b/app-proto/src/display.rs index 673985c..184b29e 100644 --- a/app-proto/src/display.rs +++ b/app-proto/src/display.rs @@ -126,10 +126,6 @@ pub fn Display() -> View { // manipulation let translate_neg_x = create_signal(0.0); let translate_pos_x = create_signal(0.0); - let translate_neg_y = create_signal(0.0); - let translate_pos_y = create_signal(0.0); - let translate_neg_z = create_signal(0.0); - let translate_pos_z = create_signal(0.0); // change listener let scene_changed = create_signal(true); @@ -288,10 +284,6 @@ pub fn Display() -> View { // get the manipulation state let translate_neg_x_val = translate_neg_x.get(); let translate_pos_x_val = translate_pos_x.get(); - let translate_neg_y_val = translate_neg_y.get(); - let translate_pos_y_val = translate_pos_y.get(); - let translate_neg_z_val = translate_neg_z.get(); - let translate_pos_z_val = translate_pos_z.get(); // update the assembly's orientation let ang_vel = { @@ -326,21 +318,17 @@ pub fn Display() -> View { let rep = state.assembly.elements.with_untracked( |elts| elts[sel].representation.get_clone_untracked() ); + let vel_field_x = DMatrix::from_column_slice(5, 5, &[ + 0.0, 0.0, 0.0, 0.0, 1.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0, + 2.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0 + ]); let translate_x = translate_pos_x_val - translate_neg_x_val; - let translate_y = translate_pos_y_val - translate_neg_y_val; - let translate_z = translate_pos_z_val - translate_neg_z_val; - if translate_x != 0.0 || translate_y != 0.0 || translate_z != 0.0 { - let vel_field = { - let u = Vector3::new(translate_x, translate_y, translate_z).normalize(); - DMatrix::from_column_slice(5, 5, &[ - 0.0, 0.0, 0.0, 0.0, u[0], - 0.0, 0.0, 0.0, 0.0, u[1], - 0.0, 0.0, 0.0, 0.0, u[2], - 2.0*u[0], 2.0*u[1], 2.0*u[2], 0.0, 0.0, - 0.0, 0.0, 0.0, 0.0, 0.0 - ]) - }; - let elt_motion: DVector = time_step * TRANSLATION_SPEED * vel_field * rep; + if translate_x != 0.0 { + let vel = translate_x * vel_field_x * rep; + let elt_motion: DVector = time_step * TRANSLATION_SPEED * vel; assembly_for_raf.deform(vec![(sel, elt_motion.as_view())]); scene_changed.set(true); } @@ -486,14 +474,9 @@ pub fn Display() -> View { let set_manip_signal = move |event: &KeyboardEvent, value: f64| { let mut manipulating = true; - let shift = event.shift_key(); match event.key().as_str() { - "d" | "D" => translate_pos_x.set(value), - "a" | "A" => translate_neg_x.set(value), - "w" | "W" if shift => translate_neg_z.set(value), - "s" | "S" if shift => translate_pos_z.set(value), - "w" | "W" => translate_pos_y.set(value), - "s" | "S" => translate_neg_y.set(value), + "d" => translate_pos_x.set(value), + "a" => translate_neg_x.set(value), _ => manipulating = false }; if manipulating { @@ -512,7 +495,6 @@ pub fn Display() -> View { tabindex="0", on:keydown=move |event: KeyboardEvent| { if event.key() == "Shift" { - // swap navigation inputs roll_cw.set(yaw_right.get()); roll_ccw.set(yaw_left.get()); zoom_in.set(pitch_up.get()); @@ -521,12 +503,6 @@ pub fn Display() -> View { yaw_left.set(0.0); pitch_up.set(0.0); pitch_down.set(0.0); - - // swap manipulation inputs - translate_pos_z.set(translate_neg_y.get()); - translate_neg_z.set(translate_pos_y.get()); - translate_pos_y.set(0.0); - translate_neg_y.set(0.0); } else { if event.key() == "Enter" { /* BENCHMARKING */ turntable.set_fn(|turn| !turn); @@ -538,7 +514,6 @@ pub fn Display() -> View { }, on:keyup=move |event: KeyboardEvent| { if event.key() == "Shift" { - // swap navigation inputs yaw_right.set(roll_cw.get()); yaw_left.set(roll_ccw.get()); pitch_up.set(zoom_in.get()); @@ -547,12 +522,6 @@ pub fn Display() -> View { roll_ccw.set(0.0); zoom_in.set(0.0); zoom_out.set(0.0); - - // swap manipulation inputs - translate_pos_y.set(translate_neg_z.get()); - translate_neg_y.set(translate_pos_z.get()); - translate_pos_z.set(0.0); - translate_neg_z.set(0.0); } else { set_nav_signal(&event, 0.0); set_manip_signal(&event, 0.0);