Implement a piecewise linear interpolation transform. More...
#include <sensesp/transforms/curveinterpolator.h>
Classes | |
class | Sample |
Public Member Functions | |
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) |
Protected Attributes | |
std::set< Sample > | samples_ {} |
String | input_title_ = "Input" |
String | output_title_ = "Output" |
![]() | |
const String | config_path_ |
![]() | |
float | output_ |
Friends | |
const char * | ConfigSchema (const CurveInterpolator &obj) |
Additional Inherited Members | |
![]() | |
using | input_type |
![]() | |
static const std::set< TransformBase * > & | get_transforms () |
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:
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.
sensesp::CurveInterpolator::CurveInterpolator | ( | std::set< Sample > * | defaults = NULL, |
const String & | config_path = "" ) |
Construct a new CurveInterpolator object.
defaults | Default sample values |
config_path | |
input_title | Display name for the input sample values |
output_title | Display name for the output sample values |
Definition at line 23 of file curveinterpolator.cpp.
void sensesp::CurveInterpolator::add_sample | ( | const Sample & | new_sample | ) |
Definition at line 142 of file curveinterpolator.cpp.
void sensesp::CurveInterpolator::clear_samples | ( | ) |
Definition at line 140 of file curveinterpolator.cpp.
|
overridevirtual |
Deserializes the current object data from a JsonObject.
Reimplemented from sensesp::Serializable.
Definition at line 114 of file curveinterpolator.cpp.
|
inline |
Definition at line 81 of file curveinterpolator.h.
|
overridevirtual |
Used to set an input of this consumer. It is called automatically by a ValueProducer but can also be called manually.
new_value | the value of the input |
Reimplemented from sensesp::ValueConsumer< float >.
Definition at line 35 of file curveinterpolator.cpp.
|
inline |
Definition at line 63 of file curveinterpolator.h.
|
inline |
Definition at line 67 of file curveinterpolator.h.
|
overridevirtual |
Serializes the current object data into a JsonObject.
Reimplemented from sensesp::Serializable.
Definition at line 99 of file curveinterpolator.cpp.
|
friend |
Definition at line 91 of file curveinterpolator.h.
|
protected |
Definition at line 85 of file curveinterpolator.h.
|
protected |
Definition at line 86 of file curveinterpolator.h.
|
protected |
Definition at line 84 of file curveinterpolator.h.