FastLED 3.9.15
Loading...
Searching...
No Matches
fl::FlowField Class Referenceabstract

Detailed Description

Abstract base class for 2D flow field effects.

Manages common timing and parameters. Concrete subclasses (FlowFieldFloat, FlowFieldFP) implement the actual rendering in drawImpl().

Concept by Stefan Petrick. Original C++ implementation by 4wheeljive (ColorTrails project). Distilled into a self-contained FastLED Fx2d class.

Example usage:

XYMap xymap(22, 22, true);
FlowFieldFloat floatFx(xymap); // float-precision
FlowFieldFP fpFx(xymap); // fixed-point (fast)
FlowField &fx = floatFx; // use via base pointer/reference
fx.draw(ctx);
XYMap xymap
void draw(DrawContext context) override
Handles timing, then delegates to drawImpl().
FlowField(const XYMap &xyMap, const Params &params=Params())
Pure fixed-point (s16x16) flow field implementation for maximum speed.
Definition flowfield.h:360
Float-precision flow field implementation.
Definition flowfield.h:295
Examples
FlowField.ino.

Definition at line 226 of file flowfield.h.

#include <flowfield.h>

+ Inheritance diagram for fl::FlowField:
+ Collaboration diagram for fl::FlowField:

Public Types

using Params = FlowFieldParams
 
- Public Types inherited from fl::Fx
using DrawContext = ::fl::DrawContext
 

Public Member Functions

 ~FlowField () FL_NOEXCEPT override=default
 
void draw (DrawContext context) override
 Handles timing, then delegates to drawImpl().
 
ParamsgetParams ()
 
const ParamsgetParams () const
 
NoiseBias2DnoiseBias ()
 
const NoiseBias2DnoiseBias () const
 
void noisePunch (float amplitude=1.0f, BumpShape shape=BumpShape::HalfSine)
 Trigger a noise punch on both axes at center with proportional width.
 
void noisePunchX (float center, float width, float amplitude=1.0f, BumpShape shape=BumpShape::HalfSine)
 Trigger a noise punch on the X axis (columns).
 
void noisePunchY (float center, float width, float amplitude=1.0f, BumpShape shape=BumpShape::HalfSine)
 Trigger a noise punch on the Y axis (rows).
 
void setColorShift (float speed)
 
void setDotCount (int count)
 
void setEmitterMode (int mode)
 
void setEndpointSpeed (float speed)
 
void setFlowAmplitudeX (float amp)
 
void setFlowAmplitudeY (float amp)
 
void setFlowShift (float shift)
 
void setFlowSpeedX (float speed)
 
void setFlowSpeedY (float speed)
 
void setNoiseFrequency (float freq)
 
void setNoiseFrequencyX (float freq)
 
void setNoiseFrequencyY (float freq)
 
void setPersistence (float halfLife)
 
void setReverseXProfile (bool rev)
 
void setShowFlowVectors (bool show)
 
void setSpeed (float speed)
 Set time speed/scale (1.0 = normal, 0.5 = half speed, etc.)
 
float speed () const
 
- Public Member Functions inherited from fl::Fx2d
 Fx2d (const XYMap &xyMap)
 
u16 getHeight () const
 
u16 getWidth () const
 
XYMapgetXYMap ()
 
const XYMapgetXYMap () const
 
void setXYMap (const XYMap &xyMap)
 
u16 xyMap (u16 x, u16 y) const
 
- Public Member Functions inherited from fl::Fx
 Fx (u16 numLeds)
 
virtual fl::string fxName () const =0
 
u16 getNumLeds () const
 
virtual bool hasFixedFrameRate (float *fps) const
 
virtual void pause (fl::u32 now)
 
virtual void resume (fl::u32 now)
 

Protected Member Functions

 FlowField (const XYMap &xyMap, const Params &params=Params())
 
virtual void drawImpl (DrawContext context, u32 dt_ms, u32 t_ms)=0
 Subclasses implement rendering given the time delta and total time.
 
- Protected Member Functions inherited from fl::Fx
virtual ~Fx () FL_NOEXCEPT
 

Protected Attributes

NoiseBias2D mNoiseBias
 
Params mParams
 
- Protected Attributes inherited from fl::Fx2d
XYMap mXyMap
 
- Protected Attributes inherited from fl::Fx
u16 mNumLeds
 

Private Attributes

u32 mLastWarpedMs = 0
 
TimeWarp mTimeWarp
 

The documentation for this class was generated from the following files: