User Tools

Site Tools


4rpl:commands:signalgenerator

This is an old revision of the document!


Index

SignalGenerator

SignalGenerator(<-interval <-sigFrequency <-phaseShift <-invert <-signalType) ->sigValue

Description

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

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.

Examples

# On a map with terrain of 200 in X direction and at least 150 in Z direction (3D coordinates)
# generate a sine wave of creeper across the map.
200->numFrames
       ->frequency(1 div(AsFloat(<-numFrames)))
0->phaseShift
false->invert
1->signalType #sine
 
do (<-numFrames 0)
    SignalGenerator(I <-frequency <-phaseShift <-invert <-signalType) ->sigValue
    round(<-sigValue) 2) ->sigValue
    print3(I " : " <-sigValue)
    SetCreeper(I 75 add(<-sigValue mul(50)) 15 true)
loop

Index

4rpl/commands/signalgenerator.1621688006.txt.gz · Last modified: 2025/02/14 14:56 (external edit)