|
| CurveInterpolator (std::set< Sample > *defaults=NULL, const String &config_path="") |
| Construct a new CurveInterpolator object.
|
|
void | set (const float &input) override |
|
CurveInterpolator * | set_input_title (String input_title) |
|
CurveInterpolator * | set_output_title (String output_title) |
|
virtual bool | to_json (JsonObject &doc) override |
|
virtual bool | from_json (const JsonObject &doc) override |
|
void | clear_samples () |
|
void | add_sample (const Sample &new_sample) |
|
const std::set< Sample > & | get_samples () const |
|
| SymmetricTransform (String config_path="") |
|
| Transform (String config_path="") |
|
Transform< float, float > * | connect_from (ValueProducer< float > *producer0, ValueProducer< float > *producer1=NULL, ValueProducer< float > *producer2=NULL, ValueProducer< float > *producer3=NULL, ValueProducer< float > *producer4=NULL) |
|
| TransformBase (const String &config_path) |
|
| FileSystemSaveable (const String &config_path) |
|
virtual bool | load () override |
| Load and populate the object from a persistent storage.
|
|
virtual bool | save () override |
| Save the object to a persistent storage.
|
|
virtual bool | clear () override |
| Delete the data from a persistent storage.
|
|
bool | find_config_file (const String &config_path, String &filename) |
|
| Saveable (const String &config_path) |
|
virtual bool | refresh () |
| Refresh the object. This may or may not access the persistent storage but is not expected to overwrite the object's state.
|
|
const String & | get_config_path () const |
|
virtual void | set_input (const float &new_value) |
|
void | connect_from (ValueProducer< float > *producer) |
|
| ValueProducer () |
|
| ValueProducer (const float &initial_value) |
|
virtual const float & | get () const |
|
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< float, typenameVConsumer::input_type >::value, std::shared_ptr< VConsumer > >::type | connect_to (std::shared_ptr< VConsumer > consumer) |
| Connect a producer to a transform with a different input type.
|
|
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< float, typenameVConsumer::input_type >::value, VConsumer * >::type | connect_to (VConsumer *consumer) |
|
std::enable_if< std::is_base_of< ValueConsumer< typenameVConsumer::input_type >, VConsumer >::value &&std::is_convertible< float, typenameVConsumer::input_type >::value, VConsumer * >::type | connect_to (VConsumer &consumer) |
|
void | emit (const float &new_value) |
|
| Observable () |
|
| Observable (Observable &&other) |
| Move constructor.
|
|
void | notify () |
|
void | attach (std::function< void()> observer) |
|
Implement a piecewise linear interpolation transform.
Piecewise linear functions are defined by a collection of x,y pairs, in which the x values are monotonically increasing. The y values are the corresponding values of the function at the x values. The interpolator will linearly interpolate between the y values to produce a value for any x value.
As a practical example, consider the following samples:
At different input values, the following happens:
- At x = 0, the interpolator will return 0.
- At x = 0.5, the interpolator will still return 0 because both adjacent samples have y = 0.
- At x = 1.4, the adjacent outputs are 0 and 1, so the interpolator will return 0.4.
- At x = 2.5, the interpolator will return 1.0 because the adjacent outputs are both 1.
It can be used e.g. for non-linear analog gauges such as temperature gauges and oil pressure gauges, which get their input from analog sensors that are variable resistors.
Definition at line 39 of file curveinterpolator.h.