#---------------------------------------------- # Generators calculate line functions based on # parameters and push the resulting frame_set # into the registers. # There are two types of every generator. # The still version that only calculates a # single frame (no leading underscore) and the # animated version (with a leading underscore) # that takes initial and final frame parameters # to make a set of transitional frames. #---------------------------------------------- #---------------------------------------------- # All of these generators use the values of: math start 0.0 math duration 1.0 math iterations 100 #---------------------------------------------- # All of the animated generators use the values of: math _start 0.0 math _duration 1.0 math _iterations 100 math frames 3 #---------------------------------------------- #---------------------------------------------- # https://en.wikipedia.org/wiki/Rhodonea # # ratio = rhodonea_numerator / rhodonea_denominator # # x = radius * cos(ratio * t) * cos(t) # y = radius * cos(ratio * t) * sin(t) math rhodonea math _rhodonea #---------------------------------------------- # https://en.wikipedia.org/wiki/Epicycloid # # ratio = fixed_radius / roller_radius; # # x = roller_radius * (ratio + 1) * cos(t) # - roller_radius * cos((ratio + 1) * t) # # y = roller_radius * (ratio + 1) * sin(t) # - roller_radius * sin((ratio + 1) * t) math epicycloid math _epicycloid #---------------------------------------------- # https://en.wikipedia.org/wiki/Epitrochoid # # ratio = fixed_radius / roller_radius; # # x = roller_radius * (ratio + 1) * cos(t) # - roller_offset * cos((ratio + 1) * t) # # y = roller_radius * (ratio + 1) * sin(t) # - roller_offset * sin((ratio + 1) * t) math epitrochoid math _epitrochoid #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypocycloid # # ratio = fixed_radius / roller_radius # # x = (fixed_radius - roller_radius) * cos(t) # + roller_radius * cos((ratio - 1) * t) # # y = (fixed_radius - roller_radius) * sin(t) # - roller_radius * sin((ratio - 1) * t) math hypocycloid math _hypocycloid #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypotrochoid # # ratio = fixed_radius / roller_radius # # x = (fixed_radius - roller_radius) * cos(t) # + roller_offset * cos((ratio - 1) * t) # # y = (fixed_radius - roller_radius) * sin(t) # - roller_offset * sin((ratio - 1) * t) math hypotrochoid math _hypotrochoid #---------------------------------------------- # https://en.wikipedia.org/wiki/Rhodonea # # LBO1 phase += (phase_cycle / 4) // convert to cosine-like function # LBO2 phase += (phase_cycle / 4) # LBO3 phase += (phase_cycle / 4) # ratio = rhodonea_numerator / rhodonea_denominator # # x = radius * LBO1(ratio * t) * LBO2(t) # y = radius * LBO3(ratio * t) * LBO4(t) math oscillator_rhodonea math _oscillator_rhodonea #---------------------------------------------- # https://en.wikipedia.org/wiki/Epicycloid # # LBO1 phase += (phase_cycle / 4) // convert to cosine-like function # LBO2 phase += (phase_cycle / 4) # ratio = fixed_radius / roller_radius; # # x = roller_radius * (ratio + 1) * LBO1(t) # - roller_radius * LBO2((ratio + 1) * t) # # y = roller_radius * (ratio + 1) * LBO3(t) # - roller_radius * LBO4((ratio + 1) * t) math oscillator_epicycloid math _oscillator_epicycloid #---------------------------------------------- # https://en.wikipedia.org/wiki/Epitrochoid # # LBO1 phase += (phase_cycle / 4) // convert to cosine-like function # LBO2 phase += (phase_cycle / 4) # ratio = fixed_radius / roller_radius; # # x = roller_radius * (ratio + 1) * LBO1(t) # - roller_offset * LBO2((ratio + 1) * t) # # y = roller_radius * (ratio + 1) * LBO3(t) # - roller_offset * LBO4((ratio + 1) * t) math oscillator_epitrochoid math _oscillator_epitrochoid #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypocycloid # # LBO1 phase += (phase_cycle / 4) // convert to cosine-like function # LBO2 phase += (phase_cycle / 4) # ratio = fixed_radius / roller_radius # # x = (fixed_radius - roller_radius) * LBO1(t) # + roller_radius * LBO2((ratio - 1) * t) # # y = (fixed_radius - roller_radius) * LBO3(t) # - roller_radius * LBO4((ratio - 1) * t) math oscillator_hypocycloid math _oscillator_hypocycloid #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypotrochoid # # LBO1 phase += (phase_cycle / 4) // convert to cosine-like function # LBO2 phase += (phase_cycle / 4) # ratio = center_radius / roller_radius # # x = (center_radius - roller_radius) * LBO1(t) # + roller_offset * LBO2((ratio - 1) * t) # # y = (center_radius - roller_radius) * LBO3(t) # - roller_offset * LBO4((ratio - 1) * t) math oscillator_hypotrochoid math _oscillator_hypotrochoid #---------------------------------------------- # https://en.wikipedia.org/wiki/Lissajous_curve # # x = LBO1(t) # y = LBO2(t) # also named oscillator_xy or _oscillator_xy math lissajou math _lissajou #---------------------------------------------- # https://en.wikipedia.org/wiki/Lissajous_curve # # x = LBO1(t) # y = LBO2(t) # z = LBO3(t) # also named oscillator_xyz or _oscillator_xyz math lissajou_xyz math _lissajou_xyz #---------------------------------------------- # x = t # y = LBO1(t) math oscillator math _oscillator #---------------------------------------------- # x = t # y = LBO1(t) + LBO2(t) math oscillator_sum math _oscillator_sum #---------------------------------------------- # x = LBO1(t) # y = LBO2(t) math oscillator_xy math _oscillator_xy #---------------------------------------------- # x = LBO1(t) # y = LBO2(t) # z = LBO3(t) math oscillator_xyz math _oscillator_xyz #---------------------------------------------- # https://en.wikipedia.org/wiki/Harmonograph # # x = LBO1(t) + LBO2(t) # y = LBO3(t) + LBO4(t) math harmonograph math _harmonograph #---------------------------------------------- # https://en.wikipedia.org/wiki/Harmonograph # # x = LBO1(t) + LBO2(t) # y = LBO3(t) + LBO4(t) # z = LBO5(t) + LBO6(t) math harmonograph_xyz math _harmonograph_xyz #---------------------------------------------- # x = t # y = LBO1(t) * LBO2(t) math amplitude_mod math _amplitude_mod #---------------------------------------------- # x = LBO1(t) * LBO2(t) # y = LBO3(t) * LBO4(t) math amplitude_mod_xy math _amplitude_mod_xy #---------------------------------------------- # x = LBO1(t) * LBO2(t) # y = LBO3(t) * LBO4(t) # z = LBO5(t) * LBO6(t) math amplitude_mod_xyz math _amplitude_mod_xyz # ~*~ indicates that the frequency # of LBO1 is multiplied by the value of LBO2 #---------------------------------------------- # x = t # y = LBO1(t) ~*~ LBO2(t) math frequency_mod math _frequency_mod #---------------------------------------------- # x = LBO1(t) ~*~ LBO2(t) # y = LBO3(t) ~*~ LBO4(t) math frequency_mod_xy math _frequency_mod_xy #---------------------------------------------- # x = LBO1(t) ~*~ LBO2(t) # y = LBO3(t) ~*~ LBO4(t) # z = LBO5(t) ~*~ LBO6(t) math frequency_mod_xyz math _frequency_mod_xyz # ~+~ indicates that the value of LBO2 # is added to the phase of LBO1 #---------------------------------------------- # x = t # y = LBO1(t) ~+~ LBO2(t) math phase_mod math _phase_mod #---------------------------------------------- # x = LBO1(t) ~+~ LBO2(t) # y = LBO3(t) ~+~ LBO4(t) math phase_mod_xy math _phase_mod_xy #---------------------------------------------- # x = LBO1(t) ~+~ LBO2(t) # y = LBO3(t) ~+~ LBO4(t) # z = LBO5(t) ~+~ LBO6(t) math phase_mod_xyz math _phase_mod_xyz #---------------------------------------------- # x = LBO1(t) * cos(t) # y = LBO1(t) * sin(t) math polar math _polar #---------------------------------------------- # x = (LBO1(t) + LBO2(t)) * cos(t) # y = (LBO1(t) + LBO2(t)) * sin(t) math polar_sum math _polar_sum #---------------------------------------------- # x = (LBO1(t) * LBO2(t)) * cos(t) # y = (LBO1(t) * LBO2(t)) * sin(t) math polar_amplitude_mod math _polar_amplitude_mod #---------------------------------------------- # x = (LBO1(t) ~*~ LBO2(t)) * cos(t) # y = (LBO1(t) ~*~ LBO2(t)) * sin(t) math polar_frequency_mod math _polar_frequency_mod #---------------------------------------------- # x = (LBO1(t) ~+~ LBO2(t)) * cos(t) # y = (LBO1(t) ~+~ LBO2(t)) * sin(t) math polar_phase_mod math _polar_phase_mod ############################################### ###############################################