62 current_value += step_size;
87 void set(T targetvalue, T num_steps)
90 T numerator = targetvalue-current_value;
91 step_size= numerator/num_steps;
94 current_value = targetvalue;
104 void set(T startvalue, T targetvalue, T num_steps)
107 set(targetvalue, num_steps);
117 unsigned char current_value;
137 current_value += step_size;
138 return current_value;
149 void set(
unsigned char value)
161 void set(
unsigned char targetvalue,
unsigned char num_steps)
163 step_size=(
char)((((
float)targetvalue-current_value)/num_steps));
172 void set(
unsigned char startvalue,
unsigned char targetvalue,
unsigned char num_steps)
175 set(targetvalue
, num_steps
);
186 unsigned int current_value;
206 current_value += step_size;
207 return current_value;
218 void set(
unsigned int value)
230 void set(
unsigned int targetvalue,
unsigned int num_steps)
232 step_size=(
int)((((
float)targetvalue-current_value)/num_steps));
242 void set(
unsigned int startvalue,
unsigned int targetvalue,
unsigned int num_steps)
245 set(targetvalue
, num_steps
);
258 unsigned long current_value;
278 current_value += step_size;
279 return current_value;
290 void set(
unsigned long value)
302 void set(
unsigned long targetvalue,
unsigned long num_steps)
304 step_size=(
long)((((
float)targetvalue-current_value)/num_steps));
313 void set(
unsigned long startvalue,
unsigned long targetvalue,
unsigned long num_steps)
316 set(targetvalue
, num_steps
);
322 template<int8_t NI, int8_t NF>
323 class Line<UFix<NI, NF>>
326 typedef UFix<NI, NF> internal_type;
327 internal_type current_value;
328 SFix<NI,NF> step_size;
342 current_value = current_value + step_size;
343 return current_value;
352 void set(internal_type value)
362 void set(internal_type targetvalue, UFix<_NI,0> num_steps)
364 if(num_steps.asRaw()) {
365 auto numerator = targetvalue-current_value;
366 step_size = numerator*num_steps.invAccurate();
369 current_value = targetvalue;
379 void set(internal_type targetvalue, T num_steps)
382 auto numerator = targetvalue-current_value;
383 step_size = internal_type(numerator.asRaw()/num_steps,
true);
386 current_value = targetvalue;
396 void set(internal_type startvalue, internal_type targetvalue, T num_steps)
399 set(targetvalue, num_steps);
405 template<int8_t NI, int8_t NF>
406 class Line<SFix<NI, NF>>
409 typedef SFix<NI, NF> internal_type;
410 internal_type current_value;
411 SFix<NI+1, NF> step_size;
425 current_value = current_value + step_size;
426 return current_value;
435 void set(internal_type value)
445 void set(internal_type targetvalue, UFix<_NI,0> num_steps)
447 if(num_steps.asRaw()) {
448 auto numerator = targetvalue-current_value;
449 step_size = numerator*num_steps.invAccurate();
452 current_value = targetvalue;
462 void set(internal_type targetvalue, T num_steps)
465 auto numerator = targetvalue-current_value;
466 step_size = internal_type(numerator.asRaw()/num_steps,
true);
469 current_value = targetvalue;
479 void set(internal_type startvalue, internal_type targetvalue, T num_steps)
482 set(targetvalue, num_steps);