mt
Class MT_DiskTexture

Object
  extended by common:Generic
      extended by common:Coloring
          extended by common:GradientColoring
              extended by mt:MT_DiskTexture

class 
GradientColoring:MT_DiskTexture

Mark Townsend, May 2008


Ultra Fractal Source

Toggle UF Source Code Display

 class MT_DiskTexture(common.ulb:GradientColoring) {
 ;
 ; Mark Townsend, May 2008
 ;
 public:
   func MT_DiskTexture(Generic pparent)
     GradientColoring(pparent)
     fTexture = new @p_texture(this)
   endfunc
   
   func Init(complex pz, complex ppixel)
     GradientColoring.Init(pz, ppixel)
     fTexture.Init(pz)
     fW = 0
     fIter = 0
     fMax_iter = 0
   endfunc
 
   func Iterate(complex pz)
     fIter = fIter + 1
     if cabs(pz - @doffset) < @r
       float d = (@r - cabs(pz - @doffset)) / @r
       fW = fW + d * pz
       fMax_iter = fIter
     endif
   endfunc
 
   float func ResultIndex(complex pz)
     float index = 0
     if @coloring == 0
       index = 0.1 * cabs(fW)
     elseif @coloring == 1
       index = 0.1 * abs(real(fW))
     elseif @coloring == 2
       index = 0.1 * abs(imag(fW))
     elseif @coloring == 3
       float b = atan2(fW)
       if b < 0
         b = b + 2 * #pi
       endif
       b = 1 / (2 * #pi) * b
       index = b
     elseif @coloring == 4
       index = 0.1 * fMax_iter
     elseif @coloring == 5
       index = fTexture.Iterate(fW)
     endif
     return index
   endfunc
 
 private:
   TrapShape fTexture
   complex fW
   int fIter
   int fMax_iter
 
 default:
   title = "Disk Texture"
   param coloring
     caption = "Coloring mode"
     enum = "Magnitude" "Real" "Imaginary" "Angle" "Iteration" "Texture"
   endparam
   param r
     caption = "Disk radius"
     default = 2.0
     min = 0
   endparam
   param doffset
     caption = "Disk offset"
     default = (0,0)
   endparam
  TrapShape param p_texture
     caption = "Texture"
     default = MT_PerlinNoiseTexture
   endparam
 }
 


Constructor Summary
MT_DiskTexture()
           
MT_DiskTexture(Generic pparent)
           
 
Method Summary
 void Init(complex pz, complex ppixel)
          Set up for a sequence of values
 void Iterate(complex pz)
          Process the next value in the sequence
 float ResultIndex(complex pz)
          Produce a resulting color index after a sequence is finished
 
Methods inherited from class common:GradientColoring
IsGradient, IsSolid, Result
 
Methods inherited from class common:Coloring
GetPixel
 
Methods inherited from class common:Generic
GetParent
 
Methods inherited from class Object
 

Constructor Detail

MT_DiskTexture

public MT_DiskTexture(Generic pparent)

MT_DiskTexture

public MT_DiskTexture()
Method Detail

Init

public void Init(complex pz,
                 complex ppixel)
Description copied from class: GradientColoring
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 GradientColoring
Parameters:
pz - first value for the sequence; for a normal coloring formula, this will be #z
ppixel - seed value for the sequence; for a normal coloring formula, this will be #pixel

Iterate

public void Iterate(complex pz)
Description copied from class: GradientColoring
Process 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. Note that such processing generally will not know in advance precisely how long the sequence is, and should be prepared to deal with sequences of arbitrary length.

Your coloring may determine at some point that a solid color should be used rather than an index value.

Overrides:
Iterate in class GradientColoring
Parameters:
pz - next value in the sequence; corresponds to #z in a coloring formula

ResultIndex

public float ResultIndex(complex pz)
Description copied from class: GradientColoring
Produce a resulting color index after a sequence is finished

This corresponds to the final: section in a coloring formula. Once it is called, no further calls to Iterate() should be made without calling Init() first.

Overrides:
ResultIndex in class GradientColoring
Returns:
the gradient index (corresponding to #index in a coloring formula)