Add second sample
This commit is contained in:
parent
a805c5e06e
commit
43eb0a2ea8
|
|
@ -10,16 +10,22 @@ pub fn main() {
|
|||
coil_w: 50.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 || {
|
||||
let canvas = create_drawing_window("Refraction");
|
||||
canvas.draw(|gc| {
|
||||
gc.canvas_height(1000.0);
|
||||
|
||||
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);
|
||||
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.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.winding_rule(WindingRule::EvenOdd);
|
||||
gc.fill_color(Color::Rgba(0.8, 0.8, 0.8, 1.0));
|
||||
gc.fill();
|
||||
|
|
@ -29,10 +35,10 @@ pub fn main() {
|
|||
for y in itertools_num::linspace(-1.0, 1.0, 101) {
|
||||
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));
|
||||
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));
|
||||
}
|
||||
// gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 1.0));
|
||||
// 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));
|
||||
// }
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -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 {
|
||||
use glam::*;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user