App-GUI-Harmonograph
view release on metacpan or search on metacpan
lib/App/GUI/Harmonograph.pm view on Meta::CPAN
=for HTML <p>
<img src="https://raw.githubusercontent.com/lichtkind/App-GUI-Harmonograph/main/examples/POD/Tab_Pendulum.png" alt="" width="85%" height="85%">
</p>
Each of the first three tabs contains the settings of two pendula.
The first tab holds the lateral or linear pendula: X (left right movement)
and Y (up and down). The second tab shows settings of the epicycle pendula
E (left right) and F (up down). They also just move in x or y direction,
but they swing not around the center of the image but around the point,
where the pencil would have been. The third tab allows you to tweak
the pendula W (wobble) and R (rotation). W moves the center of the paper
beneath the pencil in a rotating manner whereas R rotates the paper
around its center. Each of these 6 pendula have the exact same settings
which behave all the same, except radius of R, which works as a zoom.
In the left upper corner of each pendulum settings is a checkbox to
activate or deactivate the pendulum - good to see the pendulums part
in the pen movement. The rest is organized in 8 rows, which can be divided
into 3 parts. Row 1 - 4 are about the pendulum frequency in Hertz.
Row five allows you set the starting point (offset) and the last 3 rows
are about the radius or amplitude of the pendulum mirroring the rows
1, 3 and 4 because the work exactly the same way just not for the
frequency but the radius parameter.
Row one sets the whole number part of the frequency. This is the part you
need to generate to generate the famous images which are based on integer
rations. You can either use the slider the + an - buttons or insert a
number into the text field (which is true off all slider combo widgets).
Behind the slider combo in row one is a drop down menu which lets you
choose a natural constant like Pi or Phi. It gets multiplied with the
frequency. This allows you to explore the nature of these famous constants.
Among the constants are also the natural numbers 1, 2 and 3 in case you
need to crank up the frequency up to 300.
The second row enables you to set values with three decimals. If you for
instance choose a base frequency of 5 and dial in 15 in the second row,
the actual frequency will be 5.015 times the natural constant. Behind the
slider are two checkboxes. One to additionally invert (1/x) the frequency
value and one to flip the pendulum direction (f = -f).
The third row lets you dial in a damping value which makes the pendulum
each round slower (bigger value -> more damping). Behind it is a selector.
If its on minus the damping will be same each round but set on "*" the
damping will be proportional to the frequency. Still behind it is a
checkbox. When selected the frequency is allowed to become negative by
damping.
The fourth row is about daming acceleration or with other words, how much
the damping changes from dot to dot. Beside the c value you have
this time four types of acceleration. Minus and times work as before
and plus and divided by are just their opposite.
The fifth row has a slider that sets the starting position of the
pendulum along its expected track. If the slider is on max you move
the pendulum a quater rotation ahead. To add another quarter check the
box left beside it. The last box adds another half rotation. This allows
you to flip or mirror the image in meaningful ways.
The sixth row mirrors the first but with 2 distinctions. Its not about
integer values but percentage values of the original pendulum length.
This length will be calculated by the program for opimal display.
Thi slider helps you only to change the proportions of the amplitude
towards the other pendula. Natural constants are also here available as
a factor and behind the on the most right is a button to reset the
radius to 100 percent.
The seventh row is the amplitude size, which simple allows to make the
picture larger or smaller depending if the pendulum left the frame or
doesn't move enough. As with reqency, also the amplitude can be damped
over time and this damping can accelerated.
Row eight and nine are exact copies of row three and four, they just
affect the radius / amplitude.
=head2 Functions
=for HTML <p>
<img src="https://raw.githubusercontent.com/lichtkind/App-GUI-Harmonograph/main/examples/POD/Tab_Functions.png" alt="" width="85%" height="85%">
</p>
This tab lets you meddle with the equations that compute the mechanics
of a pendulum. Because all ten rows are built the same I will explain only
one. For instance the X pendulum has only influence on the x coordinate
of a dot, it is computed: C<x = radius * cos (time)>. The first selector
allows you to swap out the cosine function. Instead you could get sine,
tangent, cotangent, secant, cosekcant and the hyperbolic twin of the
already mentioned functions.
The second selector has five options: "= + - * /". If you choose the
first (equal sign) your time variable will be just swapped out with another
variable. The other four option describe the operation that will be applied
upon you time value. So e.g. if you select plus the resulting formula
will be C<x = radius * cos (time + (...))>. The dots allude to whatever
you will choose with the next three selectors.
Selector three and four are just factors. They contain natural numbers
and natural constants you can multiply the variable with. And last not
least selector five holds the variables time frequency and radus/amplitude
of each pendulum. This allows you for instance add the (always) current
pendulum frequency of pendulum W to the time value of Pendulum X resulting
in unpredictable shapes. There is lot to explore.
Pendulum W affects the x and y coordinate, hence it has two rows for each
case. Even more special is "Pendulum" R - the rotation movement of the paper.
This is computed by an ordinary 2 x 2 rotation matrix (we are in 2D).
Each cell of this matrix has here its own row. Its R_11, R_12, R_21, R_22.
But if you not sure just hover with the mouse and get the hints.
The very last row is different and contains only one switch that will
determine if W or R pendulum is applied first. Default and what is also
more comprehensible is that R is apllied first. But the arstist in you
might can choose here differently.
=head2 Visual Settings
=for HTML <p>
<img src="https://raw.githubusercontent.com/lichtkind/App-GUI-Harmonograph/main/examples/POD/Tab_Visuals.png" alt="" width="85%" height="85%">
</p>
Due to the section headins, this tab is self explanatory. First choos if
you want to paint dots or connect them. Please not that pen thickness of
one is very thin and you might not see any dots in that setting. The pen
style is more of an gimmick. Most useful are solid and dotted lines.
The dot density allows you to juggle two extremes. Low density makes for
( run in 1.364 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )