waves

package
v0.0.0-...-d66e16b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 19, 2021 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EaseFunctions = map[string]EaseFunc{
	"Linear":       EaseLinear,
	"InQuad":       easeInQuad,
	"OutQuad":      easeOutQuad,
	"InOutQuad":    easeInOutQuad,
	"InCubic":      easeInCubic,
	"OutCubic":     easeOutCubic,
	"InOutCubic":   easeInOutCubic,
	"InQuart":      easeInQuart,
	"OutQuart":     easeOutQuart,
	"InOutQuart":   easeInOutQuart,
	"InQuint":      easeInQuint,
	"OutQuint":     easeOutQuint,
	"InOutQuint":   easeInOutQuint,
	"InSine":       easeInSine,
	"OutSine":      easeOutSine,
	"InOutSine":    easeInOutSine,
	"InExpo":       easeInExpo,
	"OutExpo":      easeOutExpo,
	"InOutExpo":    easeInOutExpo,
	"InCirc":       easeInCirc,
	"OutCirc":      easeOutCirc,
	"InOutCirc":    easeInOutCirc,
	"InBack":       easeInBack,
	"OutBack":      easeOutBack,
	"InOutBack":    easeInOutBack,
	"InElastic":    easeInElastic,
	"OutElastic":   easeOutElastic,
	"InOutElastic": easeInOutElastic,
}

Registry of known scaling functions

View Source
var WaveformFunctions = map[string]govaluate.ExpressionFunction{
	"Sine":     sineFunc,
	"Square":   squareFunc,
	"Triangle": triangleFunc,
	"Sawtooth": sawtoothFunc,
	"Noise":    noiseFunc,
	"CSV":      csvFunc,
}

Registry of known scaling functions

Functions

func EaseLinear

func EaseLinear(x float64) float64

EaseLinear simple linear easing

Types

type EaseFunc

type EaseFunc func(x float64) float64

Given 0-1 return a scaling function

type InputField

type InputField interface {
	GetConfig() *models.TimeFieldConfig
	GetValues(query *models.SignalQuery) (rsp []*data.Field, env []*data.Field, err error)
	UpdateEnv(time *time.Time, env map[string]interface{}) error
}

func NewTimeInputField

func NewTimeInputField(config *models.TimeFieldConfig) (InputField, error)

type SignalEnv

type SignalEnv = map[string]interface{}

type SignalField

type SignalField interface {
	GetConfig() *models.ExpressionConfig
	GetValue(env map[string]interface{}) (interface{}, error)
	SetValue(val interface{}) error
}

func NewEvalSignalField

func NewEvalSignalField(config *models.ExpressionConfig) (SignalField, error)

type SignalGen

type SignalGen struct {
	Inputs []InputField
	Fields []SignalField
}

func DoSignalQuery

func DoSignalQuery(query *models.SignalQuery) (*data.Frame, *SignalGen, error)

func NewSignalGenerator

func NewSignalGenerator(args models.SignalConfig) (*SignalGen, error)

func (*SignalGen) UpdateValues

func (s *SignalGen) UpdateValues(props map[string]interface{}) error

type WaveformArgs

type WaveformArgs struct {
	Type      string    `json:"type,omitempty"`
	Period    string    `json:"period,omitempty"`    // parse duration or range/X
	PeriodSec float64   `json:"periodSec,omitempty"` // in seconds
	Amplitude float64   `json:"amplitude,omitempty"`
	Offset    float64   `json:"offset,omitempty"`
	Phase     float64   `json:"phase,omitempty"`
	DutyCycle float64   `json:"duty,omitempty"` // on time vs off time (0-1)
	Points    []float64 `json:"points,omitempty"`
	Args      string    `json:"args,omitempty"` // ease function or expression
}

type WaveformFunc

type WaveformFunc func(t time.Time, args *WaveformArgs) float64

Given 0-1 return a scaling function -- note this does not include amplitude and doffset

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL