Toy with an idealized ferromagnet
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user