A function node for a mathematical expression f(x) for creating simulation data, characteristics, calibration data and other numerical output based on a numeric input.
-
easy expression formula like x^2, sqrt(x), nthRoot(x), exp(x), sin(x), cos(x) etc. (see function-plot)
-
define which property from
msg
to use for x value input -
use Mustache-Syntax to include variables from
msg
orcontext
-
Use the modulo-operator (%) to create infinite ranged functions like easings.
- easeOutElastic
- -0.5*exp(-6x)*(-2*exp(6x) + sin(12x) + 2cos(12x))
- easeOutQuad
- -{{change}}*(x/{{duration}})*(x-2)+{{start}}
- easeInOutQuad
- ((2*x/{{duration}}) <1)*({{change}}*0.5*x*x) + (2*x/{{duration}}>=1)*-0.5*{{change}}*((x-1)*(x-3)-1) + {{start}}
The property from msg
to use for the value x for the function input
A function f(x) defined according to built-in-math-eval as a function expression. You can use Mustache-Syntax to include values from the flow
or global
context or msg
. The function would then be reevaluated on each input.
The function can be overriden by a provided msg.function
as input.
The node is most performant when not using Mustache-Syntax or redefine function expression via msg.function as this leads to an recompilation of the function expression with each incoming msg
. There is currently no function expression cache. This node will reuse the incoming msg
for its output.
Note: to gain more performance use a function-node for calculation. This is more a convenient node for easier setup of curves.
When using Mustache-Syntax these values will be replaces bei "0" for the preview window, so function may not get plotted correctly. You can use the node-red-contrib-counter node to create a continous input stream of (0,1,2,4,5,6...).
This node uses the work of Mauricio Poppe for visualization and function expression parsing. This node-red node is just a wrapper around this library.
See Change Log for details
Follow the node installation guide to the npm-package node-red-contrib-curve.
npm install node-red-contrib-curve
Use the Node-RED google group for general discussion about this node. Or use the GitHub issues log for raising issues or contributing suggestions and enhancements.
If you would like to contribute to this node, you can contact the autor via GitHub or raise a request in the GitHub issues log.
- Based on function-plot work of Mauricio Poppe
- Node-RED node wrapper Sebastian Barwe
- Node template from Julian Knight