Преглед изворни кода

Tempted by the const of a seg_length

Scott Lahteine пре 5 година
родитељ
комит
32dc874928
1 измењених фајлова са 14 додато и 14 уклоњено
  1. 14
    14
      Marlin/src/gcode/motion/G2_G3.cpp

+ 14
- 14
Marlin/src/gcode/motion/G2_G3.cpp Прегледај датотеку

@@ -103,21 +103,21 @@ void plan_arc(
103 103
 
104 104
   const feedRate_t scaled_fr_mm_s = MMS_SCALED(feedrate_mm_s);
105 105
 
106
-  #ifdef ARC_SEGMENTS_PER_R
107
-    float seg_length = MM_PER_ARC_SEGMENT * radius;
108
-    LIMIT(seg_length, MM_PER_ARC_SEGMENT, ARC_SEGMENTS_PER_R);
109
-  #elif ARC_SEGMENTS_PER_SEC
110
-    float seg_length = scaled_fr_mm_s * RECIPROCAL(ARC_SEGMENTS_PER_SEC);
111
-    NOLESS(seg_length, MM_PER_ARC_SEGMENT);
112
-  #else
113
-    constexpr float seg_length = MM_PER_ARC_SEGMENT;
114
-  #endif
115
-
116
-  // Length divided by segment size gives segment count
106
+  // Start with a nominal segment length
107
+  float seg_length = (
108
+    #ifdef ARC_SEGMENTS_PER_R
109
+      constrain(MM_PER_ARC_SEGMENT * radius, MM_PER_ARC_SEGMENT, ARC_SEGMENTS_PER_R)
110
+    #elif ARC_SEGMENTS_PER_SEC
111
+      _MAX(scaled_fr_mm_s * RECIPROCAL(ARC_SEGMENTS_PER_SEC), MM_PER_ARC_SEGMENT)
112
+    #else
113
+      MM_PER_ARC_SEGMENT
114
+    #endif
115
+  );
116
+  // Divide total travel by nominal segment length
117 117
   uint16_t segments = FLOOR(mm_of_travel / seg_length);
118
-  if (segments < min_segments) {
119
-    segments = min_segments;                      // No fewer than the minimum
120
-    seg_length = mm_of_travel / segments;         // A new segment length
118
+  if (segments < min_segments) {            // Too few segments?
119
+    segments = min_segments;                // More segments
120
+    seg_length = mm_of_travel / segments;   // but also shorter
121 121
   }
122 122
 
123 123
   /**

Loading…
Откажи
Сачувај