Extract DT a level up
This commit is contained in:
parent
23cddeb940
commit
355416764f
|
|
@ -83,8 +83,8 @@ impl Space {
|
||||||
/// ray задаётся в основной СК.
|
/// ray задаётся в основной СК.
|
||||||
fn trace_step(&self, ray: Ray) -> Ray {
|
fn trace_step(&self, ray: Ray) -> Ray {
|
||||||
let a: Vec2 = -riemann::contract2(riemann::krist(&self.rect, ray.pos), ray.dir);
|
let a: Vec2 = -riemann::contract2(riemann::krist(&self.rect, ray.pos), ray.dir);
|
||||||
let v = ray.dir + a * DT;
|
let v = ray.dir + a;
|
||||||
let p = ray.pos + v * DT;
|
let p = ray.pos + v;
|
||||||
Ray { pos: p, dir: v }
|
Ray { pos: p, dir: v }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -131,7 +131,7 @@ fn draw_ray_2(gc: &mut Vec<Draw>, space: &Space, base: Vec2, dir: Vec2) {
|
||||||
gc.new_path();
|
gc.new_path();
|
||||||
gc.move_to(base.x, base.y);
|
gc.move_to(base.x, base.y);
|
||||||
let mut p = base;
|
let mut p = base;
|
||||||
let mut v = space.rect.normalize_vec_at(base, dir);
|
let mut v = space.rect.normalize_vec_at(base, dir) * DT;
|
||||||
for _ in 0..10000 {
|
for _ in 0..10000 {
|
||||||
Ray { pos: p, dir: v } = space.trace_step(Ray { pos: p, dir: v });
|
Ray { pos: p, dir: v } = space.trace_step(Ray { pos: p, dir: v });
|
||||||
gc.line_to(p.x, p.y);
|
gc.line_to(p.x, p.y);
|
||||||
|
|
@ -157,7 +157,7 @@ fn draw_ray_2(gc: &mut Vec<Draw>, space: &Space, base: Vec2, dir: Vec2) {
|
||||||
Outer => {
|
Outer => {
|
||||||
let cell = basic_shapes::Rect { size: vec2(space.rect.outer_radius, space.rect.external_halflength) };
|
let cell = basic_shapes::Rect { size: vec2(space.rect.outer_radius, space.rect.external_halflength) };
|
||||||
let Some(dist) = cell.trace_into(Ray { pos: p, dir: v }) else {
|
let Some(dist) = cell.trace_into(Ray { pos: p, dir: v }) else {
|
||||||
p += v * 1000.0;
|
p += v * (1000.0 / DT);
|
||||||
gc.line_to(p.x, p.y);
|
gc.line_to(p.x, p.y);
|
||||||
gc.stroke();
|
gc.stroke();
|
||||||
break;
|
break;
|
||||||
|
|
@ -378,7 +378,7 @@ trait FlatCell: std::fmt::Debug {
|
||||||
} else {
|
} else {
|
||||||
(bnd.1.y - p.y) / v.y
|
(bnd.1.y - p.y) / v.y
|
||||||
};
|
};
|
||||||
if t <= 1000.0 {
|
if t <= 100000.0 {
|
||||||
Some(Ray { pos: sgn * (p + v * t), dir: sgn * v })
|
Some(Ray { pos: sgn * (p + v * t), dir: sgn * v })
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user