Standard
Class Standard_PhoenixJulia

Object
  extended by common:Generic
      extended by common:Formula
          extended by common:DivergentFormula
              extended by Standard:Standard_PhoenixJulia

class 
DivergentFormula:Standard_PhoenixJulia

Object version of PhoenixJulia in Standard.ufm. Phoenix fractal type discovered by Shigehiro Ushiki. The general equation is of the form z(n+1) = z(n)^a + c*z(n)^b + p*z(n-1) If a=2 and b=0 (classic Phoenix) then this type will work with the Smooth and Triangle Inequality coloring algorithms. Originally written by Damien M. Jones.


Ultra Fractal Source

Toggle UF Source Code Display

 class Standard_PhoenixJulia(common.ulb:DivergentFormula) {
 ;
 ; Object version of PhoenixJulia in Standard.ufm.
 ;
 ; Phoenix fractal type discovered by Shigehiro Ushiki. The
 ; general equation is of the form
 ;
 ;     z(n+1) = z(n)^a + c*z(n)^b + p*z(n-1)
 ;
 ; If a=2 and b=0 (classic Phoenix) then this type will
 ; work with the Smooth and Triangle Inequality coloring
 ; algorithms.
 ;
 ; Originally written by Damien M. Jones.
 ;
 public:
   complex func Init(complex pz)
     fY = (0, 0)
     return pz
   endfunc
 
   complex func Iterate(complex pz)
     complex newz = pz^@p_power + pz^@power2 * @seed + @induct * fY
     fY = pz
     return newz
   endfunc
 
 private:
   complex fY
 
 default:
   title = "Phoenix (Julia)"
   helpfile = "Uf*.chm"
   helptopic = "Html/formulas/standard/phoenix.html"
   rating = recommended
   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. Use the Explore or Eyedropper \
             features to find interesting values for this parameter."
   endparam
   param p_power ; Overrides p_power from Formula
     caption = "Exponent 1"
     default = (2,0)
     hint = "Defines the primary exponent for the fractal.  The classic \
             Phoenix curve uses exponent (2, 0)."
   endparam
   param power2
     caption = "Exponent 2"
     default = (0,0)
     hint = "Defines the secondary exponent for the fractal.  The classic \
             Phoenix curve uses exponent (0, 0)."
   endparam
   param induct
     caption = "Distortion"
     default = (-0.5,0)
     hint = "Sets how 'strong' the previous iteration's effect should be \
             on the fractal."
   endparam
   param p_bailout ; Overrides p_bailout from DivergentFormula
     caption = "Bailout"
     default = 1.0e20
     exponential = true
     hint = "This parameter defines how soon an orbit bails out while \
             iterating. Larger values will give smoother outlines."
   endparam
 }
 


Constructor Summary
Standard_PhoenixJulia()
           
 
Method Summary
 complex Init(complex pz)
          Set up for a sequence of values
 complex Iterate(complex pz)
          Produce the next value in the sequence
 
Methods inherited from class common:DivergentFormula
GetUpperBailout, IsBailedOut
 
Methods inherited from class common:Formula
GetLowerBailout, GetPrimaryExponent
 
Methods inherited from class common:Generic
GetParent
 
Methods inherited from class Object
 

Constructor Detail

Standard_PhoenixJulia

public Standard_PhoenixJulia()
Method Detail

Init

public complex Init(complex pz)
Description copied from class: DivergentFormula
Set up for a sequence of values

This function will be called at the beginning of each sequence of values (e.g. at the beginning of each fractal orbit).

Overrides:
Init in class DivergentFormula
Parameters:
pz - seed value for the sequence; for a normal fractal formula, this will be #pixel
Returns:
first value in the sequence; this corresponds to #z in a fractal formula

Iterate

public complex Iterate(complex pz)
Description copied from class: Formula
Produce the next value in the sequence

As long as the sequence has not bailed out, this function will be continually called to produce sequence values.

Overrides:
Iterate in class Formula
Parameters:
pz - previous value in the sequence; corresponds to #z in a fractal formula. Note that you should always use this value for computing the next iteration, rather than a saved value, as the calling code may modify the returned value before passing it back to the next Iterate() call.
Returns:
the next value in the sequence