@@ -58,7 +58,7 @@ fn main() {
5858fn 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)
536536fn 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