|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
Objectcommon:Generic
common:Coloring
common:GradientColoring
dmj5:DMJ_OrbitTrapsColoring
class
...need details...
class DMJ_OrbitTrapsColoring(common.ulb:GradientColoring) {
;
; ...need details...
;
public:
import "common.ulb"
func DMJ_OrbitTrapsColoring(Generic pparent)
GradientColoring.GradientColoring(pparent)
m_TrapSelect = new @f_trapselect(this)
m_TrapTransform = new @f_traptransform(this)
m_TrapShape = new @f_trapshape(this)
m_TrapTransfer = new @f_traptransfer(this)
m_TrapMode = new @f_trapmode(this)
m_TrapTexture = new @f_traptexture(this)
m_TrapColoring = new @f_trapcoloring(this)
m_TrapShape.SetThreshold(@p_threshold)
m_TrapMode.SetThreshold(@p_threshold)
endfunc
func Init(complex pz, complex ppixel)
GradientColoring.Init(pz, ppixel)
m_TrapSelectSequence = m_TrapSelect.InitDefault()
m_TrapTransform.Init(pz)
m_TrapShape.Init(pz)
m_TrapTransfer.Init(pz)
m_TrapMode.Init(pz)
m_TrapTexture.Init(pz)
endfunc
func Iterate(complex pz)
GradientColoring.Iterate(pz)
; OVERVIEW
; decide whether to test this iteration
; for each trap
; update any incremental values for this trap
; get coordinate from #z or from previous trap transformations
; transform trap
; apply fBm distortion to trap
; radially repeat trap shape
; grid repeat trap shape
; quantize trap shape
; rotate trap shape
; apply trap aspect ratio
; skew trap
; determine distance to trap
; use different method for each shape
; apply diameter(s) to trap
; apply fBm texturizing to trap (before add)
; apply fade add/multiply
; apply fBm texturizing to trap (after add)
; apply trap transfer function
; apply fBm texturizing to trap (after transfer)
; eliminate negative distances
; compute and save fBm "color" for this coordinate
; combine trap distances
; for each trap
; apply trap weight function
; merge traps
; apply trap merge to update internal counters
m_TrapSelectSequence = m_TrapSelect.Iterate(m_TrapSelectSequence)
if ((@f_trapselect == DMJ_TrapSelect && m_TrapSelectSequence > 0.5) || m_TrapSelectSequence > @p_trapselectthreshold)
complex zt = m_TrapTransform.Iterate(pz)
float distance = m_TrapShape.Iterate(zt)
distance = m_TrapTransfer.Iterate(distance)
zt = m_TrapShape.GetTransformedPoint()
float texture = m_TrapShape.GetTextureValue()
if (@p_textureposttransform)
texture = texture + m_TrapTexture.Iterate(zt)
else
texture = texture + m_TrapTexture.Iterate(pz)
endif
texture = (texture + m_TrapTexture.GetTextureValue()) * @p_texturestrength
if (!m_TrapTransform.IsSolid())
m_TrapMode.Iterate(pz, zt, distance, texture)
else
m_TrapMode.IterateSilent()
endif
else
m_TrapTransform.IterateSilent()
m_TrapShape.IterateSilent()
m_TrapTransfer.IterateSilent()
m_TrapMode.IterateSilent()
m_TrapTexture.IterateSilent()
endif
endfunc
float func ResultIndex(complex pz)
GradientColoring.ResultIndex(pz)
; OVERVIEW
; apply trap merge update function
; color based on coloring mode
m_TrapMode.Result()
m_Solid = @p_usesolid && m_TrapMode.IsSolid() ; honor solid flag
return m_TrapColoring.Result(m_TrapMode)
endfunc
protected:
Generator m_TrapSelect
UserTransform m_TrapTransform
TrapShape m_TrapShape
Transfer m_TrapTransfer
TrapMode m_TrapMode
TrapShape m_TrapTexture
TrapColoring m_TrapColoring
float m_TrapSelectSequence
default:
title = "Orbit Traps Gradient (UF5)"
int param v_dmj_orbittrapscoloring
caption = "Version (DMJ_OrbitTrapsColoring)"
default = 100
hint = "This version parameter is used to detect when a change has been made to the formula that is incompatible with the previous version. When that happens, this field will reflect the old version number to alert you to the fact that an alternate rendering is being used."
visible = @v_dmj_orbittrapscoloring < 100
endparam
Generator param f_trapselect
caption = "Trap Iteration"
default = DMJ_TrapSelect
expanded = false
endparam
float param p_trapselectthreshold
caption = "Threshold"
default = 0.5
hint = "When using a Generator other than a TrapSelect type, values could range anywhere from 0 to 1. This threshold sets which values will be interpreted as 'do not trap' and which will be interpreted as 'trap'."
visible = (@f_trapselect != DMJ_TrapSelect)
endparam
UserTransform param f_traptransform
caption = "Trap Position"
default = TrapTransform
hint = "This transform is commonly used to set the position of the trap. You can load any Transform object here, but if you replace the TrapTransform you will lose the ability to position the trap. To regain that ability, use the TransformMerge class here so you can load any Transform and still be able to use a TrapTransform object."
endparam
TrapShape param f_trapshape
caption = "Trap Shape"
default = DMJ_TrapShapeAstroid
hint = "The trap shape sets the overall shape of the trap. Its only task is to measure the distance from any point to the trap shape."
endparam
Transfer param f_traptransfer
caption = "Trap Transfer"
default = TrapTransfer
hint = "A transfer allows you to manipulate the distances provided by the trap shape."
expanded = false
endparam
TrapMode param f_trapmode
caption = "Trap Mode"
default = DMJ_TrapModeClosest
endparam
float param p_threshold
caption = "Trap Threshold"
default = 0.25
hint = "This is the overall size or thickness of the trap area. (Some trap modes may not use the threshold value.)"
visible = (@f_trapmode == TrapModeWithThreshold)
endparam
bool param p_usesolid
caption = "Use Solid Color"
default = false
hint = "If checked, any areas not inside any trap shape will be colored the solid color."
endparam
TrapShape param f_traptexture
caption = "Trap Texture"
default = DMJ_TrapShapeFlat
hint = "A trap shape that is used as a texture. Textures do not change the shape of the trap but may change its coloring."
endparam
bool param p_textureposttransform
caption = "Use Transformed Coordinate"
default = false
hint = "If checked, texturing will be based on the final transformed coordinate used in the trap shape (i.e. it will follow the trap shape, rather than being separate from it)."
visible = (@f_traptexture != DMJ_TrapShapeFlat)
endparam
float param p_texturestrength
caption = "Texture Amount"
default = 0.25
hint = "Sets the overall amount of texture to be used. Larger numbers will increase the effect of the texture. A value of 0 will remove the effects of the texture."
visible = (@f_traptexture != DMJ_TrapShapeFlat)
endparam
TrapColoring param f_trapcoloring
caption = "Trap Color Mode"
default = TrapColoringDistance
endparam
}
| Constructor Summary | |
|---|---|
DMJ_OrbitTrapsColoring()
|
|
DMJ_OrbitTrapsColoring(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 |
|---|
public DMJ_OrbitTrapsColoring(Generic pparent)
public DMJ_OrbitTrapsColoring()
| Method Detail |
|---|
public void Init(complex pz,
complex ppixel)
GradientColoringThis function will be called at the beginning of each sequence of values (e.g. at the beginning of each fractal orbit).
Init in class GradientColoringpz - first value for the sequence; for a normal coloring formula, this will be #zppixel - seed value for the sequence; for a normal coloring formula, this will be #pixelpublic void Iterate(complex pz)
GradientColoringAs 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.
Iterate in class GradientColoringpz - next value in the sequence; corresponds to #z in a coloring formulapublic float ResultIndex(complex pz)
GradientColoringThis 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.
ResultIndex in class GradientColoring
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||