diff --git a/examples/coremem.rs b/examples/coremem.rs index 668760c..1677ba1 100644 --- a/examples/coremem.rs +++ b/examples/coremem.rs @@ -8,7 +8,10 @@ fn main() { let mut step = 0u64; loop { step += 1; - state.impulse_ey(50, 50, 50f32 * ((step as f64)*0.1f64).sin() as f32); + let imp = 50.0 * ((step as f64)*0.05).sin() as f32; + state.impulse_ex(50, 50, imp); + state.impulse_ey(50, 50, imp); + //state.impulse_bz(50, 50, imp / 3e8f32); Renderer.render(&state); state.step(); thread::sleep(time::Duration::from_millis(33)); diff --git a/src/render.rs b/src/render.rs index 6d9534b..5030223 100644 --- a/src/render.rs +++ b/src/render.rs @@ -33,6 +33,15 @@ fn norm_color(v: f32) -> u8 { (v * 64.0 + 128.0).max(0f32).min(255f32) as u8 } +fn curl(x: f32, y: f32) -> f32 { + let c = x * y; + if c >= 0f32 { + c.sqrt() + } else { + -(-c).sqrt() + } +} + impl ColorTermRenderer { pub fn render(&self, state: &SimState) { let mut buf = String::new(); @@ -42,8 +51,11 @@ impl ColorTermRenderer { let cell = state.get(x, y); //let r = norm_color(cell.bz() * consts::C); let r = 0; - let g = norm_color(cell.ex()); - let b = norm_color(cell.ey()); + let b = 0; + //let g = norm_color(cell.ex()); + //let b = norm_color(cell.ey()); + //let g = norm_color(curl(cell.ex(), cell.ey())); + let g = norm_color(cell.bz() * 3.0e8); write!(&mut buf, "{}", RGB(r, g, b).paint(square)); } write!(&mut buf, "\n");