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