Content
- Creating a Basic Pattern
- Sequence of Cells
- Initial Gradients
- Boundary Conditions
- Maximum Radius and Grid Size
- Propagator
- Testing
- Creating a Text Pattern
- Ciphering
1. Creating a Basic Pattern
Be sure that the pattern manager is open. In the list on the left
side select the the basic folder with the mouse. Then right click
with the mouse on this folder and select new. Now you can replace
the new entry in the name field with a new pattern name.
1.1 Sequence of Cells
Every mirroring circle can be thought of as residing in the middle
of grid cell. To define the sequence of reflection points insert the
coordinate of the appropriate grid cell into the cell column of the
sequence table. The following example shows the cell coordinates for
a 3x3 grid:
-------------------------
| (0,2) | (1,2) | (2,2) |
-------------------------
| (0,1) | (1,1) | (2,1) |
-------------------------
| (0,0) | (1,0) | (2,0) |
-------------------------
A simple star is defined by the following sequence of cell coordinates:
| Cell | Gradient |
---|-------|-----------|
1 | (2,1) | |
---|-------|-----------|
2 | (1,1) | |
---|-------|-----------|
3 | (1,2) | |
It is important that the sequence is minimal. It must not contain any
symmetry axis. The following definition of a star is therefore not allowed:
| Cell | Gradient |
---|-------|-----------|
1 | (2,1) | |
---|-------|-----------|
2 | (1,1) | |
---|-------|-----------|
3 | (1,2) | |
---|-------|-----------|
4 | (1,1) | |
---|-------|-----------|
5 | (0,1) | |
Here the algorithm for calculating the reflection points gets into trouble
on cell 3 because the gradient is not bound anymore.
A context menu offering operations to simplify the making of larger patterns
becomes available after right clicking with the mouse on the table.
1.2 Initial Gradients
To compute the pattern further information is needed. In the gradient column
you provide an estimation where the reflection point is expected to be.
This is done by inserting the gradient of the line that connects the middle
of the circle and the reflection point. For the angle phi and the gradient m
of this connecting line the following relation holds:
tan phi = m
The following illustration shows some lines and their values for phi and m:
phi=90,m=inf phi=63.4,m=2 phi=45,m=1 phi=26.6 m=0.5
. . . .
y . . .
. . . .
. . .
. . . .
. . .
2 ... . . .
. . .
................................................ phi=0,m=0
(0,0) : x
2
The unit of phi is degrees. The gradient m changes sign if the line is
mirrored at the x-axis. The image shows that a line with m1=10 does not
differ much from a line with m2=100 while the difference between m1=0 and
m2=0.3 is much greater.
The star example would work out to:
| Cell | Gradient |
---|-------|-----------|
1 | (2,1) | 0 |
---|-------|-----------|
2 | (1,1) | 0.5 |
---|-------|-----------|
3 | (1,2) | 1 |
A good gradient estimation lies much closer to the real gradient than to
the orthogonal one. It is possible to use inf as an estimation for a high
gradient value. Gradient estimations can be fine tuned by analyzing the
angle differences between initial and computed gradients as they are
displayed by the log window (Menu: Util->Logs).
1.3 Boundary conditions
The boundary conditions define the special situation for the first and the
last reflection point. There are two main types of boundary conditions:
POINT and GRADIENT.
If you select POINT as the fist boundary value type than
the initial gradient of the first cell must be one of -1,0,1 or inf. The
gradient does not fix the reflection point entirely. If we start for phi = 0
and go counterclockwise around the circle there is the possibility to chose
between the first and second point. Use the boundary value selector now to
make the right choice. For the second boundary condition and the last circle
the situation is exactly the same.
Otherwise if you select GRADIENT
(LEFT or RIGHT) as the first boundary value type then you fix the gradient
of the ray that hits the first reflection point (the reflection of this ray
than goes on to the second reflection point and so on). With the first
boundary value selector you therefore select one of the gradients -1,0,1.
To determine whether GRADIENT LEFT or GRADIENT RIGHT should be taken traverse
through the sequence of reflection points and observe the movement with
respect to the x-axis while you go through the boundary ray: If you move
in negative direction chose GRADIENT LEFT. For positive direction chose
GRADIENT RIGHT. For the second boundary condition the situation is the same:
Here you fix the gradient of the ray that moves away from the last reflection
point.
1.4 Maximum Radius and Grid Size
The maximum radius for which the pattern is still visible has to be
determined experimentally. The best is to start the pattern definition
with a max. radius of 100% meaning that all radiuses are allowed. If your
pattern is visible for a certain range of radiuses 10%,20%,...,X% and
not visible for radiuses X+10%,... then you can insert X as the maximum
radius.This is of course just a rough estimation for the real maximum
radius which is an irrational number in most cases. Note: A bad set of
initial gradients might cause a lower maximum radius than would be possible
according to the geometry of the pattern.
The grid size has to be given in the form mxm, m >=2 (2x2,3x3,...).
1.5 Propagator
Propagator patterns are not bound to the grid of mirroring circles. The
ray starts and ends outside the grid. For propagators the sequence of
cells in the sequence table starts outside and ends inside the grid. The
following example shows the definition of a garland pattern on a 30x30 grid:
| Cell | Gradient |
---|--------|-----------|
1 | (30,0) | inf |
---|--------|-----------|
2 | (29,1) | -0.3 |
---|--------|-----------|
3 | (30,1) | 0.3 |
---|--------|-----------|
4 | (29,0) | inf |
The first cell lies outside as the grid cells are given by (x,y) 0<=x,y<=29.
To see other examples take a look at the following patterns: Garland 1-3,
Honeycomb,Patchwork and Dragon Skin. The rotation of the circle grid is
determined by traversing backwards through the cell sequence and locating
the first ray that connects an inner and an outer cell. The rotation then
makes this ray horizontal starting from the right side.
1.6 Testing
Press the calculate button to compute the pattern. Go through the following
list if you don't see the pattern that you expected from your pattern
definition:
- No pattern is shown for all radiuses r=10%,...,90%.
Check the boundary values,cell sequence and the initial gradients for
correctness. Most likely one of the initial gradients is wrong.
- You see only a part of the pattern for some radius.
Check the initial gradients for correct sign or value.
- The pattern is visible only for some radiuses <= max. radius but not
all.
Some of the initial gradients need to be fine tuned. Go to the menu of
the main window and open Util -> Logs. Here you see a list of all
computed gradients. The delta column shows the difference between
computed and initial gradients in degrees. Analyzing the deltas for
two radiuses for which the pattern is visible gives a feeling of how
the gradients change.
2 Creating a Text Pattern
Select the pattern folder named Text with the mouse and create a new
pattern by right clicking on this folder and selecting new from the
drop down list. Open the Character Map via the menu of the main window
(Util -> Symbols of Light). It shows how a sequence of characters that has
been entered in the text field of the pattern manager is written onto
the mirroring circles after you have pressed the calculate button.
The estimate button shows how much digits and time a computation of a
light text really needs. Any radius value between 10% and 70% of the half
side length of a grid cell is possible. I recommend to use values around
40% for best readability of the light symbols. For a pattern that needs a
lot of computation time there is the possibility to store the results to
avoid recalculation of the pattern every time it is selected or the calculate
button is pressed: The store calculations check box needs to be selected
before the first calculation is started.
2.1 Ciphering
Due to the very sensible dependence of the light text on the radius it
may be possible to use the application as an encryption system for
small messages. Consider the following scenario:
Persons A and B arranged verbally a radius of sqrt(15)*10 % of the half
side length of a grid cell. The absolute radius value must have exactly
20 digits.
Person A now sends a secret message to B by doing the following steps:
- Create a new text pattern in the pattern manager and enter the
message.
- Set the grid size s via the main menu (Settings -> Grid Size) to
the value shown by the pattern manager.
- Open the calculator via the main menu (Util -> Calculator) and
calculate the percent value rp = sqrt(15)*10. The radius can be
calculated by the formula r = (rp/100) * 2/(2*s). The 2 in the
numerator is the side length of the box containing the circle
lattice and division by 2*s gives the maximum radius (100%). Keep
the first twenty digits of the calculated radius r and delete all
others.
- Open the variables window via the main menu (Settings -> Variables).
Switch off truncation in the options menu and copy and paste the
calculated radius r to the radius field. Press enter on that field.
- At the pattern manager press the calculate button and wait until
the progress window for the calculation disappears.
- Now you should see your message appearing in the main window as a
sequence of light characters. Copy and paste height and angle from
the variables window into an email. If you copy with double clicking
on the number and pressing ctrl-c (fastest way) check if the minus
sign of the angle don't get lost. Also add the grid size. The
secret message containing these three numbers is now ready for
sending.
Be sure that the radius you set in step c) does not exceed the current
precision. Otherwise you have to recalculate and set it again after the
precision change that occurs at step e).
Person B reads the received secret message by doing the following steps:
- Set the grid size s to the given value in the message.
- Open the variables window. Switch off truncation in the menu of
this window and copy and paste the value for height from the
message into the appropriate field without pressing enter.
- Select the height field and look at the message at the bottom
showing the total number of digits d0. Adjust the precision p
of the application so that p >= d0.
- Copy and paste the height again (if precision has changed) and
press enter on that field. Copy and paste the angle into the
Variables window and press enter. Set the distance to 1.5 and
press enter.
- Do step c) of the steps described for sender A and copy and
paste the calculated radius to the radius field in the variables
window and press enter on this field. The secret message should
now appear as a sequence of light characters.
- Open the character map via the main menu (Util -> Symbols of Light)
and translate the message.