Browse Source

Add HAS_JUNCTION_DEVIATION

Scott Lahteine 4 years ago
parent
commit
55d66fb897

+ 1
- 1
Marlin/Configuration.h View File

800
  *   https://reprap.org/forum/read.php?1,739819
800
  *   https://reprap.org/forum/read.php?1,739819
801
  *   http://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
801
  *   http://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html
802
  */
802
  */
803
-#if DISABLED(CLASSIC_JERK)
803
+#if HAS_JUNCTION_DEVIATION
804
   #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
804
   #define JUNCTION_DEVIATION_MM 0.013 // (mm) Distance from real junction edge
805
 #endif
805
 #endif
806
 
806
 

+ 2
- 2
Marlin/src/gcode/config/M200-M205.cpp View File

121
  *    J = Junction Deviation (mm) (If not using CLASSIC_JERK)
121
  *    J = Junction Deviation (mm) (If not using CLASSIC_JERK)
122
  */
122
  */
123
 void GcodeSuite::M205() {
123
 void GcodeSuite::M205() {
124
-  #if DISABLED(CLASSIC_JERK)
124
+  #if HAS_JUNCTION_DEVIATION
125
     #define J_PARAM  "J"
125
     #define J_PARAM  "J"
126
   #else
126
   #else
127
     #define J_PARAM
127
     #define J_PARAM
137
   if (parser.seen('B')) planner.settings.min_segment_time_us = parser.value_ulong();
137
   if (parser.seen('B')) planner.settings.min_segment_time_us = parser.value_ulong();
138
   if (parser.seen('S')) planner.settings.min_feedrate_mm_s = parser.value_linear_units();
138
   if (parser.seen('S')) planner.settings.min_feedrate_mm_s = parser.value_linear_units();
139
   if (parser.seen('T')) planner.settings.min_travel_feedrate_mm_s = parser.value_linear_units();
139
   if (parser.seen('T')) planner.settings.min_travel_feedrate_mm_s = parser.value_linear_units();
140
-  #if DISABLED(CLASSIC_JERK)
140
+  #if HAS_JUNCTION_DEVIATION
141
     if (parser.seen('J')) {
141
     if (parser.seen('J')) {
142
       const float junc_dev = parser.value_linear_units();
142
       const float junc_dev = parser.value_linear_units();
143
       if (WITHIN(junc_dev, 0.01f, 0.3f)) {
143
       if (WITHIN(junc_dev, 0.01f, 0.3f)) {

+ 4
- 0
Marlin/src/inc/Conditionals_LCD.h View File

680
   #define HAS_CLASSIC_JERK 1
680
   #define HAS_CLASSIC_JERK 1
681
 #endif
681
 #endif
682
 
682
 
683
+#if DISABLED(CLASSIC_JERK)
684
+  #define HAS_JUNCTION_DEVIATION 1
685
+#endif
686
+
683
 // E jerk exists with JD disabled (of course) but also when Linear Advance is disabled on Delta/SCARA
687
 // E jerk exists with JD disabled (of course) but also when Linear Advance is disabled on Delta/SCARA
684
 #if ENABLED(CLASSIC_JERK) || (IS_KINEMATIC && DISABLED(LIN_ADVANCE))
688
 #if ENABLED(CLASSIC_JERK) || (IS_KINEMATIC && DISABLED(LIN_ADVANCE))
685
   #define HAS_CLASSIC_E_JERK 1
689
   #define HAS_CLASSIC_E_JERK 1

+ 1
- 1
Marlin/src/inc/Conditionals_post.h View File

31
 #endif
31
 #endif
32
 
32
 
33
 // Linear advance uses Jerk since E is an isolated axis
33
 // Linear advance uses Jerk since E is an isolated axis
34
-#if DISABLED(CLASSIC_JERK) && ENABLED(LIN_ADVANCE)
34
+#if HAS_JUNCTION_DEVIATION && ENABLED(LIN_ADVANCE)
35
   #define HAS_LINEAR_E_JERK 1
35
   #define HAS_LINEAR_E_JERK 1
36
 #endif
36
 #endif
37
 
37
 

+ 2
- 2
Marlin/src/inc/SanityCheck.h View File

355
   #error "LEVEL_BED_CORNERS requires LEVEL_CORNERS_INSET_LFRB values. Please update your Configuration.h."
355
   #error "LEVEL_BED_CORNERS requires LEVEL_CORNERS_INSET_LFRB values. Please update your Configuration.h."
356
 #elif defined(BEZIER_JERK_CONTROL)
356
 #elif defined(BEZIER_JERK_CONTROL)
357
   #error "BEZIER_JERK_CONTROL is now S_CURVE_ACCELERATION. Please update your configuration."
357
   #error "BEZIER_JERK_CONTROL is now S_CURVE_ACCELERATION. Please update your configuration."
358
-#elif DISABLED(CLASSIC_JERK) && defined(JUNCTION_DEVIATION_FACTOR)
358
+#elif HAS_JUNCTION_DEVIATION && defined(JUNCTION_DEVIATION_FACTOR)
359
   #error "JUNCTION_DEVIATION_FACTOR is now JUNCTION_DEVIATION_MM. Please update your configuration."
359
   #error "JUNCTION_DEVIATION_FACTOR is now JUNCTION_DEVIATION_MM. Please update your configuration."
360
 #elif defined(JUNCTION_ACCELERATION_FACTOR)
360
 #elif defined(JUNCTION_ACCELERATION_FACTOR)
361
   #error "JUNCTION_ACCELERATION_FACTOR is obsolete. Delete it from Configuration_adv.h."
361
   #error "JUNCTION_ACCELERATION_FACTOR is obsolete. Delete it from Configuration_adv.h."
1137
 /**
1137
 /**
1138
  * Junction deviation is incompatible with kinematic systems.
1138
  * Junction deviation is incompatible with kinematic systems.
1139
  */
1139
  */
1140
-#if DISABLED(CLASSIC_JERK) && IS_KINEMATIC
1140
+#if HAS_JUNCTION_DEVIATION && IS_KINEMATIC
1141
   #error "CLASSIC_JERK is required for DELTA and SCARA."
1141
   #error "CLASSIC_JERK is required for DELTA and SCARA."
1142
 #endif
1142
 #endif
1143
 
1143
 

+ 2
- 2
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/advanced_settings_menu.cpp View File

133
       .tag(5) .button( VELOCITY_POS,           GET_TEXT_F(MSG_VELOCITY))
133
       .tag(5) .button( VELOCITY_POS,           GET_TEXT_F(MSG_VELOCITY))
134
       .tag(6) .button( ACCELERATION_POS,       GET_TEXT_F(MSG_ACCELERATION))
134
       .tag(6) .button( ACCELERATION_POS,       GET_TEXT_F(MSG_ACCELERATION))
135
       .tag(7) .button( JERK_POS,               GET_TEXT_F(
135
       .tag(7) .button( JERK_POS,               GET_TEXT_F(
136
-        #if DISABLED(CLASSIC_JERK)
136
+        #if HAS_JUNCTION_DEVIATION
137
           MSG_JUNCTION_DEVIATION
137
           MSG_JUNCTION_DEVIATION
138
         #else
138
         #else
139
           MSG_JERK
139
           MSG_JERK
163
     case 5:  GOTO_SCREEN(MaxVelocityScreen);          break;
163
     case 5:  GOTO_SCREEN(MaxVelocityScreen);          break;
164
     case 6:  GOTO_SCREEN(DefaultAccelerationScreen);  break;
164
     case 6:  GOTO_SCREEN(DefaultAccelerationScreen);  break;
165
     case 7:
165
     case 7:
166
-      #if DISABLED(CLASSIC_JERK)
166
+      #if HAS_JUNCTION_DEVIATION
167
         GOTO_SCREEN(JunctionDeviationScreen);
167
         GOTO_SCREEN(JunctionDeviationScreen);
168
       #else
168
       #else
169
         GOTO_SCREEN(JerkScreen);
169
         GOTO_SCREEN(JerkScreen);

+ 2
- 2
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/bio_advanced_settings.cpp View File

68
       .tag(7) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM))
68
       .tag(7) .button( BTN_POS(2,1), BTN_SIZE(1,1), GET_TEXT_F(MSG_STEPS_PER_MM))
69
       .tag(8) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY))
69
       .tag(8) .button( BTN_POS(2,2), BTN_SIZE(1,1), GET_TEXT_F(MSG_VELOCITY))
70
       .tag(9) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION))
70
       .tag(9) .button( BTN_POS(2,3), BTN_SIZE(1,1), GET_TEXT_F(MSG_ACCELERATION))
71
-      #if DISABLED(CLASSIC_JERK)
71
+      #if HAS_JUNCTION_DEVIATION
72
         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JUNCTION_DEVIATION))
72
         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JUNCTION_DEVIATION))
73
       #else
73
       #else
74
         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JERK))
74
         .tag(10) .button( BTN_POS(2,4), BTN_SIZE(1,1), GET_TEXT_F(MSG_JERK))
113
     case 8: GOTO_SCREEN(MaxVelocityScreen);                break;
113
     case 8: GOTO_SCREEN(MaxVelocityScreen);                break;
114
     case 9: GOTO_SCREEN(DefaultAccelerationScreen);        break;
114
     case 9: GOTO_SCREEN(DefaultAccelerationScreen);        break;
115
     case 10:
115
     case 10:
116
-      #if DISABLED(CLASSIC_JERK)
116
+      #if HAS_JUNCTION_DEVIATION
117
         GOTO_SCREEN(JunctionDeviationScreen);
117
         GOTO_SCREEN(JunctionDeviationScreen);
118
       #else
118
       #else
119
         GOTO_SCREEN(JerkScreen);
119
         GOTO_SCREEN(JerkScreen);

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/junction_deviation_screen.cpp View File

22
 
22
 
23
 #include "../config.h"
23
 #include "../config.h"
24
 
24
 
25
-#if ENABLED(TOUCH_UI_FTDI_EVE) && DISABLED(CLASSIC_JERK)
25
+#if ENABLED(TOUCH_UI_FTDI_EVE) && HAS_JUNCTION_DEVIATION
26
 
26
 
27
 #include "screens.h"
27
 #include "screens.h"
28
 
28
 

+ 1
- 1
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.cpp View File

78
   DECL_SCREEN(MaxVelocityScreen),
78
   DECL_SCREEN(MaxVelocityScreen),
79
   DECL_SCREEN(MaxAccelerationScreen),
79
   DECL_SCREEN(MaxAccelerationScreen),
80
   DECL_SCREEN(DefaultAccelerationScreen),
80
   DECL_SCREEN(DefaultAccelerationScreen),
81
-#if DISABLED(CLASSIC_JERK)
81
+#if HAS_JUNCTION_DEVIATION
82
   DECL_SCREEN(JunctionDeviationScreen),
82
   DECL_SCREEN(JunctionDeviationScreen),
83
 #else
83
 #else
84
   DECL_SCREEN(JerkScreen),
84
   DECL_SCREEN(JerkScreen),

+ 2
- 2
Marlin/src/lcd/extui/lib/ftdi_eve_touch_ui/screens/screens.h View File

58
 #if HAS_MESH
58
 #if HAS_MESH
59
   BED_MESH_SCREEN_CACHE,
59
   BED_MESH_SCREEN_CACHE,
60
 #endif
60
 #endif
61
-#if DISABLED(CLASSIC_JERK)
61
+#if HAS_JUNCTION_DEVIATION
62
   JUNC_DEV_SCREEN_CACHE,
62
   JUNC_DEV_SCREEN_CACHE,
63
 #else
63
 #else
64
   JERK_SCREEN_CACHE,
64
   JERK_SCREEN_CACHE,
566
     static bool onTouchHeld(uint8_t tag);
566
     static bool onTouchHeld(uint8_t tag);
567
 };
567
 };
568
 
568
 
569
-#if DISABLED(CLASSIC_JERK)
569
+#if HAS_JUNCTION_DEVIATION
570
   class JunctionDeviationScreen : public BaseNumericAdjustmentScreen, public CachedScreen<JUNC_DEV_SCREEN_CACHE> {
570
   class JunctionDeviationScreen : public BaseNumericAdjustmentScreen, public CachedScreen<JUNC_DEV_SCREEN_CACHE> {
571
     public:
571
     public:
572
       static void onRedraw(draw_mode_t);
572
       static void onRedraw(draw_mode_t);

+ 1
- 1
Marlin/src/lcd/extui/ui_api.cpp View File

631
     }
631
     }
632
   #endif
632
   #endif
633
 
633
 
634
-  #if DISABLED(CLASSIC_JERK)
634
+  #if HAS_JUNCTION_DEVIATION
635
 
635
 
636
     float getJunctionDeviation_mm() {
636
     float getJunctionDeviation_mm() {
637
       return planner.junction_deviation_mm;
637
       return planner.junction_deviation_mm;

+ 1
- 1
Marlin/src/lcd/extui/ui_api.h View File

186
     void setLinearAdvance_mm_mm_s(const float, const extruder_t);
186
     void setLinearAdvance_mm_mm_s(const float, const extruder_t);
187
   #endif
187
   #endif
188
 
188
 
189
-  #if DISABLED(CLASSIC_JERK)
189
+  #if HAS_JUNCTION_DEVIATION
190
     float getJunctionDeviation_mm();
190
     float getJunctionDeviation_mm();
191
     void setJunctionDeviation_mm(const float);
191
     void setJunctionDeviation_mm(const float);
192
   #else
192
   #else

+ 1
- 1
Marlin/src/lcd/menu/menu_advanced.cpp View File

423
     START_MENU();
423
     START_MENU();
424
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
424
     BACK_ITEM(MSG_ADVANCED_SETTINGS);
425
 
425
 
426
-    #if DISABLED(CLASSIC_JERK)
426
+    #if HAS_JUNCTION_DEVIATION
427
       #if ENABLED(LIN_ADVANCE)
427
       #if ENABLED(LIN_ADVANCE)
428
         EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, 0.3f, planner.recalculate_max_e_jerk);
428
         EDIT_ITEM(float43, MSG_JUNCTION_DEVIATION, &planner.junction_deviation_mm, 0.001f, 0.3f, planner.recalculate_max_e_jerk);
429
       #else
429
       #else

+ 3
- 3
Marlin/src/module/configuration_store.cpp View File

2393
     TERN_(HAS_CLASSIC_E_JERK, planner.max_jerk.e = DEFAULT_EJERK;);
2393
     TERN_(HAS_CLASSIC_E_JERK, planner.max_jerk.e = DEFAULT_EJERK;);
2394
   #endif
2394
   #endif
2395
 
2395
 
2396
-  #if DISABLED(CLASSIC_JERK)
2396
+  #if HAS_JUNCTION_DEVIATION
2397
     planner.junction_deviation_mm = float(JUNCTION_DEVIATION_MM);
2397
     planner.junction_deviation_mm = float(JUNCTION_DEVIATION_MM);
2398
   #endif
2398
   #endif
2399
 
2399
 
2862
 
2862
 
2863
     CONFIG_ECHO_HEADING(
2863
     CONFIG_ECHO_HEADING(
2864
       "Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate>"
2864
       "Advanced: B<min_segment_time_us> S<min_feedrate> T<min_travel_feedrate>"
2865
-      #if DISABLED(CLASSIC_JERK)
2865
+      #if HAS_JUNCTION_DEVIATION
2866
         " J<junc_dev>"
2866
         " J<junc_dev>"
2867
       #endif
2867
       #endif
2868
       #if HAS_CLASSIC_JERK
2868
       #if HAS_CLASSIC_JERK
2875
         PSTR("  M205 B"), LINEAR_UNIT(planner.settings.min_segment_time_us)
2875
         PSTR("  M205 B"), LINEAR_UNIT(planner.settings.min_segment_time_us)
2876
       , PSTR(" S"), LINEAR_UNIT(planner.settings.min_feedrate_mm_s)
2876
       , PSTR(" S"), LINEAR_UNIT(planner.settings.min_feedrate_mm_s)
2877
       , SP_T_STR, LINEAR_UNIT(planner.settings.min_travel_feedrate_mm_s)
2877
       , SP_T_STR, LINEAR_UNIT(planner.settings.min_travel_feedrate_mm_s)
2878
-      #if DISABLED(CLASSIC_JERK)
2878
+      #if HAS_JUNCTION_DEVIATION
2879
         , PSTR(" J"), LINEAR_UNIT(planner.junction_deviation_mm)
2879
         , PSTR(" J"), LINEAR_UNIT(planner.junction_deviation_mm)
2880
       #endif
2880
       #endif
2881
       #if HAS_CLASSIC_JERK
2881
       #if HAS_CLASSIC_JERK

+ 7
- 7
Marlin/src/module/planner.cpp View File

132
 
132
 
133
 float Planner::steps_to_mm[XYZE_N];           // (mm) Millimeters per step
133
 float Planner::steps_to_mm[XYZE_N];           // (mm) Millimeters per step
134
 
134
 
135
-#if DISABLED(CLASSIC_JERK)
135
+#if HAS_JUNCTION_DEVIATION
136
   float Planner::junction_deviation_mm;       // (mm) M205 J
136
   float Planner::junction_deviation_mm;       // (mm) M205 J
137
   #if ENABLED(LIN_ADVANCE)
137
   #if ENABLED(LIN_ADVANCE)
138
     #if ENABLED(DISTINCT_E_FACTORS)
138
     #if ENABLED(DISTINCT_E_FACTORS)
2151
 
2151
 
2152
     #if ENABLED(LIN_ADVANCE)
2152
     #if ENABLED(LIN_ADVANCE)
2153
 
2153
 
2154
-      #if DISABLED(CLASSIC_JERK)
2154
+      #if HAS_JUNCTION_DEVIATION
2155
         #if ENABLED(DISTINCT_E_FACTORS)
2155
         #if ENABLED(DISTINCT_E_FACTORS)
2156
           #define MAX_E_JERK max_e_jerk[extruder]
2156
           #define MAX_E_JERK max_e_jerk[extruder]
2157
         #else
2157
         #else
2238
 
2238
 
2239
   float vmax_junction_sqr; // Initial limit on the segment entry velocity (mm/s)^2
2239
   float vmax_junction_sqr; // Initial limit on the segment entry velocity (mm/s)^2
2240
 
2240
 
2241
-  #if DISABLED(CLASSIC_JERK)
2241
+  #if HAS_JUNCTION_DEVIATION
2242
     /**
2242
     /**
2243
      * Compute maximum allowable entry speed at junction by centripetal acceleration approximation.
2243
      * Compute maximum allowable entry speed at junction by centripetal acceleration approximation.
2244
      * Let a circle be tangent to both previous and current path line segments, where the junction
2244
      * Let a circle be tangent to both previous and current path line segments, where the junction
2285
     ;
2285
     ;
2286
     unit_vec *= inverse_millimeters;
2286
     unit_vec *= inverse_millimeters;
2287
 
2287
 
2288
-    #if IS_CORE && DISABLED(CLASSIC_JERK)
2288
+    #if IS_CORE && HAS_JUNCTION_DEVIATION
2289
       /**
2289
       /**
2290
        * On CoreXY the length of the vector [A,B] is SQRT(2) times the length of the head movement vector [X,Y].
2290
        * On CoreXY the length of the vector [A,B] is SQRT(2) times the length of the head movement vector [X,Y].
2291
        * So taking Z and E into account, we cannot scale to a unit vector with "inverse_millimeters".
2291
        * So taking Z and E into account, we cannot scale to a unit vector with "inverse_millimeters".
2460
 
2460
 
2461
     previous_safe_speed = safe_speed;
2461
     previous_safe_speed = safe_speed;
2462
 
2462
 
2463
-    #if DISABLED(CLASSIC_JERK)
2463
+    #if HAS_JUNCTION_DEVIATION
2464
       vmax_junction_sqr = _MIN(vmax_junction_sqr, sq(vmax_junction));
2464
       vmax_junction_sqr = _MIN(vmax_junction_sqr, sq(vmax_junction));
2465
     #else
2465
     #else
2466
       vmax_junction_sqr = sq(vmax_junction);
2466
       vmax_junction_sqr = sq(vmax_junction);
2649
 
2649
 
2650
   #if IS_KINEMATIC
2650
   #if IS_KINEMATIC
2651
 
2651
 
2652
-    #if DISABLED(CLASSIC_JERK)
2652
+    #if HAS_JUNCTION_DEVIATION
2653
       const xyze_pos_t cart_dist_mm = {
2653
       const xyze_pos_t cart_dist_mm = {
2654
         rx - position_cart.x, ry - position_cart.y,
2654
         rx - position_cart.x, ry - position_cart.y,
2655
         rz - position_cart.z, e  - position_cart.e
2655
         rz - position_cart.z, e  - position_cart.e
2675
       const feedRate_t feedrate = fr_mm_s;
2675
       const feedRate_t feedrate = fr_mm_s;
2676
     #endif
2676
     #endif
2677
     if (buffer_segment(delta.a, delta.b, delta.c, machine.e
2677
     if (buffer_segment(delta.a, delta.b, delta.c, machine.e
2678
-      #if DISABLED(CLASSIC_JERK)
2678
+      #if HAS_JUNCTION_DEVIATION
2679
         , cart_dist_mm
2679
         , cart_dist_mm
2680
       #endif
2680
       #endif
2681
       , feedrate, extruder, mm
2681
       , feedrate, extruder, mm

+ 3
- 3
Marlin/src/module/planner.h View File

61
                             manual_feedrate_mm_s { _mf.x / 60.0f, _mf.y / 60.0f, _mf.z / 60.0f, _mf.e / 60.0f };
61
                             manual_feedrate_mm_s { _mf.x / 60.0f, _mf.y / 60.0f, _mf.z / 60.0f, _mf.e / 60.0f };
62
 #endif
62
 #endif
63
 
63
 
64
-#if IS_KINEMATIC && DISABLED(CLASSIC_JERK)
64
+#if IS_KINEMATIC && HAS_JUNCTION_DEVIATION
65
   #define HAS_DIST_MM_ARG 1
65
   #define HAS_DIST_MM_ARG 1
66
 #endif
66
 #endif
67
 
67
 
304
     static uint32_t max_acceleration_steps_per_s2[XYZE_N]; // (steps/s^2) Derived from mm_per_s2
304
     static uint32_t max_acceleration_steps_per_s2[XYZE_N]; // (steps/s^2) Derived from mm_per_s2
305
     static float steps_to_mm[XYZE_N];           // Millimeters per step
305
     static float steps_to_mm[XYZE_N];           // Millimeters per step
306
 
306
 
307
-    #if DISABLED(CLASSIC_JERK)
307
+    #if HAS_JUNCTION_DEVIATION
308
       static float junction_deviation_mm;       // (mm) M205 J
308
       static float junction_deviation_mm;       // (mm) M205 J
309
       #if ENABLED(LIN_ADVANCE)
309
       #if ENABLED(LIN_ADVANCE)
310
         static float max_e_jerk                 // Calculated from junction_deviation_mm
310
         static float max_e_jerk                 // Calculated from junction_deviation_mm
900
 
900
 
901
     static void recalculate();
901
     static void recalculate();
902
 
902
 
903
-    #if DISABLED(CLASSIC_JERK)
903
+    #if HAS_JUNCTION_DEVIATION
904
 
904
 
905
       FORCE_INLINE static void normalize_junction_vector(xyze_float_t &vector) {
905
       FORCE_INLINE static void normalize_junction_vector(xyze_float_t &vector) {
906
         float magnitude_sq = 0;
906
         float magnitude_sq = 0;

Loading…
Cancel
Save