Reduce useless debug lines

This commit is contained in:
numzero 2024-09-14 14:52:46 +03:00
parent d2d4dcdbca
commit e58f3c5a17

View File

@ -107,6 +107,18 @@ pub fn main() {
}); });
} }
fn rel_to_abs(space: &impl Metric, base: &Location, rel: Vec2, steps: usize) -> Vec2 {
let c = 1.0 / (steps as f32);
trace_iter(space, base.pos, base.rot * rel, c * rel.length()).nth(steps - 1).unwrap()
}
fn draw_cross(gc: &mut Vec<Draw>, pos: Vec2, r: f32) {
gc.move_to(pos.x - r, pos.y - r);
gc.line_to(pos.x + r, pos.y + r);
gc.move_to(pos.x - r, pos.y + r);
gc.line_to(pos.x + r, pos.y - r);
}
fn draw_ray_2(gc: &mut Vec<Draw>, space: &Space, base: Vec2, dir: Vec2) { fn draw_ray_2(gc: &mut Vec<Draw>, space: &Space, base: Vec2, dir: Vec2) {
fn trace_to_flat(gc: &mut Vec<Draw>, space: &Space, ray: Ray) -> (Ray, FlatTraceResult) { fn trace_to_flat(gc: &mut Vec<Draw>, space: &Space, ray: Ray) -> (Ray, FlatTraceResult) {
for ray in space.trace_iter(ray).skip(1) { for ray in space.trace_iter(ray).skip(1) {
@ -135,21 +147,15 @@ fn draw_ray_2(gc: &mut Vec<Draw>, space: &Space, base: Vec2, dir: Vec2) {
gc.move_to(ray.pos.x, ray.pos.y); gc.move_to(ray.pos.x, ray.pos.y);
for hit in ret.objects { for hit in ret.objects {
let obj = space.objs[hit.id as usize]; let obj = space.objs[hit.id as usize];
hits.move_to(obj.loc.pos.x, obj.loc.pos.y); let apx_hit_pos = rel_to_abs(&space.tube, &obj.loc, hit.rel.pos, 128);
for pt in trace_iter(&space.tube, obj.loc.pos, obj.loc.rot * hit.rel.pos, hit.rel.pos.length() / 100.0).take(100) { // assert_abs_diff_eq!(apx_hit_pos, hit.pos, epsilon=1.0);
hits.line_to(pt.x, pt.y);
}
hits.circle(hit.pos.x, hit.pos.y, 1.5);
let Ray { pos: rel, dir } = hit.rel; let Ray { pos: rel, dir } = hit.rel;
let diff = rel.dot(dir).powi(2) - dir.length_squared() * (rel.length_squared() - obj.r.powi(2)); let diff = rel.dot(dir).powi(2) - dir.length_squared() * (rel.length_squared() - obj.r.powi(2));
assert!(diff >= 0.0); assert!(diff >= 0.0);
let t = (-rel.dot(dir) + diff.sqrt()) / dir.length_squared(); let t = (-rel.dot(dir) + diff.sqrt()) / dir.length_squared();
let rel2 = hit.rel.forward(t).pos; let rel2 = hit.rel.forward(t).pos;
let pos2 = trace_iter(&space.tube, obj.loc.pos, obj.loc.rot * rel2, rel2.length() / 100.0).nth(100).unwrap(); let pos2 = rel_to_abs(&space.tube, &obj.loc, rel2, 128);
hits.move_to(pos2.x - 1.0, pos2.y - 1.0); draw_cross(&mut hits, pos2, 1.0);
hits.line_to(pos2.x + 1.0, pos2.y + 1.0);
hits.move_to(pos2.x - 1.0, pos2.y + 1.0);
hits.line_to(pos2.x + 1.0, pos2.y - 1.0);
} }
let a = ray.pos; let a = ray.pos;
if let Some(r) = ret.end { if let Some(r) = ret.end {