|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Object reb:REB_Switch_SlopeHelper
class
Helper class for REB_Slope.
Makes possible the use of any object formula with REB_Slope. Works for both
convergent and divergent formulas. Manages height values as trap shapes.
class REB_Switch_SlopeHelper { ; Helper class for REB_Slope. <br> ; <p> ; Makes possible the use of any object formula with REB_Slope. Works for both ; convergent and divergent formulas. Manages height values as trap shapes. public: import "common.ulb" import "Standard.ulb" ; constructor func REB_Switch_SlopeHelper(REB_Switch_Slope owner) fOwner = owner fFormula = new @formulaclass(owner) fFormula2 = new @formulaclass2(owner) fTransfer = new @transferclass(owner) fheight = new @heightvalue(owner) fTransform = new @transform(owner) fTransform2 = new @transform2(owner) endfunc ; initialize the object complex func Init(const complex pz) fOwner.Getparams(m_mand, m_jul, m_c) fFormula.SetParams(m_mand, m_jul, m_c) fZ = fFormula.Init(pz) if @dual fFormula2.SetParams(m_mand, m_jul, m_c) fFormula2.Init(pz) endif fTransform.init(fZ) fTransform2.init(fZ) fTransfer.Init(pz) fheight.Init(pz) fMinDist = 1e20 m_sflag = false fIterz = 0 m_zold = 0 m_iter = 0 return fZ endfunc ; call for each iterated point complex func Iterate() m_zold = fZ if (m_iter >= @prestart && m_iter < (@prestart+@preend))&& @transform \ != NullTransform fZ = (fZ + fTransform.Iterate(fZ)*@strength)/(1+@strength) endif fZ = fFormula.Iterate(fZ) if @dual fZ = fFormula2.iterate(fZ) endif if (m_iter >= @poststart && m_iter < (@poststart+@postend))&& @transform2 \ != NullTransform fZ = (fZ + fTransform2.Iterate(fZ)*@strength2)/(1+@strength2) endif m_iter = m_iter + 1 float d = fheight.Iterate(fZ) if d == -10000 m_sflag = true endif if @tx d = cabs(fheight.GetTransformedPoint()) endif if d < fMinDist && !m_sflag fMinDist = d endif if m_sflag fIterz = fIterz + exp(-cabs(fZ)-0.5/(cabs(m_zold - fZ))) endif return fZ endfunc bool func IsBailedOut() return fFormula.IsBailedOut(fZ) endfunc ; determine continuous iteration (height) float func CalcHeight(int iter) float height = fMinDist if m_sflag height = fIterz endif return fTransfer.Iterate(height) endfunc private: Switch fFormula Switch fFormula2 UserTransform fTransform UserTransform fTransform2 float fMinDist Transfer fTransfer complex fZ TrapShape fheight bool m_sflag complex m_zold float fIterz int m_iter REB_Switch_Slope fOwner bool m_mand bool m_jul complex m_c default: int param v_switchslopehelper caption = "Version (REB Switch Slope Helper)" 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_switchslopehelper < 100 endparam UserTransform param transform caption = "Pre transform" default = NullTransform expanded = false endparam int param prestart caption = "Start Iter (Pre)" default = 0 visible = @transform != NullTransform endparam int param preend caption = "Iterations (Pre)" default = 1 visible = @transform != NullTransform endparam float param strength caption = "Strength (Pre)" default = 1 visible = @transform != NullTransform endparam bool param dual caption = "Use dual formulas" default = false endparam Switch param formulaClass caption = "Fractal Formula" default = REB_MandelbrotJulia_switch endparam Switch param formulaClass2 caption = "Fractal Formula" default = REB_Ikenaga_Switch visible = @dual endparam UserTransform param transform2 caption = "Post transform" default = NullTransform expanded = false endparam int param poststart caption = "Start Iter (Post)" default = 0 visible = @transform2 != NullTransform endparam int param postend caption = "Iterations (Post)" default = 1 visible = @transform2 != NullTransform endparam float param strength2 caption = "Strength (Post)" default = 1 visible = @transform2 != NullTransform endparam TrapShape param heightvalue caption = "Height value" default = REB_TrapShapeSlopeBasic endparam Transfer param transferclass caption = "Height Transfer" default = Standard_HeightTransfer hint = "Selects a class that can transform the calculated height value." expanded = false endparam bool param tx caption = "Use transformed value" default = false visible = @heightvalue != REB_TrapShapeSlopeBasic endparam }
Constructor Summary | |
---|---|
REB_Switch_SlopeHelper()
|
|
REB_Switch_SlopeHelper(REB_Switch_Slope owner)
constructor |
Method Summary | |
---|---|
float |
CalcHeight(int iter)
determine continuous iteration (height) |
complex |
Init(complex pz)
initialize the object |
boolean |
IsBailedOut()
|
complex |
Iterate()
call for each iterated point |
Methods inherited from class Object |
---|
|
Constructor Detail |
---|
public REB_Switch_SlopeHelper(REB_Switch_Slope owner)
public REB_Switch_SlopeHelper()
Method Detail |
---|
public complex Init(complex pz)
public complex Iterate()
public boolean IsBailedOut()
public float CalcHeight(int iter)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |