############################################################################################# # # This file was written by James Lehman. # creator of LaserBoy, # # the free, multiplatform laser display application # that reads this format. # # # Extra Stimulus Inc., Akron, Ohio USA # http://laserboy.org/ # # ASCII format version: LaserBoy-txt-11-07-2020 # ############################################################################################# ############################################################################################# # # Copy the following header for txt files for version: LaserBoy-txt-11-07-2020 # ############################################################################################# # # Any line of text beginning with a hash is a comment and is ignored by LaserBoy. comment_block_start This new ascii math format is not compatible with LaserBoy-txt-07-26-2020. Any version of the LaserBoy application before LaserBoy_2020_27_07 will fail to read it. The current version of the LaserBoy application cannot read the previous ascii math format LaserBoy-txt-07-26-2020. The animated math form structure has been updated to include an initial and a final value for start, duration, and interations, making it possible to animate them through a frame set. There are now definitions for # start duration interations # _start _duration _interations and the frames parameter has been moved to the # form frames line at the top of the form. A block of lines can be set to be ignored using the tags [comment_block_start] to [comment_block_end] on a line by themselves as above and below this block of text lines. This comment block could contain any of the LaserBoy Formatted ASCII text code and it would all be skipped. comment_block_end ############################################################################################# # # Hashed lines with variables' names are included in all of the example math forms, # but they have no meaning to the text renedering function in LaserBoy. # Each named math form is a template of values read and rendered with error reporting. # Look for text_in_errors.txt in the root of the LaserBoy installation directory. # ############################################################################################# comment_block_start LaserBoy reads text files from top to bottom. There are several file scope settings that, when read, are in effect with the value set on that line of text for all math forms that calculate real number vector sets until the same setting is encountered again with a different value. So any of them can be changed at any point in the text file and their values will effect anything that follows them in the file. All of the calculated math forms are done using double precision floating point (real) numbers. So the math curves they generate can be of any magnitude from very small (very near zero) to astronomically huge. It doesn't matter because LaserBoy knows how to determine the hight, depth and width of the vector frames and scale them to fit inside of the LaserBoy frame set viewer, which is signed 16-bit short integers. When LaserBoy sees a math form to calculate, it does so and adds it to a list that it keeps open while the text file is being read. The list is made to contain real number vector frame sets. In code it's called the math_collection. Each calculated frame set is an item in the math_collection list and may contain from one frame to many frames. Each new calculated frame set is added as the last item in math_collection. If LaserBoy sees a cumulative_add, cumulative_scale or cumulative_rotate, it does the math on the last item in the list and saves the result as the new end of the list. If there are two or more items in the list and LaserBoy reads a compound_move, compound_scale, compound_rotate, compound_rgb or compunt_union, it combines the last two vector frame sets in the list. A compound_move add the two vector frame sets vertex to vertex. by adding, multiplying, using the second as a set of rotational angels or as a set of rgb values to modify the previous frame set and adds this new combination to the end of the list. Whatever is currently loaded in the LaserBoy frame set (the running application) before opening a text file can be imported in and added to the list. The text command that imports the current frame set takes a real number to size the frames so it can be relative to the size of the other figures being calculated in the file. A factor of 1.0 puts the LaserBoy frame set into unit space from -1.0 to +1.0 on all three axis. Any number can be used to set the size of the imported frame set. Since so many of the math forms are circular in nature, this size factor acts like a radius value of the space to which the frame set will be scaled. Any of the calculated vector frame sets in the list can be saved to a directory of numbered dxf files and a directory of dxf files can be imported and added to the list for further calculations. The dxf file format is capable of saving vector data in real numbers and no rescaling is done when saving or importing them into the math rendering environment (the text file as it is read by LaserBoy). Directories full of dxf files stored as real numbers can also be opened directly into the LaserBoy application frame set and when they are they are automatically scaled to fit inside of signed short integer space. It is also possible to save the last item in the list as a LaserBoy Formatted ASCII Text file (as real numbers without scaling) and to import the same formatted text files back into the math rendering environment to be added as the last item in math_collection. In general there are singular math forms and plural math forms. A single math form generates a single vector frame. A plural math form generates a vector frame set with an initial frame, a final frame and all of the frames in between by linear interpolation of any or all of the parameters of the form. There are also singular and plural forms of the cumulative effects of move, scale and rotate with an initial set of parameters and a final set of parameters. Since math_collection is meant to store math frame sets in the process of being created and modified, possibly in many steps, nothing gets rendered into the LaserBoy frame set, the results that appear after the text file is fully processed, unless a command of render_frames is issued. This can be done in a solid color either by rgb or hex values or indexed or spanned hues. Rendering the last item in math_collection with a color scheme, solid or hues, into the LaserBoy frame set changes the colors of the last item so that it can be saved as a directory of dxf files or a single text file with those colors. It is possible to render_frames with no color model specified and it will render into the LaserBoy frame set as is. So when importing frames from the currently loaded LaserBoy frame set or opening frames from a dxf directory or after applying a compound_rgb, the colors will be intact when rendered back into the active LaserBoy frame set. So, to see what the vector frame set looks like at every stage of its development, place a render_frames (possibly of some color model) after each step that generates another vector frame set added to the end of the list. oscillator position LBO1(t) = LBO1.amplitude * sin(t * LBO1.frequency + LBO1.phase) * e^(-LBO1.damping * t) + LBO1.offset frequency_mod LBO1(t) ~~ LBO2(t) = LBO1.amplitude * sin(t * LBO1.frequency * LBO2(t) + LBO1.phase) * e^(-LBO1.damping * t) + LBO1.offset ​math still_frames (value)      is the introduction to the animated      LaserBoy math forms. It is an integer      number of frames to be added to the      LaserBoy frame set that are all the      same frame as described in a single      frame math form. This is for setting      and holding a single frame for multiple      frames of time. This is a file scope      setting only. It applies to all single      frame forms that follow its definition or redefinition. math still_frames 1      is the default setting; each form 1 frame. math iterations (value)      is the number of calculated vertices in each      form frame. The result is a set of consecutive      vectors. math iterations 100      is the default value.      iterations must also be defined in each math form. If the value in the form is set to -1, iterations is taken from this file scope value.      math frames (value)      is the number of frames to calculate for an      animated math form.      frames must also be defined in each animated      math form. If the value in the form is set to      -1, frames is taken from this file scope value. math frames 3      is the default value (first, middle, last). math normalize_frames_individually 0 Setting this to 0 or 1 controls the rendering of the animated forms into frames. The entire set of frames can be normalized to fit into short integer space or each frame can be normalized to fill the whole space.      In pendulm notation, phase is in      degrees, radians, 0.0 to 1.0.      (value) is what gets used in the math code.      (value) = phase * (two_pi / one_rotation).      (value) is therefor always in radians. math one_rotation  360.0      is the default value.      Text values for phase are in degrees. math one_rotation  6.28318530718 The value of 2pi (literal) puts phase in radians. math one_rotation  1.0 The value of 1.0 puts phase in the range of 0.0 to 1.0 for one full circular rotation (2pi).      duration is orbiting the unit circle (time).      In all of the periodic forms, given the right      values, the end of the curve will join perfectly      with the start. This often takes multiples of 2pi.      (value) is what gets used in the math code.      (value) = duration * (two_pi / one_period).      (value) is therefor always in radians. math one_period  6.28318530718 The value of 2pi (literal)      puts duration in radians. math one_period  1.0      is the default value. 0.0 to 1.0 is one whole      orbit around the unit circle (2pi). Cumulative math is a new feature as of LaserBoy-txt-11-07-2020. #---------------------------------------------- math cumulative_move # X Y Z 0.0 0.0 0.0 # acceleration 0.0 causes the math figure to move from the origin (0, 0, 0) toward position X Y Z. Each vertex in the rendered math form has an offset added to it proportional to its index in the complete ordered set of vertices in the frame. The default value is the origin or no move. The value of acceleration, used in all cumulative math forms, can be a negative value (deceleration) or decreasing rate of change, zero (constant rate of change) or a positive value (acceleration) or increasing rate of change per iteration. The factor is used in an exponential expression of e, written to detect the sign of the number and calculate a proportional effect in the rate of change in either deceleration or acceleration (weird math). #---------------------------------------------- math cumulative_scale # from # X Y Z 1.0 1.0 1.0 # to # X Y Z 1.0 1.0 1.0 # acceleration 0.0 scales each vertex in the math figure progressively between from and to proportional to its index in the complete ordered set of vertices. Values of all 1.0 is the default and indicates no changing scale. #---------------------------------------------- math cumulative_rotate # fulcrum # X Y Z 0.00 0.00 0.00 # rotation * math one_period # X Y Z 0.00 0.00 0.00 # acceleration 0.0 rotates each vertex in the math figure progressively around all three axis on fulcrum by angles X Y Z from zero to proportional to its index in the complete ordered set of vertices in a frame. The following corresponding _cumulative math forms are to be used with the animated math forms. Just as those designate an initial and final form, so too do the _cumulative math effects. These are the final forms of the matching initial forms listed above. #---------------------------------------------- math _cumulative_move # X Y Z 0.0 0.0 0.0 # _acceleration 0.0 #---------------------------------------------- math _cumulative_scale # _from # X Y Z 1.0 1.0 1.0 # _to # X Y Z 1.0 1.0 1.0 # _acceleration 0.0 #---------------------------------------------- math _cumulative_rotate # _fulcrum # X Y Z 0.00 0.00 0.00 # _rotation * math one_period # X Y Z 0.00 0.00 0.00 # _acceleration 0.0 The default values of all of the cumulative math parameters are set to have no effect on the math forms. In other words, cumulative_move is 0.0, cumulative_scale is 1.0, and the angles of cumulative_rotate are all 0.0. Setting any or all of these to anything other than the default values as show above has the effect on any math forms that follow that setting. As with all of the other file scope settings, they can be reset anywhere in the file and the new settings will effect any math forms that follow that. The following tokens are to set the order of the cumulative math effects. The first in the list is the default. math compound_move math compound_scale math compound_rotate # compound_rotate_fulcrum # X Y Z 0.0 0.0 0.0 comment_block_end ############################################################################################# ############################################################################################# math one_rotation 360.0 math one_period 1.0 math iterations 4000 math frames 200 math still_frames 1 math normalize_frames_individually 0 math normalize_frames_with_origin 0 math include_unit_reference 0 #---------------------------------------------- # single frame forms #---------------------------------------------- #---------------------------------------------- # https://en.wikipedia.org/wiki/Rhodonea math rhodonea # radius pedals_numerator pedals_denominator 1.0 5.0 7.0 # start duration iterations 0.0 3.5 -1 math color_frames_rgb 255 0 0 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Epicycloid math epicycloid # fixed_radius roller_radius 3.0 13.0 # start duration iterations 0.0 13.0 -1 math color_frames_rgb 255 255 0 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Epitrochoid math epitrochoid # fixed_radius roller_radius roller_offset 3.0 4.0 6.0 # start duration iterations 0.0 4.0 -1 math color_frames_rgb 255 0 127 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypocycloid math hypocycloid # fixed_radius roller_radius 12.0 5.0 # start duration iterations 0.0 5.0 -1 math color_frames_rgb 0 255 255 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypotrochoid math hypotrochoid # fixed_radius roller_radius roller_offset 12.0 5.0 15.0 # start duration iterations 0.0 5.0 -1 math color_frames_rgb 127 0 127 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Lissajous_curve math lissajou # oscillator X sin # amplitude frequency phase dyty_cycle 1.0 1.0 90.0 0.5 # oscillator Y sin # amplitude frequency phase dyty_cycle 1.0 1.0 0.00 0.5 # duration iterations 1.0 -1 math color_frames_rgb 0 0 255 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Lissajous_curve math lissajou_xyz # oscillator X sin # amplitude frequency phase dyty_cycle 1.0 2.0 0.0 0.5 # oscillator Y sin # amplitude frequency phase dyty_cycle 1.0 5.0 180.0 0.5 # oscillator Z sin # amplitude frequency phase dyty_cycle 1.0 5.0 180.0 0.5 # duration iterations 1.0 -1 math color_frames_rgb 0 128 255 math render_frames #---------------------------------------------- math oscillator # x(t) = t # y(t) = LBO1(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping 1.0 1.0 0.0 0.5 0.0 # duration iterations 1.0 -1 math color_frames_rgb 255 255 255 math render_frames #---------------------------------------------- math oscillator_sum # x(t) = t # y(t) = LBO1(t) + LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping 1.0 1.0 0.0 0.5 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping 0.5 10.0 0.0 0.5 0.0 # duration iterations 1.0 -1 math color_frames_rgb 0 255 0 math render_frames #---------------------------------------------- math oscillator_xy # x(t) = LBO1(t) # y(t) = LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 2.05 120.0 0.5 0.02 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 12.0 0.5 0.01 0.0 # duration iterations 17.0 -1 math color_frames_rgb 0 0 255 math render_frames #---------------------------------------------- math oscillator_xyz # x(t) = LBO1(t) # y(t) = LBO2(t) # z(t) = LBO3(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 30.1 0.0 0.5 0.22 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 20.0 120.0 0.5 0.05 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 40.3 0.0 0.5 0.3 0.0 # duration iterations 1.0 -1 math color_frames_rgb 128 0 128 math render_frames #---------------------------------------------- math harmonograph # https://en.wikipedia.org/wiki/Harmonograph # x(t) = LBO1(t) + LBO2(t) # y(t) = LBO3(t) + LBO4(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 7.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.05 90.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 7.2 0.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.05 0.0 0.5 0.0 0.0 # duration iterations 20.0 -1 math color_frames_rgb 255 0 0 math render_frames #---------------------------------------------- math harmonograph_xyz # https://en.wikipedia.org/wiki/Harmonograph # x(t) = LBO1(t) + LBO2(t) # y(t) = LBO3(t) + LBO4(t) # z(t) = LBO5(t) + LBO6(t) # amplitude frequency phase damping offset # X # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 6.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.05 90.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 6.1 0.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.05 0.0 0.5 0.0 0.0 # oscillator LBO5 sin # amplitude frequency phase duty_cycle damping offset 1.0 6.0 0.0 0.5 0.0 0.0 # oscillator LBO6 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.10 0.0 0.5 0.0 0.0 # duration iterations 20.0 -1 math color_frames_rgb 127 255 0 math render_frames #---------------------------------------------- math amplitude_mod # x(t) = t # y(t) = LBO1(t) * LBO2(t) # amplitude frequency phase damping offset # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 100.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 0.0 0.5 0.0 1.0 # duration iterations 1.0 -1 math color_frames_rgb 255 255 0 math render_frames #---------------------------------------------- math amplitude_mod_xy # x(t) = LBO1(t) * LBO2(t) # y(t) = LBO3(t) * LBO4(t) # amplitude frequency phase damping offset # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 60.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 0.0 0.5 0.0 1.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 60.0 90.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 90.0 0.5 0.0 1.0 # duration iterations 1.0 -1 math color_frames_rgb 255 255 0 math render_frames #---------------------------------------------- math amplitude_mod_xyz # x(t) = LBO1(t) * LBO2(t) # y(t) = LBO3(t) * LBO4(t) # z(t) = LBO5(t) * LBO6(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 50.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 50.3 0.0 0.5 0.0 0.70 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 50.0 60.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 1.0 50.7 90.0 0.5 0.0 0.70 # oscillator LBO5 sin # amplitude frequency phase duty_cycle damping offset 1.0 50.0 90.0 0.5 0.0 0.0 # oscillator LBO6 sin # amplitude frequency phase duty_cycle damping offset 1.0 50.9 0.0 0.5 0.0 0.70 # duration iterations 0.5 -1 math color_frames_rgb 200 0 127 math render_frames #---------------------------------------------- math frequency_mod # x(t) = t # y(t) = LBO1(t) ~~ LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 10.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.50 1.0 0.0 0.5 0.0 2.0 # duration iterations 1.0 -1 math color_frames_rgb 255 255 0 math render_frames #---------------------------------------------- math frequency_mod_xy # x(t) = LBO1(t) ~~ LBO2(t) # y(t) = LBO3(t) ~~ LBO4(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 3.0 0.0 0.5 0.0 3.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.20 13.0 0.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 2.0 90.0 0.5 0.0 3.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 0.20 13.0 90.0 0.5 0.0 0.0 # duration iterations 1.1 -1 math color_frames_rgb 255 200 0 math render_frames #---------------------------------------------- math frequency_mod_xyz # x(t) = LBO1(t) ~~ LBO2(t) # y(t) = LBO3(t) ~~ LBO4(t) # z(t) = LBO5(t) ~~ LBO6(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 0.10 0.0 0.5 0.0 3.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.20 20.0 0.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 0.10 180.0 0.5 0.0 3.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 0.20 20.7 00.0 0.5 0.0 0.0 # oscillator LBO5 sin # amplitude frequency phase duty_cycle damping offset 1.0 0.10 180.0 0.5 0.0 3.0 # oscillator LBO6 sin # amplitude frequency phase duty_cycle damping offset 0.20 21.40 0.0 0.5 0.0 0.0 # duration iterations 2.0 -1 math color_frames_rgb 255 255 0 math render_frames #---------------------------------------------- # animated frames forms #---------------------------------------------- # Animated math forms are like the single # image forms except the define an initial # and a final set of parameters. #---------------------------------------------- # https://en.wikipedia.org/wiki/Rhodonea # form frames math rhodoneas -1 # radius pedals_numerator pedals_denominator 1.0 7.5 8.0 # start duration iterations 0.0 16.0 -1 # _radius _pedals_numerator _pedals_denominator 1.0 8.5 8.0 # _start _duration _iterations 0.0 16.0 -1 math color_frames_rgb 255 255 255 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Epicycloid # form frames math epicycloids -1 # fixed_radius roller_radius 6.95 12.0 # start duration iterations 0.0 36.0 -1 # _fixed_radius _roller_radius 7.0 12.0 # _start _duration _iterations 0.0 36.0 -1 math color_frames_rgb 255 0 127 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Epitrochoid # form frames math epitrochoids -1 # fixed_radius roller_radius roller_offset 5.0 1.0 -11.0 # start duration iterations 0.10 1.0 -1 # _fixed_radius _roller_radius _roller_offset 5.0 1.0 11.0 # _start _duration _iterations 0.10 1.0 -1 math color_frames_rgb 127 0 255 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypocycloid # form frames math hypocycloids -1 # fixed_radius roller_radius 30.0 20.0 # start duration iterations 0.25 22.0 -1 # _fixed_radius _roller_radius 30.0 19.7 # _start _duration _iterations 0.25 22.0 -1 math color_frames_rgb 255 255 0 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Hypotrochoid # form frames math hypotrochoids -1 # fixed_radius roller_radius roller_offset 6.4 13.0 11.0 # start duration iterations 0.25 26.0 -1 # _fixed_radius _roller_radius _roller_offset 6.6 13.0 11.0 # _start _duration _iterations 0.25 26.0 -1 math color_frames_rgb 127 255 127 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Lissajous_curve # form frames math lissajous -1 # oscillator X sin # amplitude frequency phase duty_cycle 1.0 5.0 0.0 0.5 # oscillator Y sin # amplitude frequency phase duty_cycle 1.0 7.0 0.0 0.5 # duration iterations 6.0 -1 # oscillator X sin # amplitude frequency phase duty_cycle 1.0 5.0 0.0 0.5 # oscillator Y sin # amplitude frequency phase duty_cycle 1.0 7.03 180.0 0.5 # _duration _iterations 6.0 -1 math color_frames_rgb 63 63 255 math render_frames #---------------------------------------------- # https://en.wikipedia.org/wiki/Lissajous_curve # form frames math lissajous_xyz -1 # oscillator X sin # amplitude frequency phase duty_cycle 1.0 11.0 0.0 0.5 # oscillator Y sin # amplitude frequency phase duty_cycle 1.0 7.0 0.0 0.5 # oscillator Z sin # amplitude frequency phase duty_cycle 1.0 5.0 0.0 0.5 # duration iterations 6.0 -1 # oscillator X sin # amplitude frequency phase duty_cycle 1.0 5.0 0.0 0.5 # oscillator Y sin # amplitude frequency phase duty_cycle 1.0 7.03 180.0 0.5 # oscillator Z sin # amplitude frequency phase duty_cycle 1.0 11.05 270.0 0.5 # _duration _iterations 6.0 -1 math color_frames_rgb 255 63 128 math render_frames #---------------------------------------------- # form frames math oscillators -1 # x(t) = t # y(t) = LBO1(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping 3.14 1.0 0.0 0.5 1.0 # duration iterations 1.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping 3.14 30.0 0.0 0.5 1.0 # _duration _iterations 1.0 -1 math color_frames_rgb 255 127 0 math render_frames #---------------------------------------------- # form frames math oscillators_sum -1 # x(t) = t # y(t) = LBO1(t) + LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.5 1.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.0 33.0 0.0 0.5 0.0 0.0 # duration iterations 1.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.5 3.3 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.5 33.0 0.0 0.5 0.0 0.0 # _duration _iterations 1.0 -1 math color_frames_rgb 255 127 0 math render_frames #---------------------------------------------- # form frames math oscillators_xy -1 # x(t) = LBO1(t) # y(t) = LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 3.0 0.0 0.5 0.0007 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 5.011 180.0 0.5 0.0007 0.0 # duration iterations 15.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 3.0 0.0 0.5 0.06 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 5.0 0.0 0.5 0.06 0.0 # _duration _iterations 15.0 -1 math color_frames_rgb 0 255 255 math render_frames #---------------------------------------------- # form frames math oscillators_xyz -1 # x(t) = LBO1(t) # y(t) = LBO2(t) # z(t) = LBO3(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 3.0 0.0 0.5 0.005 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 4.0 90.0 0.5 0.005 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 10.0 0.0 0.5 0.005 0.0 # duration iterations 12.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 3.0 0.0 0.5 0.01 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 4.02 110.0 0.5 0.015 0.0 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 10.0 0.0 0.5 0.01 0.0 # _duration _iterations 12.0 -1 math color_frames_rgb 128 0 128 math render_frames #---------------------------------------------- # form frames math harmonographs -1 # https://en.wikipedia.org/wiki/Harmonograph # x(t) = LBO1(t) + LBO2(t) # y(t) = LBO3(t) + LBO4(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.5 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.13 0.05 90.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.5 90.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 1.13 0.05 0.0 0.5 0.0 0.0 # duration iterations 40.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.5 0.0 0.5 0.024 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.13 0.05 90.0 0.5 0.02 0.0 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.5 90.0 0.5 0.024 0.0 # oscillator LBO4 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.13 0.05 0.0 0.5 0.02 0.0 # _duration _iterations 40.0 -1 math color_frames_rgb 255 0 0 math render_frames #---------------------------------------------- # form frames math harmonographs_xyz -1 # x(t) = LBO1(t) + LBO2(t) # y(t) = LBO3(t) + LBO4(t) # z(t) = LBO5(t) + LBO6(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 6.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.05 90.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 6.1 0.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.05 0.0 0.5 0.0 0.0 # oscillator LBO5 sin # amplitude frequency phase duty_cycle damping offset 1.0 6.0 0.0 0.5 0.0 0.0 # oscillator LBO6 sin # amplitude frequency phase duty_cycle damping offset 2.1 0.10 0.0 0.5 0.0 0.0 # duration iterations 20.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 6.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 2.1 0.05 90.0 0.5 0.0 0.0 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 6.25 0.0 0.5 0.0 0.0 # oscillator LBO4 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 2.1 0.05 0.0 0.5 0.0 0.0 # oscillator LBO5 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 6.0 0.0 0.5 0.0 0.0 # oscillator LBO6 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 2.1 0.10 0.0 0.5 0.0 0.0 # _duration _iterations 20.0 -1 math color_frames_rgb 127 255 0 math render_frames #---------------------------------------------- # form frames math amplitude_mods -1 # x(t) = t # y(t) = LBO1(t) * LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 20.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 0.0 0.5 0.0 1.0 # duration iterations 2.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 20.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.0 180.0 0.5 0.0 1.0 # _duration _iterations 2.0 -1 math color_frames_rgb 0 200 0 math render_frames #---------------------------------------------- # form frames math amplitude_mods_xy -1 # x(t) = LBO1(t) * LBO2(t) # y(t) = LBO3(t) * LBO4(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 60.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 0.0 0.5 0.0 1.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 60.0 90.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 90.0 0.5 0.0 1.0 # duration iterations 1.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 60.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.0 0.0 0.5 0.0 1.0 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 60.0 270.0 0.5 0.0 0.0 # oscillator LBO4 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.0 90.0 0.5 0.0 1.0 # _duration _iterations 1.0 -1 math color_frames_rgb 0 127 255 math render_frames #---------------------------------------------- # form frames math amplitude_mods_xyz -1 # x(t) = LBO1(t) * LBO2(t) # y(t) = LBO3(t) * LBO4(t) # z(t) = LBO5(t) * LBO6(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 70.0 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 1.0 70.4 70.0 0.5 0.0 0.350 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 70.0 60.0 0.5 0.0 0.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 1.0 70.6 90.0 0.5 0.0 0.350 # oscillator LBO5 sin # amplitude frequency phase duty_cycle damping offset 1.0 70.0 90.0 0.5 0.0 0.0 # oscillator LBO6 sin # amplitude frequency phase duty_cycle damping offset 1.0 70.8 0.0 0.5 0.0 0.350 # duration iterations 0.15 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 70.0 90.0 0.5 0.0 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 71.2 20.0 0.5 0.0 0.650 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 70.0 100.0 0.5 0.0 0.0 # oscillator LBO4 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 72.6 90.0 0.5 0.0 0.650 # oscillator LBO5 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 70.0 200.0 0.5 0.0 0.0 # oscillator LBO6 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 73.3 0.0 0.5 0.0 0.650 # _duration _iterations 0.15 -1 math color_frames_rgb 200 0 127 math render_frames #---------------------------------------------- # form frames math frequency_mods -1 # x(t) = t # y(t) = LBO1(t) ~~ LBO2(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 3.0 0.3 0.0 0.5 0.0 0.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.350 3.0 0.0 0.5 0.0 2.0 # duration iterations 2.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 3.0 0.3 180.0 0.5 0.0 0.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 0.350 3.3 0.0 0.5 0.0 2.0 # _duration _iterations 2.0 -1 math color_frames_rgb 0 160 0 math render_frames #---------------------------------------------- # form frames math frequency_mods_xy -1 # x(t) = LBO1(t) ~~ LBO2(t) # y(t) = LBO3(t) ~~ LBO4(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 0.0 0.5 0.0 3.1 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.20 7.0 0.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 1.0 0.0 0.5 0.0 3.1 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 0.20 7.0 90.0 0.5 0.0 0.0 # duration iterations 1.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.0 360.0 0.5 0.0 3.1 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 0.20 7.0 0.0 0.5 0.0 0.0 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 1.0 360.0 0.5 0.0 3.1 # oscillator LBO4 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 0.20 7.0 90.0 0.5 0.0 0.0 # _duration _iterations 1.0 -1 math color_frames_rgb 255 255 255 math render_frames #---------------------------------------------- # form frames math frequency_mods_xyz -1 # x(t) = LBO1(t) ~~ LBO2(t) # y(t) = LBO3(t) ~~ LBO4(t) # z(t) = LBO5(t) ~~ LBO6(t) # oscillator LBO1 sin # amplitude frequency phase duty_cycle damping offset 1.0 0.10 0.0 0.5 0.0 3.0 # oscillator LBO2 sin # amplitude frequency phase duty_cycle damping offset 0.20 20.0 0.0 0.5 0.0 0.0 # oscillator LBO3 sin # amplitude frequency phase duty_cycle damping offset 1.0 0.10 180.0 0.5 0.0 3.0 # oscillator LBO4 sin # amplitude frequency phase duty_cycle damping offset 0.20 20.7 00.0 0.5 0.0 0.0 # oscillator LBO5 sin # amplitude frequency phase duty_cycle damping offset 1.0 0.10 180.0 0.5 0.0 3.0 # oscillator LBO6 sin # amplitude frequency phase duty_cycle damping offset 0.20 21.4 00.0 0.5 0.0 0.0 # duration iterations 2.0 -1 # oscillator LBO1 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 0.10 0.0 0.5 0.0 3.0 # oscillator LBO2 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 0.20 20.0 0.0 0.5 0.0 0.0 # oscillator LBO3 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 0.10 180.0 0.5 0.0 3.0 # oscillator LBO4 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 0.20 20.7 360.0 0.5 0.0 0.0 # oscillator LBO5 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 1.0 0.10 180.0 0.5 0.0 3.0 # oscillator LBO6 sin # _amplitude _frequency _phase _duty_cycle _damping _offset 0.20 21.4 360.0 0.5 0.0 0.0 # _duration _iterations 2.0 -1 math color_frames_rgb 255 255 0 math render_frames ############################################### ###############################################