Add second sample
This commit is contained in:
parent
a805c5e06e
commit
43eb0a2ea8
|
|
@ -10,16 +10,22 @@ pub fn main() {
|
||||||
coil_w: 50.0,
|
coil_w: 50.0,
|
||||||
coil_m: 10.0,
|
coil_m: 10.0,
|
||||||
};
|
};
|
||||||
|
let space = Rect {
|
||||||
|
box_scale: 3.0,
|
||||||
|
box_a: vec2(- 30.0, - 300.0),
|
||||||
|
box_b: vec2(30.0, 300.0),
|
||||||
|
box_m: vec2(20.0, 50.0),
|
||||||
|
};
|
||||||
with_2d_graphics(move || {
|
with_2d_graphics(move || {
|
||||||
let canvas = create_drawing_window("Refraction");
|
let canvas = create_drawing_window("Refraction");
|
||||||
canvas.draw(|gc| {
|
canvas.draw(|gc| {
|
||||||
gc.canvas_height(1000.0);
|
gc.canvas_height(1000.0);
|
||||||
|
|
||||||
gc.new_path();
|
gc.new_path();
|
||||||
gc.circle(0.0, 0.0, space.coil_r + space.coil_w + space.coil_m);
|
//gc.circle(0.0, 0.0, space.coil_r + space.coil_w + space.coil_m);
|
||||||
gc.circle(0.0, 0.0, space.coil_r + space.coil_w);
|
//gc.circle(0.0, 0.0, space.coil_r + space.coil_w);
|
||||||
gc.circle(0.0, 0.0, space.coil_r - space.coil_w);
|
//gc.circle(0.0, 0.0, space.coil_r - space.coil_w);
|
||||||
gc.circle(0.0, 0.0, space.coil_r - space.coil_w - space.coil_m);
|
//gc.circle(0.0, 0.0, space.coil_r - space.coil_w - space.coil_m);
|
||||||
gc.winding_rule(WindingRule::EvenOdd);
|
gc.winding_rule(WindingRule::EvenOdd);
|
||||||
gc.fill_color(Color::Rgba(0.8, 0.8, 0.8, 1.0));
|
gc.fill_color(Color::Rgba(0.8, 0.8, 0.8, 1.0));
|
||||||
gc.fill();
|
gc.fill();
|
||||||
|
|
@ -29,10 +35,10 @@ pub fn main() {
|
||||||
for y in itertools_num::linspace(-1.0, 1.0, 101) {
|
for y in itertools_num::linspace(-1.0, 1.0, 101) {
|
||||||
draw_ray(gc, &space, vec2(-500.0, 0.0), vec2(1.0, y));
|
draw_ray(gc, &space, vec2(-500.0, 0.0), vec2(1.0, y));
|
||||||
}
|
}
|
||||||
gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 1.0));
|
// gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 1.0));
|
||||||
for y in itertools_num::linspace(-1.0, 1.0, 101) {
|
// for y in itertools_num::linspace(-1.0, 1.0, 101) {
|
||||||
draw_ray(gc, &space, vec2(0.0, space.coil_r), vec2(1.0, y));
|
// draw_ray(gc, &space, vec2(0.0, space.coil_r), vec2(1.0, y));
|
||||||
}
|
// }
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -75,6 +81,23 @@ impl Metric for Coil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Rect {
|
||||||
|
box_scale: f32,
|
||||||
|
box_a: Vec2,
|
||||||
|
box_b: Vec2,
|
||||||
|
box_m: Vec2,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Metric for Rect {
|
||||||
|
fn halfmetric(&self, pos: Vec2) -> Decomp2 {
|
||||||
|
let s = smoothbox(pos.x, vec2(self.box_a.x, self.box_b.x), self.box_m.x) * smoothbox(pos.y, vec2(self.box_a.y, self.box_b.y), self.box_m.y);
|
||||||
|
Decomp2{
|
||||||
|
ortho: Mat2::IDENTITY,
|
||||||
|
diag: vec2(1.0, self.box_scale.powf(-s)),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
mod riemann {
|
mod riemann {
|
||||||
use glam::*;
|
use glam::*;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user