SF (FX-603P)
Table of Contents
Description #
Calculates the Superformula for any angle Φ from Φ = 0 degree to Φ = 359 degrees.
\begin{equation} r(\phi) = \frac{1}{ \sqrt[n₁]{ \left| \frac{ \cos \left(\frac{m \phi}{4} \right) }{a} \right|^{n₂} + \left| \frac{ \sin \left(\frac{m \phi}{4} \right) }{b} \right|^{n₃} } } \end{equation}
| Variable | Effect |
|---|---|
| m | edges of shape |
| n₁ | resizes the spikes of the shape |
| n₂ | defines shape |
| n₃ | defines shape |
| a | resize cos aspect of shape |
| b | resize sin aspect of shape |
| Φ | angle from 0 … 360 (0 … 2π) |
| r | resulting distance from orgin |
Note: If A and B are different then the shape might not form a closed loop.
Sample input #
Circle #
Using these values the Superformula should give a figure looking like a circle: \(a=1;\ b=1;\ n_1=2;\ n_2=2;\ n_3=2;\ m=2 \).
How the code works #
For quick input the values for n₁, n₂, n₃ and m are pre-set with value 2 but can instead be overwritten if different.
Then in P0 the angle is set to 0 degree and is incremented by 1 at the ending
of the program.
To obtain a full circle the Memory Register 06 (MR06) is set to the end
value “359”. (In run mode MR06 is actually to enter to recall the memory
register for register 06.)
Sample output #
The program generated coordinate pairs, as pasted and copied out of the printer simulation:
+X= +Y=
1.0000 0.0000
1.0000 0.0175
0.9994 0.0349
0.9986 0.0523
0.9976 0.0698
…
0.0698 0.9976
0.0523 0.9986
0.0349 0.9994
0.0175 1.0000
0.0000 1.0000
-0.0175 1.0000
-0.0349 0.9994
-0.0523 0.9986
-0.0698 0.9976
-0.0872 0.9962
…
-0.9976 0.0698
-0.9986 0.0523
-0.9994 0.0349
-1.0000 0.0175
-1.0000 0.0000
-1.0000 -0.0175
-0.9994 -0.0349
-0.9986 -0.0523
-0.9976 -0.0698
-0.9962 -0.0872
…
-0.0872 -0.9962
-0.0698 -0.9976
-0.0523 -0.9986
-0.0349 -0.9994
-0.0175 -1.0000
0.0000 -1.0000
0.0175 -1.0000
0.0349 -0.9994
0.0523 -0.9986
0.0698 -0.9976
…
0.9945 -0.1045
0.9962 -0.0872
0.9976 -0.0698
0.9986 -0.0523
0.9994 -0.0349
1.0000 -0.0175
End.
Note: Values are rounded to 4 digits.
Interpretation #
Here the angle Φ runs through a full rotation if register MR06 is set to the
value 360.
Program #
The program file contains the one programs P0 that looks like this:
All Program List
P0
MAC 0 Min0F 360 Min06 "N1?" 2 HLT
Min01 "N2?" 2 HLT
Min02 "N3?" 2 HLT
Min03 "M?" 2 HLT
Min04 1 Min08 1 Min09 "+X= +Y=" PRT FEXE
LBL0 MR0F * MR04 / 4 = Min05 COS / MR08
= ABS X^Y MR02 = Min07 MR05 SIN / MR09 =
ABS X^Y MR03 = M+07 MR07 X^(1/Y) MR01
1/X P>R MR0F = FIX4 " #" X<>Y FIX4 "; #"
PRT FEXE
1 M+0F MR06 X=F GOTO1
GOTO0
LBL1 "End." PRT FEXE
END
Download SF3.pt
Memory registers #
While using the same variable names as in the Wikipedia article, the memory registers are set as follows:
| Memory | Content |
|---|---|
| M01 | n₁ |
| M02 | n₂ |
| M03 | n₃ |
| M04 | m |
| M05 | \( \frac{m \phi}{4} \) |
| M06 | 360 |
| M07 | r |
| M08 | a |
| M09 | b |
| M0F | Φ |
To the developer #
The display cannot hold both coordinates at the same time that the values are scrolled through which is very time consuming.
I suggest you to code a switch in the simulator for allowing to turn off the display of to be printed values, while the display can show a counter value instead.
Author #
Michael Malien, Facebook