Skip to content

Commit 406f0a0

Browse files
Merge pull request #2 from ludwig-austermann/nannou_17
moving to nannou 17 and fixing small issues
2 parents 7064cf7 + 03370bc commit 406f0a0

File tree

3 files changed

+27
-33
lines changed

3 files changed

+27
-33
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
/target
22
Cargo.lock
33
simple.gcode
4-
test_transformed.gcode
4+
test_transformed.gcode
5+
test_added.gcode

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
[package]
22
name = "gcodeplot"
3-
version = "0.1.0"
4-
authors = ["ludwig-austermann <ludwig.austermann@outlook.com>"]
3+
version = "0.3.1"
4+
authors = ["ludwig-austermann"]
55
edition = "2018"
66

77
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88

99
[dependencies]
10-
nannou = "0.16.0"
10+
nannou = "0.17.0"
1111
clap = "3.0.0-beta.2"
1212
pest = "2.1.3"
1313
pest_derive = "2.1"

src/main.rs

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fn main() {
5858
fn start_app(app: &App) -> AppSettings {
5959

6060
let matches = clap_app!(myapp =>
61-
(version: "0.3.0")
61+
(version: "0.3.1")
6262
(author: "Ludwig Austermann <github.com/ludwig-austermann/gcodeplot>")
6363
(about: "Draw simple gcode.")
6464
(@arg INPUT: +required "Sets the input g-code file to use")
@@ -136,7 +136,7 @@ fn start_app(app: &App) -> AppSettings {
136136
mouse_pos: None,
137137
adding_commands: Vec::new(),
138138
deleted_command: None,
139-
current_pos: vec![Vector2::zero()],
139+
current_pos: vec![Vec2::ZERO],
140140
saved: true,
141141
current_command: 0,
142142
temp_point: None,
@@ -198,7 +198,7 @@ fn handle_keypress(_app: &App, settings: &mut AppSettings, key: Key) {
198198
Key::Key3 => { settings.current_command = 3 },
199199
Key::H => {
200200
settings.adding_commands.push(parse::CommentlessGCodeExpr::Home);
201-
settings.current_pos.push(Vector2::zero());
201+
settings.current_pos.push(Vec2::ZERO);
202202
}
203203
Key::Key0 => { settings.current_command = 0; settings.temp_point = None },
204204
Key::Z => {
@@ -212,7 +212,7 @@ fn handle_keypress(_app: &App, settings: &mut AppSettings, key: Key) {
212212
Key::Y => { if let Some(c) = settings.deleted_command {
213213
settings.adding_commands.push(c);
214214
match c {
215-
parse::CommentlessGCodeExpr::Home => settings.current_pos.push(Vector2::zero()),
215+
parse::CommentlessGCodeExpr::Home => settings.current_pos.push(Vec2::ZERO),
216216
parse::CommentlessGCodeExpr::Move { X: x, Y: y }
217217
| parse::CommentlessGCodeExpr::Arc{ CLKW: _, X: x, Y: y, I: _, J: _ } => settings.current_pos.push(pt2(x, y)),
218218
parse::CommentlessGCodeExpr::Pen(_) => { settings.pen_mode = !settings.pen_mode; }
@@ -308,15 +308,15 @@ fn draw_gcode(draw: &Draw, win: &Rect, settings: &AppSettings) {
308308
} else if settings.debug_lvl > 0 {
309309
draw.line().points(current * settings.scale + origin, origin).rgb(0.7, 0.7, 0.7);
310310
}
311-
current = Vector2::zero();
311+
current = Vec2::ZERO;
312312
},
313313
Move {X: x, Y: y} => {
314314
let p = pt2(*x, *y);
315315
if settings.debug_lvl > 2 {
316316
if is_pen_down {
317317
draw.arrow().points(current * settings.scale + origin, p * settings.scale + origin).color(BLACK).weight(2.0);
318318
} else {
319-
draw.arrow().points(current * settings.scale + origin, p * settings.scale + origin).rgb(0.7, 0.7, 0.7);
319+
draw.arrow().points(current * settings.scale + origin, p * settings.scale + origin).rgb(0.7, 0.7, 0.7).head_width(3.0);
320320
}
321321
} else {
322322
if is_pen_down {
@@ -344,24 +344,24 @@ fn draw_gcode(draw: &Draw, win: &Rect, settings: &AppSettings) {
344344
draw.ellipse().xy(a).w_h(4.0, 4.0).color(BLACK);
345345
}
346346
let a = - C;
347-
let r2 = a.magnitude2();
348-
let steps = ((r2.sqrt() * 7.2) as usize).min(36);
347+
let r2 = a.length_squared();
348+
let steps = ((r2.sqrt() * 3.6) as usize).min(18);
349349
let translation = (current + C) * settings.scale + origin;
350-
let anglestep = if (B - current).magnitude2() < settings.treshold { // make circle
350+
let anglestep = if B.distance_squared(current) < settings.treshold { // make circle
351351
2.0 * PI / steps as f32
352352
} else {
353353
let b = a + B - current;
354-
if (r2 - b.magnitude2()).abs() > settings.treshold {
354+
if (r2 - b.length_squared()).abs() > settings.treshold {
355355
println!("Cannot draw arc in line {}, (I,J) is no center.", l + 1)
356356
}
357357
let mut anglediff = a.angle_between(b);
358358
if *clkw {
359-
if (a.rotate(anglediff) - b).magnitude2() < settings.treshold { // rotate `a` in G3 direction
359+
if (a.rotate(anglediff) - b).length_squared() < settings.treshold { // rotate `a` in G3 direction
360360
anglediff = 2.0 * PI - anglediff;
361361
}
362362
-anglediff / steps as f32
363363
} else {
364-
if (a.rotate(-anglediff) - b).magnitude2() < settings.treshold { // rotate `a` in G2 direction
364+
if (a.rotate(-anglediff) - b).length_squared() < settings.treshold { // rotate `a` in G2 direction
365365
anglediff = 2.0 * PI - anglediff;
366366
}
367367
anglediff / steps as f32
@@ -387,15 +387,15 @@ fn draw_gcode(draw: &Draw, win: &Rect, settings: &AppSettings) {
387387
} else if settings.debug_lvl > 0 {
388388
draw.line().points(current * settings.scale + origin, origin).rgb(0.7, 0.7, 0.7);
389389
}
390-
current = Vector2::zero();
390+
current = Vec2::ZERO;
391391
},
392392
Move {X: x, Y: y} => {
393393
let p = pt2(*x, *y);
394394
if settings.debug_lvl > 2 {
395395
if is_pen_down {
396396
draw.arrow().points(current * settings.scale + origin, p * settings.scale + origin).color(BLACK).weight(2.0);
397397
} else {
398-
draw.arrow().points(current * settings.scale + origin, p * settings.scale + origin).rgb(0.7, 0.7, 0.7);
398+
draw.arrow().points(current * settings.scale + origin, p * settings.scale + origin).rgb(0.7, 0.7, 0.7).head_width(3.0);
399399
}
400400
} else {
401401
if is_pen_down {
@@ -423,24 +423,24 @@ fn draw_gcode(draw: &Draw, win: &Rect, settings: &AppSettings) {
423423
draw.ellipse().xy(a).w_h(4.0, 4.0).color(BLACK);
424424
}
425425
let a = - C;
426-
let r2 = a.magnitude2();
426+
let r2 = a.length_squared();
427427
let steps = ((r2.sqrt() * 3.6) as usize).min(18);
428428
let translation = (current + C) * settings.scale + origin;
429-
let anglestep = if (B - current).magnitude2() < settings.treshold { // make circle
429+
let anglestep = if B.distance_squared(current) < settings.treshold { // make circle
430430
2.0 * PI / steps as f32
431431
} else {
432432
let b = a + B - current;
433-
if (r2 - b.magnitude2()).abs() > settings.treshold {
433+
if (r2 - b.length_squared()).abs() > settings.treshold {
434434
println!("Cannot draw arc in new line {}, (I,J) is no center.", l + 1)
435435
}
436436
let mut anglediff = a.angle_between(b);
437437
if *clkw {
438-
if (a.rotate(anglediff) - b).magnitude2() < settings.treshold { // rotate `a` in G3 direction
438+
if (a.rotate(anglediff) - b).length_squared() < settings.treshold { // rotate `a` in G3 direction
439439
anglediff = 2.0 * PI - anglediff;
440440
}
441441
-anglediff / steps as f32
442442
} else {
443-
if (a.rotate(-anglediff) - b).magnitude2() < settings.treshold { // rotate `a` in G2 direction
443+
if (a.rotate(-anglediff) - b).length_squared() < settings.treshold { // rotate `a` in G2 direction
444444
anglediff = 2.0 * PI - anglediff;
445445
}
446446
anglediff / steps as f32
@@ -535,15 +535,8 @@ fn draw_overlay(draw: &Draw, win: &Rect, settings: &AppSettings) {
535535
/// calculates the nearest corresponding point on the grid. (nannou coords, plotter cords)
536536
fn get_grid_node(pos: Point2, win: &Rect, settings: &AppSettings) -> (Point2, Point2) {
537537
let draw_area = win.pad(20.0).pad_left(10.0).pad_top(10.0);
538-
let p = (pos - draw_area.corner_at_index(3).unwrap()) / settings.scale;
539-
let p = p.map(|x| {
540-
let n = f32::trunc( x / settings.grid_size );
541-
if x % settings.grid_size <= 0.5 * settings.grid_size {
542-
n * settings.grid_size
543-
} else {
544-
(n + 1.0) * settings.grid_size
545-
}
546-
});
547-
let pos = p * settings.scale + draw_area.corner_at_index(3).unwrap();
538+
let p = (pos - draw_area.bottom_left()) / settings.scale;
539+
let p = (p / settings.grid_size).round() * settings.grid_size; // to next grid corner
540+
let pos = p * settings.scale + draw_area.bottom_left();
548541
(pos, p)
549542
}

0 commit comments

Comments
 (0)