¾Õ¼±.»çÀÌ.¹þ.±×¸²


2000/04/21(08:59) from 203.241.163.36
ÀÛ¼ºÀÚ : Á¶¿ë½Ä (dabang333@dabang333.com) Á¶È¸¼ö : 8511 , ÁÙ¼ö : 212
fractal2
³»·Á¹Þ±â : fractal3.jpg (429 Kbytes)

fractal3.jpg
dmj-SelectPhoenixJulia {
;
; This formula "selects" a portion of the image,
; based on the iteration count for the Phoenix set
; at each pixel.
;
transform:
 complex y = (0,0)
 complex newz = (0,0)

 complex z = #pixel
 int i = 0

 WHILE (|z| < @bailout && i < @maxiter)
   newz = z^@power1  +  z^@power2 * @seed  +  @induct * y
   y = z
   z = newz
   i = i + 1
 ENDWHILE

 float r = real(@xfer(flip(flip(i))))
 r = r - trunc(r / @divisor) * @divisor
 IF (r < @remainder || r >= @remainder+@width)
   #solid = TRUE
 ENDIF
 
default:
 title = "Select (Phoenix Julia)"

 param maxiter
   caption = "Maximum Iterations"
   default = 150
   hint = "Maximum number of iterations that will be performed \
           for the transform."
 endparam
 param seed
   caption = "Julia Seed"
   default = (0.56667,0)
   hint = "This is the Julia seed, a constant parameter which \
           defines the shape of the fractal."
 endparam
 param power1
   caption = "Primary Exponent"
   default = (2,0)
   hint = "Defines the primary exponent for the fractal.  The classic \
           Phoenix curve uses exponent 2."
 endparam
 param power2
   caption = "Secondary Exponent"
   default = (0,0)
   hint = "Defines the secondary exponent for the fractal.  The classic \
           Phoenix curve uses exponent 0."
 endparam
 param induct
   caption = "Phoenix Distortion"
   default = (-0.5,0)
   hint = "Sets how 'strong' the previous iteration's effect should be \
           on the fractal."
 endparam
 param bailout
   caption = "Bailout"
   default = 1.0e20
   hint = "Defines how soon an orbit bails out, i.e. doesn't belong \
           to the Phoenix set anymore."
 endparam
 param divisor
   caption = "Iteration Divisor"
   default = 2.0
   hint = "The iteration count will be divided by this value, and \
           the remainder taken."
 endparam
 param remainder
   caption = "Iteration Remainder"
   default = 1.0
   hint = "If the remainder after dividing the iteration count \
           does not match this value, the pixel will be colored \
   'solid'."
 endparam
 param width
   caption = "Band Width"
   default = 1.0
   hint = "The width of the non-solid band, in iterations."
 endparam
 func xfer
   caption = "Iteration Transfer"
   default = ident()
   hint = "This function will be applied to the iteration count \
           before it is divided."
 endfunc
}

dmj-Twirl {
;
; Ripple Transformation
; This transform will add ripples to a fractal.
; Add multiple transforms for interference effects.
;
transform:
 complex center2 = @twirlcenter
 IF (@centermove)
   center2 = #center
 ENDIF
 float d = cabs(#pixel-center2)
 IF (d < @twirlfade)
   IF (@twirltype == 0) ; side to side
     #pixel = (#pixel-center2) * (0,1) ^ (cos(d*@twirlpitch*#pi) * @twirlscale * sqr(1-d/@twirlfade)) + center2

   ELSEIF (@twirltype == 1) ; forward and back
     #pixel = (#pixel-center2) * (1 - cos(d*@twirlpitch*#pi) * @twirlscale * sqr(1-d/@twirlfade)) + center2

   ELSEIF (@twirltype == 2) ; in and out
     float d2 = atan(imag(#pixel-center2)/real(#pixel-center2))
     IF (real(d2) < 0) ; pointing to left
       d2 = d2 + #pi ; rotate 180 degrees
     ENDIF
     IF (d2 < 0) ; negative angle (we want 0 < atan < pi*2)
       d2 = d2 + #pi * 2 ; rotate 360 degrees
     ENDIF
     #pixel = (#pixel-center2) * (1 - cos(d2*@twirlpitch) * @twirlscale * sqr(1-d/@twirlfade)) + center2

   ELSEIF (@twirltype == 3) ; back and forth
     float d2 = atan(imag(#pixel-center2)/real(#pixel-center2))
     IF (real(d2) < 0) ; pointing to left
       d2 = d2 + #pi ; rotate 180 degrees
     ENDIF
     IF (d2 < 0) ; negative angle (we want 0 < atan < pi*2)
       d2 = d2 + #pi * 2 ; rotate 360 degrees
     ENDIF
     #pixel = (#pixel-center2) * (0,1) ^ (cos(d2*@twirlpitch) * @twirlscale * sqr(1-d/@twirlfade)) + center2

   ENDIF
 ENDIF
 
default:
 title = "Ripples"
 param twirlcenter
   caption = "Ripple Center"
   default = (0,0)
   hint = "Sets the center of the ripples."
 endparam
 param centermove
   caption = "Use Screen Center"
   default = TRUE
   hint = "If set, ripples will be around the center of \
           the window, regardless of the Ripple Center \
   setting."
 endparam
 param twirlscale
   caption = "Ripple Strength"
   default = 0.25
   hint = "Sets the height of the ripples."
 endparam
 param twirlpitch
   caption = "Ripple Frequency"
   default = 10.0
   min = 0.0
   hint = "Frequency of ripples; higher values will give \
           more densely packed ripples."
 endparam
 param twirlfade
   caption = "Ripple Fade"
   default = 1.0
   min = 0.00000001
   hint = "Distance at which ripples fade."
 endparam
 param twirltype
   caption = "Ripple Type"
   default = 1
   enum = "Side to Side" "Forward and Back" "In and Out" "Back and Forth"
   hint = "Orientation of ripples with respect to the \
           ripple center."
 endparam
}

dmj-Unspiral {
;
; This undoes a spiral, straightening the arms.
; You will have to play a bit to get this to
; exactly match. You can of course also use this
; to APPLY a spiral transformation. :-)
;
transform:
 complex center2 = @spicenter
 IF (@centermove)
   center2 = #center
 ENDIF
 complex z2 = #pixel - center2
 #pixel = (z2)*(0,1)^(log(cabs(z2))*@spipower) + center2

default:
 title = "Unspiral"

 param spicenter
   caption = "Spiral Center"
   default = (0,0)
   hint = "Sets the center of the spiral.  Use the eyedropper \
           to pick the center of the spiral."
 endparam
 param centermove
   caption = "Use Screen Center"
   default = TRUE
   hint = "If set, the spiral is assumed to be at the center of \
           the window, regardless of the Spiral Center setting."
 endparam
 param spipower
   caption = "Spiral Power"
   default = 1.0
   hint = "Sets the 'tightness' of the spiral.  Tweak this until \
           the spiral arms are straight."
 endparam
}

Modify Delete Post Reply Backward Forward List