Toy with an idealized ferromagnet

This commit is contained in:
2020-12-17 22:22:25 -08:00
parent 3db44f08fe
commit 886462c8b0
4 changed files with 163 additions and 3 deletions

View File

@@ -102,9 +102,11 @@ impl<'a, S: GenericSim> RenderSteps<'a, S> {
} else if false {
me.render_e_z_field();
me.render_b_xy_field();
} else {
} else if false {
me.render_b();
me.render_current();
} else {
me.render_m();
}
me.render_measurements();
me.im
@@ -156,6 +158,11 @@ impl<'a, S: GenericSim> RenderSteps<'a, S> {
self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 1.0e-9, |cell| cell.b().xy());
}
fn render_m(&mut self) {
self.render_scalar_field(1.0e5, false, 1, |cell| cell.mat().m().mag());
self.render_vector_field(Rgb([0xff, 0xff, 0xff]), 1.0e5, |cell| cell.mat().m().xy());
}
fn render_vector_field<F: Fn(&Cell<mat::Static>) -> Vec2>(&mut self, color: Rgb<u8>, typical: Flt, measure: F) {
let w = self.im.width();
let h = self.im.height();
@@ -255,6 +262,12 @@ impl ImageRenderExt for RgbImage {
pixelops::interpolate(left, right, left_weight*alpha)
};
drawing::draw_antialiased_line_segment_mut(self, i_start, i_end, color, interpolate_with_alpha);
if i_start != i_end
&& (0..self.width() as i32).contains(&i_end.0)
&& (0..self.height() as i32).contains(&i_end.1)
{
self.put_pixel(i_end.0 as _, i_end.1 as _, Rgb([0xff, 0, 0]));
}
//drawing::draw_line_segment_mut(self, i_start, i_end, color);
}
}