<- PRPL reference <- Math
Arguments | Result | Notation |
---|---|---|
float float float bool int | float | [float float float bool int- float] |
Computes the value for a given signal waveform and pushes it to the stack.
A function to derive the y - coordinate for a given x - coordinate on a graph line following one of the indicated wave patterns. Useful to animate an object or to produce a pattern over time. For instance, could be used to oscillating the brightness of light source or beacon or to vary the strength of an emitter over time.
Arguments and type in order: - Integer.the X coordinate in the waveform(Eg.time) - Float.Frequency of the waveform - Float.Phase Shift of the waveform - Bool.invert the waveform - Integer.Signal type(0 to 6 in types, below)
Signal types: * 0 = NONE * 1 = SINE * 2 = SQUARE * 3 = TRIANGLE * 4 = SAW - TOOTH * 5 = RANDOM * 6 = CONSTANT
Visual of 4 periods of each waveform as if they were graphed
=== Notes === == Phase Shift == The phase difference, or phase shift as it is also called of a Sinusoidal Waveform, is the angle Φ(Greek letter Phi), in degrees or radians that the waveform has shifted from a certain reference point along the horizontal zero axis.In other words phase shift is the lateral difference between two or more waveforms along a common axis and sinusoidal waveforms of the same frequency can have a phase difference. The phase difference, Φ of an alternating waveform can vary from between 0 to its maximum time period, T of the waveform during one complete cycle and this can be anywhere along the horizontal axis between, Φ = 0 to 2π(radians) or Φ = 0 to 360o depending upon the angular units used.
# starting at coords of the core # generate a long sine wave of particles once once false ->invert 0 ->phaseShift .02 ->frequency 50 ->length # frequency * length will be the number of periods of the waveform # amplitude and widthMulti need to be greater than 4 so particles don't spawn on top of each other 12 ->amplitude # how tall the waveform will be, from 0 in pixels 4 ->widthMulti # how wide the waveform will be, 1 being standard, 4 being fours times as wide 1 ->signalType #sine do(<-length 0) SignalGenerator(I <-frequency <-phaseShift <-invert <-signalType) ->sigValue CurrentPixelCoords ->y ->x <-x I <-widthMulti mul add ->px <-y <-sigValue <-amplitude mul add ->py <-px <-py 0 0 1 1 CreateParticle loop endonce