SF (FX-602P)
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.
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:
SF2.pf #
PROGRAM LIST
File : SF2
*** P0
MAC 0 Min0F 360
Min06 “N1?” PAUSE 2
HLT Min01 “N2?”
PAUSE 2 HLT Min02 “N
3?” PAUSE 2 HLT
Min03 “M?” PAUSE 2
HLT Min04 1 Min08 1
Min09 “+X= +Y=”
SAVE invEXE
LBL0
MR0F × MR04 ÷ 4 =
Min05 cos ÷ MR08 =
abs X^y MR02 = Min07
MR05 sin ÷ MR09 =
abs X^y MR03 = M+07
MR07 X^⅟y MR01 1/x =
P→R MR0F = FIX4 “ #”
X↔Y FIX4 “; #” SAVE
invEXE 1 M+0F MR06
x=F GOTO1
GOTO0
LBL1
“End.” SAVE invEXE
···127 steps
Download SF2.pf
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