free software resistance
the cost of computing freedom is eternal vigilance
### sf.fig
*original date:* sep 2015
*originally posted:* sep 2024
this working graphics program wont translate with the latest version of fig.
the reason is it assumes that a function called "abs" exists- fig does not have an abs function, because its so trivial to implement.
if you supply an abs function, it should work. it should also work if you compile with an older fig version, or if you disable the error checking in the fig translator code:
```
#z display
sa 280
sd 4
cx arr times sa
cy arr times sa
cc arr times sa
rzx arr times sa plus 0
rzy arr times sa plus 0
function cir(x y c)
xo = -10
yo = 0
for p -3.14159 3.14159 0.44879857142857144
zx p times 10 cos times 4 int plus x
zy p times 10 sin times 4 int plus y
#z pset zx zy c
ifequal xo -10
pass
else
z line xo yo zx zy c
fig
xo = zx
yo = zy
next
fig
for r 1 sa 1
co randint 9 15
co r mod 7 plus 9
cc arrset r co
sx randint 0 1366
cx arrset r sx
sy randint 0 768
cy arrset r sy
#z cir sx sy co
next
while
function fw r sa cx cy cc rzx rzy
co arrget cc r
zx arrget cx r
sx randint -1 1 divby 1 int times 1 plus zx
zy arrget cy r
sy randint -1 1 divby 1 int times 1 plus zy
ifmore r 1
while
rm r minus 1
cdy arrget cy rm
#cky arrget cy r minus cdy abs
cky sy minus cdy abs
ifmore cky sd
cky sy minus cdy times -.01 int
mody arrget cy r plus cky
cy arrset r mody
fig
sdm minus sd
ifmore cky sdm
cky sy minus cdy times -.01 int
mody arrget cy r plus cky
cy arrset r mody
fig
break
wend
while
rm r minus 1
cdx arrget cx rm
ckx arrget cx r minus cdx ##abs #
ifmore ckx sd
ckx arrget cx r minus cdx times -.05 int
modx arrget cx r plus ckx
cx arrset r modx
fig
sdm minus sd
ifless ckx sdm
ckx arrget cx r minus cdx times -.05 int
modx arrget cx r plus ckx
cx arrset r modx
fig
break
wend
fig
#ifequal r 1
#cx arrset r sx
#cy arrset r sy
#else
sx arrget cx r
sy arrget cy r
#fig
z0 randint 0 1
iftrue z0
z0 co minus 8
else
z0 co
fig
srzx arrget rzx r
srzy arrget rzy r
zco 0 # co minus 8
z cir srzx srzy zco display
zy arrget cy r
sy randint -5 5 divby 1 int times 1 plus zy
zx arrget cx r
sx randint -5 5 divby 1 int times 1 plus zx
z cir sx sy co
rr r plus 0
rzx arrset rr sx
rzy arrset rr sy
fig
for trz 1 4 1
for r 1 sa 1
zep fw r sa cx cy cc rzx rzy
next
next
cx arreverse
cy arreverse
cc arreverse
for r 1 sa 1
zep fw r sa cx cy cc rzx rzy
next
cx arreverse
cy arreverse
cc arreverse
z display
wend
```
license: 0-clause bsd
```
# 2015 mn
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
```
=> https://freesoftwareresistance.neocities.org