Smoother circles

This commit is contained in:
numzero 2024-06-10 00:10:31 +03:00
parent b22c36a983
commit ab5446385b

View File

@ -65,6 +65,7 @@ pub fn main() {
draw_track(gc, &space, vec2(-500.0, 0.0), vec2(1.0, 0.5));
draw_track(gc, &space, vec2(-0.5 * tube.inner_radius, -1.25 * tube.external_halflength), vec2(0.1, 1.0));
let circle_segments = 47;
for obj in &space.objs {
let pos = obj.loc.pos;
gc.new_path();
@ -73,19 +74,19 @@ pub fn main() {
gc.fill();
gc.stroke_color(Color::Rgba(0.0, 0.0, 0.0, 0.5));
draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, 32).skip(1).map(|φ| {
draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, circle_segments).skip(1).map(|φ| {
let dir = Vec2::from_angle(φ) * obj.r;
let dir = obj.loc.rot * dir;
pos + dir
}));
gc.stroke_color(Color::Rgba(0.0, 0.5, 1.0, 0.5));
draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, 32).skip(1).map(|φ| {
draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, circle_segments).skip(1).map(|φ| {
let dir = Vec2::from_angle(φ) * obj.r;
let dir = obj.loc.rot * dir;
space.trace_step(Ray { pos, dir }).pos
}));
gc.stroke_color(Color::Rgba(0.5, 0.0, 1.0, 1.0));
draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, 32).skip(1).map(|φ| {
draw_loop(gc, itertools_num::linspace(0.0, 2.0 * PI, circle_segments).skip(1).map(|φ| {
let n = obj.r.floor();
let d = obj.r / n;
let dir = Vec2::from_angle(φ);