Thanks! It's got "triangle" symmetry -- I'll put a UF formula at the bottom, but the basic iteration is apply a symmetry transform (usually a boxfold or something along the lines), then
z -> abs(
cz + 1) + 1/abs(
cz + 1) where
c is the Julia seed and abs(
z) is not |
z| but rather folds
z into the upper right quadrant. Some use other iterations though. Most choices of the "symmetry" parameter should result in a Kaliset variant, but the bottom three are 2D Mandelboxen: straight, with inverse ballfold, and with rotation.
The seed here is 0.0219312560015 + 0.0726704820143
i.
The center point is -1.1786049365 + 0.673186819
i.
The side length is about 4.5.
kali_3 {
global:
float r = sqrt(3.0)
init:
z = #pixel
float x = 0.0
float y = 0.0
float u = 0.0
float v = 0.0
complex t = (0,1)*PI/3.0
complex qq = exp(t)
float rr = @r * @r
loop:
IF (@symmetry == 0)
IF (real(z) < 0)
z = (0,1)*imag(z) - real(z)
ENDIF
z = abs(z*@seed+1)+1/abs(z*@seed+1)
ELSEIF (@symmetry == 1)
IF (real(z) > 0)
z = (0,1)*imag(z) - real(z)
ENDIF
z = abs(z*@seed+1)+1/abs(z*@seed+1)
ELSEIF (@symmetry == 2)
IF (real(z) + imag(z) < 0)
z = -(0,1)*real(z) - imag(z)
ENDIF
IF (real(z) - imag(z) < 0)
z = (0,1)*real(z) + imag(z)
ENDIF
z = z*@seed+1+1/(z*@seed+1)
ELSEIF (@symmetry == 3)
IF (real(z) - imag(z) < 0)
z = (0,1)*real(z) + imag(z)
ENDIF
z = z*@seed+1+1/(z*@seed+1)
ELSEIF (@symmetry == 4)
x = abs(real(z)) + 0.5
y = imag(z)
u = abs(x*r - y*0.5)
v = x*0.5 + y*r
x = u*r + v*0.5 - 1
y = v*r - u*0.5
u = abs(x*r + y*0.5)
v = y*r - x*0.5
x = u*r - v*0.5 + 0.5
y = u*0.5 + v*r
z = (x + (0,1)*y)*@seed + 1
z = z+1/z
ELSEIF (@symmetry == 5)
x = abs(real(z))
y = imag(z)
u = x*r - y*0.5
v = x*0.5 + y*r
x = u
y = v
z = (x + (0,1)*y)*@seed + 1
z = z+1/z
ELSEIF (@symmetry == 6)
z = abs(z)
x = real(z)
y = imag(z)
x = x / 2^(y+1)
z = (x + (0,1)*y)*@seed + 1
z = z+1/z
ELSEIF (@symmetry == 7)
z = abs(z)
x = real(z)
y = imag(z)
u = 2^(1-y)
IF (x > u)
x = u - x
ENDIF
z = (x + (0,1)*y)*@seed + 1
z = z+1/z
ELSEIF (@symmetry ==
x = abs(real(z))
y = imag(z)
z = (x + (0,1)*y)*qq*@seed + 1
z = z+1/z
ELSEIF (@symmetry == 9)
x = real(z)
y = imag(z)
IF (x > 1)
x = 2 - x
ELSEIF (x < -1)
x = -2 - x
ENDIF
IF (y > 1)
y = 2 - y
ELSEIF (y < -1)
y = -2 - y
ENDIF
u = x*x+y*y
IF (u < rr)
x = x / rr
y = y / rr
ELSEIF (u < 1)
x = x / u
y = y / u
ENDIF
z = (x + (0,1)*y)*@scale + @seed
ELSEIF (@symmetry == 10)
x = real(z)
y = imag(z)
IF (x > 1)
x = 2 - x
ELSEIF (x < -1)
x = -2 - x
ENDIF
IF (y > 1)
y = 2 - y
ELSEIF (y < -1)
y = -2 - y
ENDIF
u = x*x+y*y
IF (u > rr)
x = x / rr
y = y / rr
ELSEIF (u > 1)
x = x / u
y = y / u
ENDIF
z = (x + (0,1)*y)*@scale + @seed
ELSEIF (@symmetry == 11)
x = real(z)
y = imag(z)
IF (x > 1)
x = 2 - x
ELSEIF (x < -1)
x = -2 - x
ENDIF
IF (y > 1)
y = 2 - y
ELSEIF (y < -1)
y = -2 - y
ENDIF
u = x*x+y*y
IF (u > rr)
x = x / rr
y = y / rr
ELSEIF (u > 1)
x = x / u
y = y / u
ENDIF
z = (x + (0,1)*y)*@scale2 + @seed
ENDIF
bailout:
true
default:
center = (0,0)
maxiter = 100
periodicity = 0
title = "Kali 3"
rating = recommended
param seed
caption = "Seed"
default = (-0.5,-0.5)
endparam
param symmetry
caption = "Symmetry"
enum = "Real < 0" "Real > 0" "Tetrahedral" "Octahedral" "Triangle" "Twist" "Pinch" "Hic" "T2" "Tglad" "Tglad-inv" "Tgladcplx"
endparam
param r
caption = "Radius"
visible = (@symmetry == 9 || @symmetry == 10 || @symmetry == 11)
default = 0.5
endparam
param scale
caption = "Scale"
visible = (@symmetry == 9 || @symmetry == 10)
default = 2.0
endparam
param scale2
caption = "Scale"
visible = (@symmetry == 11)
default = (2.0,0.0)
endparam
}