Mike,
Here is a link to a web page with an image:
[snip] Of course the obvious did escape me: One can use the cartesian form of a curve formula also. As long as there is a function f(z) = 0 for points on the curve, |f(z)| = delta describes a point off the curve (for delta != 0). The Astroid case then becomes ;ang = ... ;astroid = ... distance = abs(abs(real(w))^(2/3) + abs(imag(w))^(2/3) - r^(2/3)) The constant "r^(2/3)" better be moved into the initialisation part, but that's a detail. Another example is below. Regards, Gerald --- 8< ---------------- start of par ---------------------------------------------------------- Deltoid_Example { reset=2004 type=formula formulafile=test.par formulaname=deltoid_mset passes=t center-mag=+0.36285434995112430/+0.66554088657105560/155.059 params=0.002/0.125/8/30 float=y maxiter=500 inside=255 outside=summ colors=000fOz<22>N5TM4RL3Q<3>I0Kz0f<22>W0FV0ET0D<3>O08z88<22>W22V11T11<3\
O00zW0<22>hA0g90f80<3>c40zz0<22>fQ0eO0dM0<3>aG00zR<22>0N90L80J7<3>0C40z\ z<22>0NN0LL0JJ<3>0CCGGz<22>33W33V22T<3>00O000<7>000<4>000z88 }
frm:Deltoid_Mset { ; Asteroid_Basic.par ; Copyright (c) Paul W. Carlson, 1997 ; Modified for compatibility with Fractint 20.04 and ; Fracton by Mike Frazier, 2011 ;**************************************************** ; Always use floating point math and outside=summ. ; ; Parameters: ; real(p1) = a factor controlling the width of the curves ; imag(p1) = radius of the astroid ; real(p2) = number of color ranges ; imag(p2) = number of colors in each color range ; ; Note that the equation variable is w, not z. ; Initialize cindex to the index of the background color ; Formula modified to avoid color index 0 which can not ; be used with outside=summ in FractInt v20.04 ;**************************************************** w=0, c=pixel, z=0, cindex=254,; Background color 254 bailout=0, iter=0, range_num=0, i=(0,1), r=imag(p1), ;**************************************************** ; In the accompanying par file, ; we have 8 color ranges with 30 colors in each range ; for a total of 240 colors. The first range starts at ; color 1. Pixels will use color 254 when |w| > 1000. ; Other values can be used here as long as the product ; of num_ranges times colors_in_range is less than 255. ; Color 254 is reserved for the background color and ; color 255 can be used for the inside color. ;**************************************************** num_ranges=real(p2), colors_in_range=imag(p2), ;**************************************************** ; Real(p1) controls the width of the curves. ; These values will usually be in the range 0.001 to 0.1 ;**************************************************** width=real(p1), index_factor=(colors_in_range-1)/width: ;**************************************************** ; The equation being iterated. Almost any equation ; that can be expressed in terms of a complex variable ; and a complex constant will work with this method. ; This example uses the standard Mandelbrot set equation. ;**************************************************** w=w*w+c, ;**************************************************** ; The orbit trap curve. This example uses an "astroid" ; curve (which has absolutely nothing to do with huge ; rocks in outer space). Any two-dimensional curve can ; be used which can be expressed in parametric form in ; terms of the angle from the origin. ;**************************************************** ;ang=atan(imag(w)/real(w)), ;astroid=r*(cos(ang)^3+i*sin(ang)^3), xx = real(w), yy = imag(w) a = 2*xx + 3*r ;**************************************************** ; If the orbit point is within some distance of the curve, ; set z to the index into the colormap and set the bailout ; flag. Note: the way we use the "distance" here has ; the effect of turning the curves inside-out in the image. ;**************************************************** distance=abs(sqr(|w|+12*r*xx+9*r*r)-4*r*sqr(a)*a) if(distance<width&&iter>1), cindex=index_factor*distance+range_num*colors_in_range+1, bailout=1, endif, ;**************************************************** ; Cycle through the range numbers (0 thru num_ranges - 1) ; With two color ranges, even iterations use color ; range 0, odd iterations use color range 1. ;**************************************************** range_num=range_num+1, if(range_num==num_ranges), range_num=0, endif, ;**************************************************** ; Since we are using outside=summ, we have to subtract ; the number of iterations from z. ;**************************************************** iter=iter+1, z=cindex-iter, ;**************************************************** ; Finally, we test for bailout ;**************************************************** bailout==0&&|w|<1000 } --- 8< ---------------- end of par ----------------------------------------------------------