comment { rkb.ulb - Classes written by Robert K. Bunney

History
7/8/08 - TrapShapeFlower Added
7/8/08 - DeformShape Added
8/31/08 - SSG Added
} ;============================================================ ; ; SSG ; ;============================================================ class RKB_SSG(common.ulb:TrapShape) { public: ; Constructor func RKB_SSG(Generic pparent) TrapShape.TrapShape(pparent) fMaxDist = 2 ; Default setting for values a=0, b=0, m=0, n1=0, n2=0, n3=0 fTw = 0 ; Twist fRA = 0 ; Ridges Amp fRF = 0 ; Ridges Freq fWA = 0 ; Waves Amp fWF = 0 ; Waves Freq fDP = 1 ; Vary wave by distance (Distance Power) s = 1 ; Sweeps if (@enShape == "Shape #0") a=1, b=1.1, m=24, n1=1.7, n2=0.7, n3=6 elseif (@enShape == "Shape #1: Null") ;Default params elseif (@enShape == "Shape #2") a=-2.6, b=1.1, m=8, n1=1.7, n2=0.7, n3=9.6 elseif (@enShape == "Shape #3") a=24, b=1.1, m=16, n1=0.5, n2=0.7, n3=0 elseif (@enShape == "Shape #4") a=24, b=1.1, m=8, n1=0.5, n2=0.7, n3=0 elseif (@enShape == "Shape #5") a=1, b=1, m=7, n1=3, n2=6, n3=6 elseif (@enShape == "Shape #6") a=6.5, b=1.1, m=8, n1=0.5, n2=0.7, n3=0.0 elseif (@enShape == "Shape #7") a=5, b=1.1, m=8, n1=0.5, n2=1.9, n3=0 elseif (@enShape == "Shape #8") a=-1.3, b=1.1, m=8, n1=1.7, n2=4, n3=0 elseif (@enShape == "Shape #9") a=-5, b=1.1, m=10, n1=0.54, n2=1, n3=0 elseif (@enShape == "Shape #10") a=-5, b=1, m=10, n1=0.5, n2=2, n3=0 elseif (@enShape == "Shape #11") a=1, b=1, m=3, n1=5, n2=18, n3=18 elseif (@enShape == "Shape #12") a=1, b=1, m=6, n1=20, n2=7, n3=18 elseif (@enShape == "Shape #13") a=1, b=1, m=4, n1=2, n2=1, n3=3 elseif (@enShape == "Shape #14") a=1, b=1, m=8, n1=3, n2=4, n3=17 elseif (@enShape == "Shape #15") a=1, b=0.6, m=12, n1=32, n2=1, n3=-11 elseif (@enShape == "Shape #16") a=0.3, b=1.01, m=-8.1, n1=1, n2=1, n3=150, s=6 elseif (@enShape == "Shape #17") a=1, b=1, m=19, n1=9, n2=14, n3=13 elseif (@enShape == "Shape #18") a=1.5, b=2, m=8, n1=0.9, n2=1.8, n3=0.8 elseif (@enShape == "Shape #19") a=1.6, b=1, m=12, n1=1.5, n2=2, n3=7.5 elseif (@enShape == "Shape #20") a=2.7, b=2.6, m=6, n1=12, n2=8.3, n3=5.3 elseif (@enShape == "Shape #21") a=1.5, b=2, m=2, n1=1.7, n2=0.7, n3=2 elseif (@enShape == "Shape #22") a=1.19, b=2.8, m=32, n1=3, n2=0.9, n3=6 elseif (@enShape == "Shape #23") a=0.9, b=10, m=4, n1=4.2, n2=17, n3=1.5 elseif (@enShape == "Shape #24") a=1, b=1, m=3, n1=4.5, n2=10, n3=10 elseif (@enShape == "Shape #25") a=1, b=1, m=4, n1=12, n2=15, n3=15 elseif (@enShape == "Shape #26") a=1, b=1, m=7, n1=10, n2=6, n3=6 elseif (@enShape == "Shape #27") a=0.3, b=1, m=-8.5, n1=1, n2=1, n3=140, s=4 elseif (@enShape == "Shape #28") a=10, b=10, m=5, n1=1, n2=7, n3=7 elseif (@enShape == "Shape #29") a=1, b=1, m=12, n1=15, n2=20, n3=3 elseif (@enShape == "Shape #30") a=1, b=1, m=8, n1=1, n2=1, n3=8 elseif (@enShape == "Shape #31") a=0.3, b=1.01, m=-8.5, n1=1, n2=1, n3=160, s=4 elseif (@enShape == "Shape #32") a=1, b=1, m=5, n1=2, n2=6, n3=6 elseif (@enShape == "Shape #33") a=1, b=1, m=6, n1=1, n2=1, n3=6 elseif (@enShape == "Shape #34") a=1, b=1, m=3, n1=6, n2=6, n3=6 elseif (@enShape == "Shape #35") a=1, b=1, m=2, n1=1, n2=1, n3=1 elseif (@enShape == "Shape #36") a=1, b=1, m=2, n1=1, n2=4, n3=8 elseif (@enShape == "Shape #37") a=1, b=1, m=8, n1=7, n2=8, n3=2 elseif (@enShape == "Shape #38") a=1, b=1, m=1, n1=1, n2=1, n3=1 elseif (@enShape == "Shape #39") a=1, b=1, m=2, n1=1, n2=1, n3=-1.27 elseif (@enShape == "Shape #40") a=1, b=1, m=3, n1=1, n2=1, n3=1 elseif (@enShape == "Shape #41") a=1, b=1, m=4, n1=1, n2=1, n3=1 elseif (@enShape == "Shape #42") a=17, b=1, m=27.6, n1=24, n2=2, n3=6, s=4 elseif (@enShape == "Shape #43") a=1, b=1, m=6, n1=1, n2=1, n3=1 elseif (@enShape == "Shape #44") a=1, b=1, m=1, n1=0.3, n2=0.3, n3=0.3 elseif (@enShape == "Shape #45") a=1, b=1, m=2, n1=0.3, n2=0.3, n3=0.3 elseif (@enShape == "Shape #46") a=1, b=1, m=3, n1=0.3, n2=0.3, n3=0.3 elseif (@enShape == "Shape #47") a=1, b=1, m=4, n1=0.3, n2=0.3, n3=0.3 elseif (@enShape == "Shape #48") a=1.9, b=2.8, m=32, n1=3, n2=0.9, n3=0.6 elseif (@enShape == "Shape #49") a=1, b=0.85, m=2, n1=-3, n2=1, n3=20 elseif (@enShape == "Shape #50") a=1, b=0.85, m=22, n1=-0.11, n2=0.9, n3=4 elseif (@enShape == "Shape #51") a=0.4, b=0.85, m=22, n1=-0.11, n2=0.9, n3=4 elseif (@enShape == "Shape #52") a=1, b=1.2, m=24, n1=2, n2=1, n3=4 elseif (@enShape == "Shape #53") a=1, b=1.21, m=4, n1=-0.11, n2=3.77, n3=0.77 elseif (@enShape == "Shape #54") a=-1.15, b=1.21, m=4, n1=-0.11, n2=3.77, n3=0.77 elseif (@enShape == "Shape #55") a=1.2, b=1.1, m=16, n1=0.5, n2=3.4, n3=0.9 elseif (@enShape == "Shape #56") a=1.2, b=1.2, m=4, n1=0.5, n2=3.5, n3=1 elseif (@enShape == "Shape #57") a=1, b=1, m=22, n1=1, n2=1, n3=40 elseif (@enShape == "Shape #58") a=1.2, b=-2, m=8, n1=0.5, n2=9, n3=1 elseif (@enShape == "Shape #59") a=0.3, b=0.3, m=8, n1=0.3, n2=0.3, n3=0.6 elseif (@enShape == "Shape #60") a=1, b=1, m=1, n1=1, n2=1, n3=40 elseif (@enShape == "Shape #61") a=1.2, b=-2, m=4, n1=0.5, n2=9, n3=1 elseif (@enShape == "Shape #62") a=1, b=-0.67, m=22, n1=1, n2=1, n3=40 elseif (@enShape == "Shape #63") a=1, b=0.6, m=12, n1=32, n2=1, n3=40 elseif (@enShape == "Shape #64") a=1, b=0.6, m=12, n1=32, n2=400, n3=40 elseif (@enShape == "Shape #65") a=1, b=0.6, m=12, n1=32, n2=8, n3=-11 elseif (@enShape == "Shape #66") a=17, b=1, m=27.6, n1=3, n2=2, n3=6, s=3 elseif (@enShape == "Shape #67") a=1, b=0.6, m=12, n1=-400, n2=1, n3=270 elseif (@enShape == "Shape #68") a=1.05, b=1.1, m=24, n1=0.4, n2=3.5, n3=0.87 elseif (@enShape == "Shape #69") a=1.2, b=2, m=2, n1=2, n2=1.7, n3=6 elseif (@enShape == "Shape #70") a=1.11, b=1.1, m=24, n1=0.4, n2=5, n3=1.12 elseif (@enShape == "Shape #71") a=1.11, b=1.1, m=44, n1=1.1, n2=0.9, n3=0.3 elseif (@enShape == "Shape #72") a=1, b=1.1, m=24, n1=0.4, n2=3.5, n3=0.87 elseif (@enShape == "Shape #73") a=1, b=1.3, m=27.6, n1=3, n2=1, n3=6, s=3 elseif (@enShape == "Shape #74") a=1, b=1.4, m=24.5, n1=3, n2=1, n3=6, s=4 elseif (@enShape == "Shape #75") a=0.5, b=1.3, m=5.7, n1=1, n2=6, n3=2, s=4 elseif (@enShape == "Shape #76") a=1.5, b=2, m=9.9, n1=1.8, n2=0.8, n3=4, s=4 elseif (@enShape == "Shape #77") a=1, b=-0.67, m=22.3, n1=1, n2=1, n3=40, s=3 elseif (@enShape == "Shape #78") a=-0.8, b=1.1, m=8, n1=1.7, n2=4, n3=0 elseif (@enShape == "Shape #79") a=1, b=1, m=3, n1=5, n2=18, n3=18, fTw=0.85, fRF=4, fRA=4 elseif (@enShape == "Shape #80") a=0.3, b=1.01, m=-8.5, n1=1, n2=1, n3=160, s=4, fWA=2, fWF=2 elseif (@enShape == "Shape #81") a=24, b=1.1, m=16, n1=0.5, n2=0.7, n3=0, fRF=9.696, fRA=3 elseif (@enShape == "Shape #82") a=-4.22, b=1.1, m=10, n1=0.54, n2=.46, n3=7.6, fRF=22, fRA=1 elseif (@enShape == "Shape #83") a=1, b=1, m=22, n1=2, n2=1, n3=40, fWF=2, fWA=2, fDP=-2 elseif (@enShape == "Shape #84") a=0.3, b=1.01, m=-5.85, n1=1, n2=1, n3=150, s=6, fWF=2, fWA=2 elseif (@enShape == "Shape #85") a=0.03, b=2, m=2, n1=1.7, n2=0.7, n3=2, fWF=2, fWA=4 elseif (@enShape == "Shape #86") a=1.6, b=10, m=4, n1=4.2, n2=17, n3=1.5, fTw=1.7 elseif (@enShape == "Shape #87") a=1, b=1.1, m=8, n1=0.4, n2=0.7, n3=6 elseif (@enShape == "Shape #88") a=17, b=0.64, m=27.6, n1=24, n2=2, n3=6, s=4 elseif (@enShape == "Shape #89") a=1.2, b=-2, m=8, n1=0.5, n2=9, n3=1, fRF=5.25, fRA=6 elseif (@enShape == "Shape #90") a=1, b=1.21, m=4, n1=-0.11, n2=3.77, n3=2, fTw=1.6 elseif (@enShape == "Shape #91") a=1, b=1, m=20, n1=1, n2=1, n3=40, fWF=4.0, fWA=4.0, fDP=-1.5 elseif (@enShape == "Shape #92") a=1, b=0.6, m=10, n1=32, n2=1, n3=40, fTw=1 elseif (@enShape == "Shape #93") a=1, b=0.6, m=12, n1=32, n2=8, n3=-11, fRF=11, fRA=2 elseif (@enShape == "Shape #94") a=1, b=0.6, m=12, n1=-400, n2=1, n3=270, fRF=11, fRA=1, fWF=4, fWA=1, fDP=-2 elseif (@enShape == "Shape #95") a=0.5, b=1.3, m=5.7, n1=-1.4, n2=6, n3=2, s=4, fWF=-4, fWA=3, fDP=-2 elseif (@enShape == "Shape #96") a=1, b=0.6, m=10, n1=32, n2=1, n3=-11, fRF=11, fRA=0.5 elseif (@enShape == "Shape #97") a=2.1, b=2, m=8, n1=0.9, n2=1.8, n3=0.8, fRF=2.58, fRA=6 elseif (@enShape == "Shape #98") a=1, b=1, m=3, n1=4.5, n2=10, n3=10, fTw=1.6, fRF=2.55, fRA=1 elseif (@enShape == "Shape #99") a=1, b=1.07, m=22, n1=-0.11, n2=0.9, n3=4, fTw=-0.65, fWF=2.0, fWA=6.0 endif a=a+@a, b=b+@b, m=m+@m, n1=n1+@n1, n2=n2+@n2, n3=n3+@n3 s = s+@iSweeps fTw = fTw + @fTwist fRA = fRA + @fRidgesAmp fRF = fRF + @fRidgesFreq fWA = fWA + @fWaveAmp fWF = fWF + @fWaveFreq fDP = fDP + @fDistPower fInc = #pi/180 ; 360 tests fRMin = 999999999 fRMax = -999999999 ; Figure out maximum size (with some certainty) float fEnd = #pi*2 while (fEnd > 0) float rr rr = (abs((cos(m * fEnd/4)/a)^n2) + ((abs(sin(m * fEnd/4)/b))^n3))^(-1.0/n1) if (rr > fRMax), fRMax = rr, endif if (rr < fRMin), fRMin = rr, endif fEnd = fEnd - fInc endwhile endfunc float func Iterate(complex pz) float x = real(pz) float y = (imag(pz))*@fStretchXY float fTheta = atan(y/x)+@fRotation if (x < 0.0), fTheta = fTheta + #pi, endif if (fTheta == 0), fTheta = .001, endif fTheta = real(@funcShapeMod1(fTheta)) float fPointDist = sqrt(x^2 + y^2) ;Twist fTheta = fTheta + real(@funcTwist(fPointDist)) * fTw ;Waves float fDistMult = fPointDist^fDP fTheta = fTheta + fWA/100*fDistMult*real(sin(fPointDist*fWF*2*#pi)) float rT float r = -999999999 int i = 1 while (i <= s) i = i+1 rT = (abs((cos(m * real(@funcShapeMod2(fTheta))/4)/a)^n2) + ((abs(sin(m * real(@funcShapeMod2(fTheta))/4)/b))^n3))^(-1/n1) if (rT > r), r = rT, endif fTheta = fTheta + 2*#pi endwhile float fIndex = (fPointDist/((r)*(fMaxDist/fRMax)))/@fScale ; Ridges fIndex = fIndex - fRA/100*real(sin(fTheta*fRF*2*#pi)) return fIndex endfunc private: float a float b float m float n1 float n2 float n3 float fTw ; Twist float fRA ; Ridges Amp float fRF ; Ridges Freq float fWA ; Waves Amp float fWF ; Waves Freq float fDP ; Vary wave by distance (Distance Power) int s ; Sweeps float fMaxDist float fInc float fRMin float fRMax default: title = "SSG" int param iVersion default = 1 visible = false endparam heading Caption="Shape Parameters" endheading param enShape caption = "Base Shape" enum="Shape #0" "Shape #1: Null" "Shape #2" "Shape #3" "Shape #4" \ "Shape #5" "Shape #6" "Shape #7" "Shape #8" "Shape #9" \ "Shape #10" "Shape #11" "Shape #12" "Shape #13" "Shape #14" \ "Shape #15" "Shape #16" "Shape #17" "Shape #18" "Shape #19" \ "Shape #20" "Shape #21" "Shape #22" "Shape #23" "Shape #24" \ "Shape #25" "Shape #26" "Shape #27" "Shape #28" "Shape #29" \ "Shape #30" "Shape #31" "Shape #32" "Shape #33" "Shape #34" \ "Shape #35" "Shape #36" "Shape #37" "Shape #38" "Shape #39" \ "Shape #40" "Shape #41" "Shape #42" "Shape #43" "Shape #44" \ "Shape #45" "Shape #46" "Shape #47" "Shape #48" "Shape #49" \ "Shape #50" "Shape #51" "Shape #52" "Shape #53" "Shape #54" \ "Shape #55" "Shape #56" "Shape #57" "Shape #58" "Shape #59" \ "Shape #60" "Shape #61" "Shape #62" "Shape #63" "Shape #64" \ "Shape #65" "Shape #66" "Shape #67" "Shape #68" "Shape #69" \ "Shape #70" "Shape #71" "Shape #72" "Shape #73" "Shape #74" \ "Shape #75" "Shape #76" "Shape #77" "Shape #78" "Shape #79" \ "Shape #80" "Shape #81" "Shape #82" "Shape #83" "Shape #84" \ "Shape #85" "Shape #86" "Shape #87" "Shape #88" "Shape #89" \ "Shape #90" "Shape #91" "Shape #92" "Shape #93" "Shape #94" \ "Shape #95" "Shape #96" "Shape #97" "Shape #98" "Shape #99" default = 0 endparam float param a caption="a +/-" default = 0 endparam float param b caption="b +/-" default = 0 endparam float param m caption="m +/-" default = 0 hint="Increasing value tends to increase the number of 'arms' or 'lobes' in the shape." endparam float param n1 caption="n1 +/-" default = 0 endparam float param n2 caption="n2 +/-" default = 0 endparam float param n3 caption="n3 +/-" default = 0 endparam int param iSweeps Caption="Sweeps" default = 0 min=0 max=100 endparam heading Caption="Shape Modifiers" endheading float param fStretchXY Caption = "Stretch (X/Y)" default = 1.0 hint="Changes the aspect ratio of the shape." endparam float param fRotation Caption = "Rotation (Radians)" default = 0 hint="Rotates the shape from -2*pi to 2*pi degrees" max = 6.283 min = -6.283 endparam float param fScale Caption = "Scale" default = 1.0 hint="Scales the shape" min = .00001 endparam float param fTwist Caption = "Twist +/-" default = 0.0 hint="Twists the shape" endparam func funcTwist caption = "Twist Function" default = ident() hint="Varies the amount of twist by the function applied to the distance" endfunc float param fRidgesFreq Caption = "Ridges Frequency +/-" default = 0.0 endparam float param fRidgesAmp Caption = "Ridges Amplitude +/-" default = 0 endparam float param fWaveFreq Caption = "Waves Frequency +/-" default = 0 endparam float param fWaveAmp Caption = "Waves Amplitude +/-" default = 0 endparam float param fDistPower Caption = "Vary Wave by Distance +/-" default = 0.0 hint="The higher the value, the less waviness in the center of the flower. \ Negative values push the waviness to the center" endparam func funcShapeMod1 caption = "Shape Modify 1" default = ident() endfunc func funcShapeMod2 caption = "Shape Modify 2" default = ident() endfunc } ;============================================================ ; ; F L O W E R ; ;============================================================ class RKB_TrapShapeFlower(common.ulb:TrapShape) { ; An extended version of an n-leaved rose (pinch) shape - There are ; 60+ base shapes hard coded with the parameters being delta values ; from the base shapes. public: func RKB_TrapShapeFlower(Generic pparent) TrapShape.TrapShape(pparent) ; True if function list is set to 'ident' bTwstF = (@funcTwist (1.5) == 1.5) bMF1 = (@funcShapeMod1(1.5) == 1.5) bMF2 = (@funcShapeMod2(1.5) == 1.5) endfunc float func Iterate(complex pz) float fTheta = atan2(pz) float fPointDist = cabs(pz) if fTheta < 0 fTheta = fTheta + 2*#pi endif ; This is a chunk of old-style, precedural code in a ; class wrapper. I'm keeping it this way so that I ; only have one body of code to maintain. ;------ Code shared with ucl ------ ; --- Initialize default values --- float fLbs = 0.0 ; Lobes float fTwst = 0.0 ; Twist float fTwstF = fPointDist ; Twist Function float fBlg = 1.0 ; Buldge float fThk = 1.0 ; Lobe Thickness float fBlm = 1.0 ; Bloom float fWF = 0.0 ; Wave Frequency float fWA = 0.0 ; Wave Amplitude float fWS = 0.0 ; Wave Skew float fRF = 0.0 ; Ridges Frequency float fRA = 0.0 ; Ridges Amplitude float fOsc = 0.0 ; Oscillator Frequency int iMF1 = 0 ; Index for Mod Function 1 float fO = sin(fTheta*(@fOscFreq)) float fMF1 = 1111.1 ; Mod Function 1 [HACK Alert] float fMF2 = fTheta ; Mod Function 2 ;--- Setup values for Predefined shapes. if (@enShape == "Shape #0") fLbs = 4 elseif (@enShape == "Shape #1: Null") if (@fLobes == 0), fLbs = 1.0, endif ; Force at leaset one lobe elseif (@enShape == "Shape #2") fLbs = 3, fRF = 8, fRA = 1 elseif (@enShape == "Shape #3") fLbs = 5, fThk = .2 elseif (@enShape == "Shape #4") fLbs = 16, fThk = 5 elseif (@enShape == "Shape #5") fLbs = 16, fThk = 5, iMF1 = 1 elseif (@enShape == "Shape #6") fLbs = 16, fThk = 5, iMF1 = 2 elseif (@enShape == "Shape #7") fLbs = 12, fThk = 5, iMF1 = 3 elseif (@enShape == "Shape #8") fLbs = 6, fThk = 10, fRF = 12, fRA = 1 elseif (@enShape == "Shape #9") fLbs = 5, fRF = 5, fRA = 3 elseif (@enShape == "Shape #10") fLbs = 3, fThk = 4, fRF = 8, fRA = 2, fTwst = 1.8, iMF1 = 4 elseif (@enShape == "Shape #11") fLbs = 3, fRF = 4, fRA = 15, fWF = 2, fWA = 4 elseif (@enShape == "Shape #12") fLbs = 3, fBlm = .4, fRF = 4, fRA = 15, fWF = 2, fWA = 4, fTwst = .2, fOsc = 44, iMF1 = 3 elseif (@enShape == "Shape #13") fLbs = 2, fBlm = 1.6, fBlg = .5, fTwst = 2, fTwstF = exp(fPointDist) elseif (@enShape == "Shape #14") fLbs = 24, fTwst = 1.5 elseif (@enShape == "Shape #15") fLbs = 5, fThk = 3, fBlg = .8, iMF1 = 6 elseif (@enShape == "Shape #16") fLbs = 3, fBlm = 3, fBlg = 2.4, fTwst = -2.3, fOsc = 3 elseif (@enShape == "Shape #17") fLbs = 4, fThk = .1, fBlg=.5, iMF1 = 5 elseif (@enShape == "Shape #18") fLbs = 2, fThk = 5, fBlg = .6, fTwst = 2.5, fTwstF = log(fPointDist), fRF = 12, fRA=4 elseif (@enShape == "Shape #19") fLbs = 6, fMF2 = sqr(fTheta) elseif (@enShape == "Shape #20") fLbs = 20, fBlm = 2, fThk = 3.7, fBlg = 1.7, fRF = 12, fRA = 2 elseif (@enShape == "Shape #21") fLbs = 16, fWF = 4, fWA = 4 elseif (@enShape == "Shape #22") fLbs = 3, fBlg=-1, fTwst = 1.8, fRF=8, fRA=2, iMF1 = 1 elseif (@enShape == "Shape #23") fLbs = 16, fBlg = .5, fTwst = 3 elseif (@enShape == "Shape #24") fLbs = 32, fTwst = 1.5, fWF = 12, fWA=4, fOsc = 64 elseif (@enShape == "Shape #25") fLbs = 3, fBlm = 3, fTwst = -2.3, fTwstF = sqr(fPointDist), fOsc = 3, fRF=12, fRA=4 elseif (@enShape == "Shape #26") fLbs = 32, fBlg=.5 elseif (@enShape == "Shape #27") fLbs = 3, fBlg=-1, fTwst = 1.8, fRF=8, fRA=2, iMF1 = 1, fMF2 = log(fTheta) elseif (@enShape == "Shape #28") fLbs = 16, fBlg = .5, fTwst = 3, fWF = 8, fWA = 12 elseif (@enShape == "Shape #29") fLbs = 4, fTwst = 1.5, fWF = 12, fWA=4, fOsc = 64 elseif (@enShape == "Shape #30") fLbs = 1, fTwst = 10, fBlg = .5, fBlm = 1.2 elseif (@enShape == "Shape #31") fLbs = 16, fWF = 4, fWA = 4, fBlg = .47, iMF1 = 6 elseif (@enShape == "Shape #32") fLbs = 5, fRF = 12, fRA = 2, fOsc = 5, iMF1 = 3 elseif (@enShape == "Shape #33") fLbs = 32, fThk = 3, fBlg = 2, fTwst = .5, fTwstF = sqr(fPointDist), fWF = 4, fWA = 2, fOsc = 32, iMF1 = 8 elseif (@enShape == "Shape #34") fLbs = 5, fTwst = .5, fTwstF = exp(fPointDist), fRF = 12, fRA = 2, fOsc = 5, iMF1 = 3, fWF = 2, fWA= 2 elseif (@enShape == "Shape #35") fLbs = 2, fBlm = .6, fThk = .1, fBlg = 1.2, fTwst = 2.0, fTwstF = cotanh(fPointDist), fWF=3, fWA = 12, iMF1 = 1 elseif (@enShape == "Shape #36") fLbs = 2, fThk = 5, fBlg = .6, fBlm = 1.5, fTwst = 2.5, fTwstF = log(fPointDist), fRF = 12, fRA=4, fWF = 22, fWA = 8 elseif (@enShape == "Shape #37") fLbs = 5, fThk = 11, fBlg = .7, fRF = 4, fRA = 12 elseif (@enShape == "Shape #38") fLbs = 32, fThk = 3, fBlg = 2, fTwst = 1, fTwstF = sqr(fPointDist), fRF = 8, fRA = 24, fOsc = 32, iMF1 = 8 elseif (@enShape == "Shape #39") fLbs = 5, fRF = 12, fRA = 2, fOsc = 5, iMF1 = 7, fWF = 2, fWA= 2 elseif (@enShape == "Shape #40") fLbs = 3, fBlm = 1.75, fTwst = 1, fTwstF = real(asin(fPointDist + flip(0))), fOsc = 44, iMF1 = 9 elseif (@enShape == "Shape #41") fLbs = 5, fThk = 3, fBlm = 1.4, fBlg = .4, fTwst = -1, fMF2 = sin(fTheta), iMF1 = 10 elseif (@enShape == "Shape #42") fLbs = 5, fThk = -2.5, fBlg = 0.5, fTwst = 3, fTwstF = sin(fPointDist), fRF = 11, fRA = 4, fWF = 4, fWA = 5 elseif (@enShape == "Shape #43") fLbs = 32, fTwst = 1.5, fWF = 12, fWA=4 elseif (@enShape == "Shape #44") fLbs = 6, fWA=4, iMF1 = 6, fMF2 = log(fTheta) elseif (@enShape == "Shape #45") fLbs = 3, fThk = -1.4, fTwst = 3, fTwstF = cotanh(fPointDist) elseif (@enShape == "Shape #46") fLbs = 2, fBlm = .6, fBlg = 1.8, fThk = -1.4, fTwst = 3, fTwstF = 0, fRF = 12, fRA=12 elseif (@enShape == "Shape #47") fLbs = 2, fThk = -.01, fTwst = 3, fRF = 12, fRA=12 elseif (@enShape == "Shape #48") fLbs = 3, fBlm = 10, fBlg = -2, fRF = 4, fRA = 4, fWF = 4, fWA = 4 elseif (@enShape == "Shape #49") fLbs = 6, fWA=4, iMF1 = 6, fMF2 = log(fTheta), fTwst = 3 elseif (@enShape == "Shape #50") fLbs = 2, fBlm = .6, fBlg = 1.8, fThk = -1.4, fTwst = 3, fOsc = 2, fRF = 12, fRA=10, fMF2 = cos(fTheta) elseif (@enShape == "Shape #51") fLbs = 3, fBlm = 1.5, fBlg = -.85, fTwst = 1, fRF = 4, fRA = 4, fWF = 4, fWA = 4, iMF1 = 1 elseif (@enShape == "Shape #52") fLbs = 2.5, fRF = 4, fRA = 1, fMF2 = sqr(fTheta) elseif (@enShape == "Shape #53") fLbs = 6, fBlm = 24, fThk = .1, fBlg = 2, fTwst = 5, fTwstF = sin(fPointDist), fOsc = 6 elseif (@enShape == "Shape #54") fLbs = 3, fThk = -1.4, fTwst = 3, fTwstF = atan(fPointDist), fOsc = 3 elseif (@enShape == "Shape #55") fLbs = 6, fWA=4, iMF1 = 6, fMF2 = log(fTheta), fTwst = 3, fTwstF = cos(fPointDist) elseif (@enShape == "Shape #56") fLbs = 2, fBlm = .6, fBlg = 1.8, fThk = -1.4, fTwst = 3, fOsc = 2, fRF = 12, fRA=10, fMF2 = 0 elseif (@enShape == "Shape #57") fLbs = 3, fBlm = 10, fBlg = -2, fRF = 4, fRA = 4, fWF = 4, fWA = 4, iMF1 = 1 elseif (@enShape == "Shape #58") fLbs = 3, fBlg = 2, fRF = 4, fRA = 11, fWF = 4, fWA = 22, fWS = -1 elseif (@enShape == "Shape #59") fLbs = 3, fTwst = 1, fRF = 12, fRA = 4, fWF = 4, fWA = 22, fOsc = 3, iMF1 = 1 elseif (@enShape == "Shape #60") fLbs = 4, fThk = .2, fBlm = 1.5, fWF = 5, fWA = 5, fWS = -1.5 endif ; Avoid divide by zero if ((fBlm + @fBloom) == 0) fBlm = fBlm + .0001 endif ; Shape mod 2 if (bMF2) fTheta = fMF2 else fTheta = real(@funcShapeMod2(fTheta)) endif ; Twist function if (!bTwstF) fTwstF = real(@funcTwist(fPointDist)) endif ;Twist fTheta = fTheta + fTwstF * (fTwst + @fTwist) if (fTheta < 0), fTheta = fTheta+2*#pi, endif if (fTheta > 2*#pi), fTheta = fTheta-2*#pi, endif ;Bulge float fPointDist = fPointDist^(@fBulge + fBlg) ;Waves fTheta = fTheta + (fWA + @fWaveAmp)/100*fPointDist^(fWS + @fWaveSkew)*real(sin(fPointDist*(fWF + @fWaveFreq)*2*#pi)) ;Oscillator float fO = sin(fTheta*(fOsc + @fOscFreq)) ; Shape mod 1 if (!bMF1) ; Overriden if (fO > 0) fMF1 = real(@funcShapeMod1(abs(cos((fLbs + @fLobes)*fTheta*0.5)))) else fMF1 = real(@funcShapeMod1(abs(sin((fLbs + @fLobes)*fTheta*0.5)))) endif else ; Base shape if (fO > 0) float fT = abs(cos((fLbs + @fLobes)*fTheta*0.5)) else float fT = abs(sin((fLbs + @fLobes)*fTheta*0.5)) endif if (iMF1 == 0) ; ident fMF1 = fT elseif (iMF1 == 1) ; exp fMF1 = exp(fT) elseif (iMF1 == 2) ; acos fMF1 = acos(fT) elseif (iMF1 == 3) ; atanh fMF1 = atanh(fT) elseif (iMF1 == 4) ; log fMF1 = log(fT) elseif (iMF1 == 5) ; cos fMF1 = cos(fT) elseif (iMF1 == 6) ; asin fMF1 = asin(fT) elseif (iMF1 == 7) ; cotanh fMF1 = cotanh(fT) elseif (iMF1 == 8) ; recip fMF1 = recip(fT) elseif (iMF1 == 9) ; tan fMF1 = tan(fT) elseif (iMF1 == 10) ; sin fMF1 = sin(fT) endif endif ; Calc shape float fIndex = real((((fPointDist)))) / fMF1^(1/(fThk + @fThick))/(fBlm + @fBloom) ; Ridges fIndex = fIndex - (fRA + @fRidgesAmp)/100*real(sin(fTheta*(fRF + @fRidgesFreq)*2*#pi)) ;------ end shared ucl ------ return fIndex endfunc private: ; True if function list is set to 'ident' bool bTwstF bool bMF1 bool bMF2 default: title = "Flower" param enShape caption = "Base Shapes" enum="Shape #0" "Shape #1: Null" "Shape #2" "Shape #3" "Shape #4" \ "Shape #5" "Shape #6" "Shape #7" "Shape #8" "Shape #9" \ "Shape #10" "Shape #11" "Shape #12" "Shape #13" "Shape #14" \ "Shape #15" "Shape #16" "Shape #17" "Shape #18" "Shape #19" \ "Shape #20" "Shape #21" "Shape #22" "Shape #23" "Shape #24" \ "Shape #25" "Shape #26" "Shape #27" "Shape #28" "Shape #29" \ "Shape #30" "Shape #31" "Shape #32" "Shape #33" "Shape #34" \ "Shape #35" "Shape #36" "Shape #37" "Shape #38" "Shape #39" \ "Shape #40" "Shape #41" "Shape #42" "Shape #43" "Shape #44" \ "Shape #45" "Shape #46" "Shape #47" "Shape #48" "Shape #49" \ "Shape #50" "Shape #51" "Shape #52" "Shape #53" "Shape #54" \ "Shape #55" "Shape #56" "Shape #57" "Shape #58" "Shape #59" \ "Shape #60" ; "Shape #61" "Shape #62" "Shape #63" "Shape #64" \ ; "Shape #65" "Shape #66" "Shape #67" "Shape #68" "Shape #69" default = 0 endparam float param fLobes caption = "Lobes +/-" default = 0 hint = "The number of 'petals' in the 'flower.'" endparam float param fThick Caption = "Lobe thickness +/-" default = 0.0 hint="Varies the thickness of individual petals." endparam float param fBloom Caption = "Bloom +/-" default = 0.0 hint="Scales the shape sometimes revealing/expanding details." endparam float param fBulge Caption = "Bulge +/-" default = 0.0 hint = "Buldge out the shape." endparam float param fTwist caption = "Twist +/-" default = 0 hint = "Spirals the petals." endparam func funcTwist caption = "Twist function override" default = ident() hint="Varies the amount of twist by the function applied to the distance." endfunc float param fRidgesFreq Caption = "Ridges Frequency +/-" default = 0.0 hint = "Adds ridges/lines to the petals." endparam float param fRidgesAmp Caption = "Ridges Power +/-" default = 0.0 endparam float param fWaveFreq Caption = "Waves Frequency +/-" default = 0.0 hint = "Adds waves to the petals." endparam float param fWaveAmp Caption = "Waves Power +/-" default = 0.0 endparam float param fWaveSkew Caption = "Wave Dist. Skew +/-" default = 0.0 hint="Skews waviness to the inside or outside of the flower." endparam float param fOscFreq Caption = "Oscillator Frequency +/-" default = 0.0 hint="Combines two out-of-phase versions of the flower. Values equal to the \ number of lobes and values in the range 40-200 are often interesting." endparam func funcShapeMod1 caption = "Shape Modify 1 override." default = ident() endfunc func funcShapeMod2 caption = "Shape Modify 2 override." default = ident() endfunc int param iVersion default = 1 visible = false endparam } ;============================================================ ; ; D E F O R M S H A P E ; ;============================================================ class RKB_TrapShapeDeformShape(common.ulb:TrapShape) { ; A shape plug-in which transforms other shapes including twists, ridges, ; and waves public: import "dmj5.ulb" func RKB_TrapShapeDeformShape(Generic pparent) TrapShape(pparent) ; True if function list is set to 'ident' Shape = new @shape(this) endfunc float func Iterate(complex pz) fTheta = atan2(pz) fR = cabs(pz) ; Twist fTheta = fTheta + real(@funcTwist(fR)) * @fTwist ;Bulge fR = fR^@fBulge ;Waves fTheta = fTheta + @fWaveAmp/100*fR^@fWaveSkew*sin(fR*@fWaveFreq*2*#pi) ;Oscillator if (sin(fTheta*@fOscFreq) > 0) fTheta = fTheta + @fOscPhase/180*#pi endif fX = fR*cos(fTheta) fY = fR*sin(fTheta) tz = fX + flip(fY) fIndex = Shape.Iterate(tz) ; Scale/Bloom the shape fIndex = fIndex / @fBloom ; Ridges fIndex = fIndex - (@fRidgesAmp)/100*real(sin(fTheta*(@fRidgesFreq)*2*#pi)) return fIndex endfunc private: TrapShape Shape complex tz float fX float fY float fR float fTheta float fIndex default: title = "Deform Shape" int param iVersion default = 1 visible = false endparam TrapShape param shape caption = "Trap Shape" ; default = RKB_TrapShapeFlower default = DMJ_TrapShapeAstroid hint = "Selects a shape to be used for the deformations." endparam float param fBloom Caption = "Bloom" default = 1.0 hint = "Scales the shape often revealing more detail." endparam float param fBulge Caption = "Bulge" default = 1.0 hint = "Buldge out the shape. Negative values tend to invert the shape." endparam float param fTwist caption = "Twist" default = 0 hint = "Positive values twist clockwise, negative values counter clockwise." endparam func funcTwist caption = "Twist function override" default = ident() hint="Varies the amount of twist by the function applied to the distance." endfunc float param fRidgesFreq Caption = "Ridges Frequency" default = 0.0 hint = "Adds ridges/lines to the shape." endparam float param fRidgesAmp Caption = "Ridges Power" default = 0.0 endparam float param fWaveFreq Caption = "Waves Frequency" default = 0.0 hint = "Adds waves to the shape." endparam float param fWaveAmp Caption = "Waves Power" default = 0.0 endparam float param fWaveSkew Caption = "Wave Skew" default = 0.0 hint="Skews waviness. Positive numbers push the waviness to the outside \ of the shape. Negative numbers push the waviness to the inside." endparam float param fOscFreq Caption = "Oscillator Frequency" default = 0.0 hint="Combines two out-of-phase versions of the shape." endparam float param fOscPhase Caption = "Oscillator Phase" default = 45.0 endparam } ;============================================================ ; ; S H A P E C O L L E C T I O N ; ;============================================================ class RKB_TrapShapeCollection(common.ulb:TrapShape) { ; A shape plug-in which combines all shape classes including textures ; into a single list (as of 7/4/08) public: import "dmj5.ulb" import "kcc5.ulb" import "mmf.ulb" import "mt.ulb" import "reb.ulb" import "standard.ulb" import "rkb.ulb" func RKB_TrapShapeCollection(Generic pparent) TrapShape.TrapShape(pparent) ;dmj if (@enShape == "dmj5 Astroid") Shape = new @p_DMJ_TrapShapeAstroid(this) elseif (@enShape == "dmj5 Cross") Shape = new @p_DMJ_TrapShapeCross(this) elseif (@enShape == "dmj5 Egg") Shape = new @p_DMJ_TrapShapeEgg(this) elseif (@enShape == "dmj5 fBm") Shape = new @p_DMJ_TrapShapefBm(this) elseif (@enShape == "dmj5 Flat Texture") Shape = new @p_DMJ_TrapShapeFlat(this) elseif (@enShape == "dmj5 Hyperbola") Shape = new @p_DMJ_TrapShapeHyperbola(this) elseif (@enShape == "dmj5 Hypercross") Shape = new @p_DMJ_TrapShapeHypercross(this) elseif (@enShape == "dmj5 Lines") Shape = new @p_DMJ_TrapShapeLines(this) elseif (@enShape == "dmj5 Pinch") Shape = new @p_DMJ_TrapShapePinch(this) elseif (@enShape == "dmj5 Point") Shape = new @p_DMJ_TrapShapePoint(this) elseif (@enShape == "dmj5 Rectangle") Shape = new @p_DMJ_TrapShapeRectangle(this) ; kcc5 elseif (@enShape == "kcc5 Ampersand Trap") Shape = new @p_KCC_AmpersandTrap(this) elseif (@enShape == "kcc5 Angle Function 1") Shape = new @p_KCC_AngleFunction1Trap(this) elseif (@enShape == "kcc5 Angle Function 2") Shape = new @p_KCC_AngleFunction2Trap(this) elseif (@enShape == "kcc5 ArcTangent Trap") Shape = new @p_KCC_ArcTangentTrap(this) elseif (@enShape == "kcc5 Atan Trap") Shape = new @p_KCC_AtanTrap(this) elseif (@enShape == "kcc5 Balls Trap") Shape = new @p_KCC_BallsTrap(this) elseif (@enShape == "kcc5 Bean Curve Trap") Shape = new @p_KCC_BeanCurveTrap(this) elseif (@enShape == "kcc5 Bicorn Curve Trap") Shape = new @p_KCC_BicornCurveTrap(this) elseif (@enShape == "kcc5 Bicuspid Curve Trap") Shape = new @p_KCC_BicuspidCurveTrap(this) elseif (@enShape == "kcc5 Bifoliate Trap") Shape = new @p_KCC_BifoliateTrap(this) elseif (@enShape == "kcc5 Bifolium Trap") Shape = new @p_KCC_BifoliumTrap(this) elseif (@enShape == "kcc5 Blobs Trap") Shape = new @p_KCC_BlobsTrap(this) elseif (@enShape == "kcc5 Bow Trap") Shape = new @p_KCC_BowTrap(this) elseif (@enShape == "kcc5 Bubbles Trap") Shape = new @p_KCC_BubblesTrap(this) elseif (@enShape == "kcc5 Butterfly Curve Trap") Shape = new @p_KCC_ButterflyCurveTrap(this) elseif (@enShape == "kcc5 Cassini Ovals Trap") Shape = new @p_KCC_CassiniOvalsTrap(this) elseif (@enShape == "kcc5 Circles Trap") Shape = new @p_KCC_CirclesTrap(this) elseif (@enShape == "kcc5 Cissoid of Diocles Trap") Shape = new @p_KCC_CissoidOfDioclesTrap(this) elseif (@enShape == "kcc5 Cochleoid Trap") Shape = new @p_KCC_CochleoidTrap(this) elseif (@enShape == "kcc5 Cocked Hat Trap") Shape = new @p_KCC_CockedHatTrap(this) elseif (@enShape == "kcc5 Conchoid of Nicomedes Trap") Shape = new @p_KCC_ConchoidOfNicomedesTrap(this) elseif (@enShape == "kcc5 Cones Trap") Shape = new @p_KCC_ConesTrap(this) elseif (@enShape == "kcc5 Cruciform Trap") Shape = new @p_KCC_CruciformTrap(this) elseif (@enShape == "kcc5 Curls Trap") Shape = new @p_KCC_CurlsTrap(this) elseif (@enShape == "kcc5 Devil's Curve Trap") Shape = new @p_KCC_DevilsCurveTrap(this) elseif (@enShape == "kcc5 Diamond Trap") Shape = new @p_KCC_DiamondTrap(this) elseif (@enShape == "kcc5 Dimpled Spheroids Trap") Shape = new @p_KCC_DimpledSpheroidsTrap(this) elseif (@enShape == "kcc5 Dumbbell Curve Trap") Shape = new @p_KCC_DumbbellCurveTrap(this) elseif (@enShape == "kcc5 Dürer's Conchoid Trap") Shape = new @p_KCC_DurersConchoidTrap(this) elseif (@enShape == "kcc5 Eight Curve Trap") Shape = new @p_KCC_EightCurveTrap(this) elseif (@enShape == "kcc5 Flexballs Trap") Shape = new @p_KCC_FlexballsTrap(this) elseif (@enShape == "kcc5 Happy Accident Trap") Shape = new @p_KCC_HappyAccidentTrap(this) elseif (@enShape == "kcc5 Harlequin Trap") Shape = new @p_KCC_HarlequinTrap(this) elseif (@enShape == "kcc5 Hyperbola Trap") Shape = new @p_KCC_HyperbolaTrap(this) elseif (@enShape == "kcc5 Kappa Curve Trap") Shape = new @p_KCC_KappaCurveTrap(this) elseif (@enShape == "kcc5 Keppler's Folium Trap") Shape = new @p_KCC_KepplersFoliumTrap(this) elseif (@enShape == "kcc5 Keratoid Cusp Trap") Shape = new @p_KCC_KeratoidCuspTrap(this) elseif (@enShape == "kcc5 Knot Curve Trap") Shape = new @p_KCC_KnotCurveTrap(this) elseif (@enShape == "kcc5 Lemniscate Corrected Trap") Shape = new @p_KCC_LemniscateCorrectedTrap(this) elseif (@enShape == "kcc5 Lemniscate Trap") Shape = new @p_KCC_LemniscateTrap(this) elseif (@enShape == "kcc5 Limacon Trap") Shape = new @p_KCC_LimaconTrap(this) elseif (@enShape == "kcc5 Line Trap") Shape = new @p_KCC_LineTrap(this) elseif (@enShape == "kcc5 Links Curve Trap") Shape = new @p_KCC_LinksCurveTrap(this) elseif (@enShape == "kcc5 Maltese Cross Curve Trap") Shape = new @p_KCC_MalteseCrossCurveTrap(this) elseif (@enShape == "kcc5 Parabola Trap") Shape = new @p_KCC_ParabolaTrap(this) elseif (@enShape == "kcc5 Pear-Shaped Curve Trap") Shape = new @p_KCC_PearShapedCurveTrap(this) elseif (@enShape == "kcc5 Petals Trap") Shape = new @p_KCC_PetalsTrap(this) elseif (@enShape == "kcc5 Piriform Trap") Shape = new @p_KCC_PiriformTrap(this) elseif (@enShape == "kcc5 Polygon Trap") Shape = new @p_KCC_PolygonTrap(this) elseif (@enShape == "kcc5 Quadrifolium Trap") Shape = new @p_KCC_QuadrifoliumTrap(this) elseif (@enShape == "kcc5 Ring Segments Trap") Shape = new @p_KCC_RingSegmentsTrap(this) elseif (@enShape == "kcc5 Rings Trap") Shape = new @p_KCC_RingsTrap(this) elseif (@enShape == "kcc5 Rose Curve Trap") Shape = new @p_KCC_RoseCurveTrap(this) elseif (@enShape == "kcc5 Serpentine Curve Trap") Shape = new @p_KCC_SerpentineCurveTrap(this) elseif (@enShape == "kcc5 sin(x)/x Trap") Shape = new @p_KCC_sinXTrap(this) elseif (@enShape == "kcc5 Sinus + Cosinus Trap") Shape = new @p_KCC_SinusCosinusTrap(this) elseif (@enShape == "kcc5 Spheres Trap") Shape = new @p_KCC_SpheresTrap(this) elseif (@enShape == "kcc5 Spheroids Trap") Shape = new @p_KCC_SpheroidsTrap(this) elseif (@enShape == "kcc5 Spiral Trap") Shape = new @p_KCC_SpiralTrap(this) elseif (@enShape == "kcc5 Square Trap") Shape = new @p_KCC_SquareTrap(this) elseif (@enShape == "kcc5 Squares Trap") Shape = new @p_KCC_SquaresTrap(this) elseif (@enShape == "kcc5 Stalks Trap") Shape = new @p_KCC_StalksTrap(this) elseif (@enShape == "kcc5 Star of David Trap") Shape = new @p_KCC_StarOfDavidTrap(this) elseif (@enShape == "kcc5 Stirrup Curve Trap") Shape = new @p_KCC_StirrupCurveTrap(this) elseif (@enShape == "kcc5 Strange Shape Trap") Shape = new @p_KCC_StrangeShapeTrap(this) elseif (@enShape == "kcc5 Swastika Curve Trap") Shape = new @p_KCC_SwastikaCurveTrap(this) elseif (@enShape == "kcc5 Tangent Balls Trap") Shape = new @p_KCC_TangentBallsTrap(this) elseif (@enShape == "kcc5 Tangent Trap") Shape = new @p_KCC_TangentTrap(this) elseif (@enShape == "kcc5 Trefoil Trap") Shape = new @p_KCC_TrefoilTrap(this) elseif (@enShape == "kcc5 Trident of Descartes Trap") Shape = new @p_KCC_TridentOfDescartesTrap(this) elseif (@enShape == "kcc5 Trident Trap") Shape = new @p_KCC_TridentTrap(this) elseif (@enShape == "kcc5 Trifolium Trap") Shape = new @p_KCC_TrifoliumTrap(this) elseif (@enShape == "kcc5 Trisectrix of Maclaurin Trap") Shape = new @p_KCC_TrisectrixOfMaclaurinTrap(this) elseif (@enShape == "kcc5 Twisted Cross Trap") Shape = new @p_KCC_TwistedCrossTrap(this) elseif (@enShape == "kcc5 Two Ellipses Trap") Shape = new @p_KCC_TwoEllipsesTrap(this) elseif (@enShape == "kcc5 Witch of Agnesi Trap") Shape = new @p_KCC_WitchOfAgnesiTrap(this) ; mmf elseif (@enShape == "mmf Angles (of z)") Shape = new @p_MMF_TrapShapeAngle(this) elseif (@enShape == "mmf Angles (of z-zold or z-older)") Shape = new @p_MMF_TrapShapeOldAngles(this) elseif (@enShape == "mmf Centre of Curvature") Shape = new @p_MMF_TrapShapeCentreOfCurvature(this) elseif (@enShape == "mmf Curvature") Shape = new @p_MMF_TrapShapeCurvature(this) elseif (@enShape == "mmf Functions") Shape = new @p_MMF_TrapShapeFnz(this) elseif (@enShape == "mmf Orbitals") Shape = new @p_MMF_TrapShapeOrbitals(this) elseif (@enShape == "mmf Simple Vergence") Shape = new @p_MMF_TrapShapeSimpleVergence(this) elseif (@enShape == "mmf Triangle Inequality") Shape = new @p_MMF_TrapShapeTriangleInequality(this) ; mt elseif (@enShape == "mt Bump Maps Texture") Shape = new @p_MT_BumpMapsTexture(this) elseif (@enShape == "mt Butterfly") Shape = new @p_MT_TrapShapeButterfly(this) elseif (@enShape == "mt Cardioid") Shape = new @p_MT_TrapShapeCardioid(this) elseif (@enShape == "mt Crackle Texture") Shape = new @p_MT_CrackleTexture(this) elseif (@enShape == "mt Folium") Shape = new @p_MT_TrapShapeFolium(this) elseif (@enShape == "mt Gnarl Texture") Shape = new @p_MT_GnarlTexture(this) elseif (@enShape == "mt Gnarl") Shape = new @p_MT_TrapShapeGnarl(this) elseif (@enShape == "mt Harlequin") Shape = new @p_MT_TrapShapeHarlequin(this) elseif (@enShape == "mt Image Maps Texture") Shape = new @p_MT_ImageMapsTexture(this) elseif (@enShape == "mt Marble Texture") Shape = new @p_MT_MarbleTexture(this) elseif (@enShape == "mt Martin") Shape = new @p_MT_TrapShapeMartin(this) elseif (@enShape == "mt Perlin Noise 3D Texture") Shape = new @p_MT_PerlinNoise3DTexture(this) elseif (@enShape == "mt Perlin Noise Texture") Shape = new @p_MT_PerlinNoiseTexture(this) elseif (@enShape == "mt Popcorn Texture") Shape = new @p_MT_PopcornTexture(this) elseif (@enShape == "mt Popcorn") Shape = new @p_MT_TrapShapePopcorn(this) elseif (@enShape == "mt Rhodonea") Shape = new @p_MT_TrapShapeRhodonea(this) elseif (@enShape == "mt Rose") Shape = new @p_MT_TrapShapeRose(this) elseif (@enShape == "mt Sextic") Shape = new @p_MT_TrapShapeSextic(this) elseif (@enShape == "mt Sine") Shape = new @p_MT_TrapShapeSine(this) elseif (@enShape == "mt Transform") Shape = new @p_MT_TrapShape_Transform(this) elseif (@enShape == "mt Turbulence Texture") Shape = new @p_MT_TurbulenceTexture(this) elseif (@enShape == "mt Voronoi Texture") Shape = new @p_MT_VoronoiTexture(this) elseif (@enShape == "mt Yorke Texture") Shape = new @p_MT_YorkeTexture(this) ; reb elseif (@enShape == "reb 4D Orbit") Shape = new @p_REB_TrapShape4DOrbit(this) elseif (@enShape == "reb Ampersand") Shape = new @p_REB_TrapShapeAmpersand(this) elseif (@enShape == "reb Arachnida 1") Shape = new @p_REB_TrapShapeArachnida1(this) elseif (@enShape == "reb Arachnida 2") Shape = new @p_REB_TrapShapeArachnida2(this) elseif (@enShape == "reb Archimedes") Shape = new @p_REB_TrapShapeArchimedes(this) elseif (@enShape == "reb Astroid REB") Shape = new @p_REB_TrapShapeREBAstroid(this) elseif (@enShape == "reb Atzema Spiral") Shape = new @p_REB_TrapShapeAtzemaSpiral(this) elseif (@enShape == "reb Bean") Shape = new @p_REB_TrapShapeBean(this) elseif (@enShape == "reb Bicorn") Shape = new @p_REB_TrapShapeBicorn(this) elseif (@enShape == "reb Bicuspid") Shape = new @p_REB_TrapShapeBicuspid(this) elseif (@enShape == "reb Bifolium") Shape = new @p_REB_TrapShapeBifolium(this) elseif (@enShape == "reb Bow") Shape = new @p_REB_TrapShapeBow(this) elseif (@enShape == "reb Butterfly") Shape = new @p_REB_TrapShapeButterfly(this) elseif (@enShape == "reb Cardiod") Shape = new @p_REB_TrapShapeCardiod(this) elseif (@enShape == "reb Cassini Ovals") Shape = new @p_REB_TrapShapeCassiniOvals(this) elseif (@enShape == "reb Cayley's Sextic") Shape = new @p_REB_TrapShapeCayleysSextic(this) elseif (@enShape == "reb Ceil Floor") Shape = new @p_REB_TrapShapeCeilFloor(this) elseif (@enShape == "reb Cf Plus") Shape = new @p_REB_TrapShapeCfPlus(this) elseif (@enShape == "reb Chip 2") Shape = new @p_REB_TrapShapeChip2(this) elseif (@enShape == "reb Chip") Shape = new @p_REB_TrapShapeChip(this) elseif (@enShape == "reb Circle Catacaustic") Shape = new @p_REB_TrapShapeCircleCatacaustic(this) elseif (@enShape == "reb Circle") Shape = new @p_REB_TrapShapeCircle(this) elseif (@enShape == "reb Cissoid of Diocles") Shape = new @p_REB_TrapShapeCissoidofDiocles(this) elseif (@enShape == "reb Cochleoid") Shape = new @p_REB_TrapShapeCochleoid(this) elseif (@enShape == "reb Conchoid") Shape = new @p_REB_TrapShapeConchoid(this) elseif (@enShape == "reb CosMartin 2") Shape = new @p_REB_TrapShapeCosMartin2(this) elseif (@enShape == "reb CosMartin") Shape = new @p_REB_TrapShapeCosMartin(this) elseif (@enShape == "reb Cotes' Spiral") Shape = new @p_REB_TrapShapeCotesSpiral(this) elseif (@enShape == "reb Cruciform") Shape = new @p_REB_TrapShapeCruciform(this) elseif (@enShape == "reb Curtate Cycloid") Shape = new @p_REB_TrapShapeCurtateCycloid(this) elseif (@enShape == "reb Cycloid of Seva") Shape = new @p_REB_TrapShapeCycloidofSeva(this) elseif (@enShape == "reb Cycloid") Shape = new @p_REB_TrapShapeCycloid(this) elseif (@enShape == "reb Deltoid Catacaustic") Shape = new @p_REB_TrapShapeDeltoidCatacaustic(this) elseif (@enShape == "reb Devils Curve") Shape = new @p_REB_TrapShapeDevilsCurve(this) elseif (@enShape == "reb Diamond") Shape = new @p_REB_TrapShapeDiamond(this) elseif (@enShape == "reb Dipole Curve") Shape = new @p_REB_TrapShapeDipoleCurve(this) elseif (@enShape == "reb Dumbell Curve") Shape = new @p_REB_TrapShapeDumbellCurve(this) elseif (@enShape == "reb Eight Curve") Shape = new @p_REB_TrapShapeEightCurve(this) elseif (@enShape == "reb Ellipse Catacaustic") Shape = new @p_REB_TrapShapeEllipseCatacaustic(this) elseif (@enShape == "reb Ellipse Evolute") Shape = new @p_REB_TrapShapeEllipseEvolute(this) elseif (@enShape == "reb Epicycloid") Shape = new @p_REB_TrapShapeEpicycloid(this) elseif (@enShape == "reb Epispiral") Shape = new @p_REB_TrapShapeEpispiral(this) elseif (@enShape == "reb Fibonacci") Shape = new @p_REB_TrapShapeFibonacci(this) elseif (@enShape == "reb Folium Of Descartes") Shape = new @p_REB_TrapShapeFoliumOfDescartes(this) elseif (@enShape == "reb Gear Curve") Shape = new @p_REB_TrapShapeGearCurve(this) elseif (@enShape == "reb General Textures") Shape = new @p_REB_TrapShapeGenTexture(this) elseif (@enShape == "reb Gingerbread") Shape = new @p_REB_TrapShapeGingerbread(this) elseif (@enShape == "reb Gnarl Textures") Shape = new @p_REB_TrapShapeGnarlTexture(this) elseif (@enShape == "reb Henon 2") Shape = new @p_REB_TrapShapeHenon2(this) elseif (@enShape == "reb Henon") Shape = new @p_REB_TrapShapeHenon(this) elseif (@enShape == "reb Hipopede") Shape = new @p_REB_TrapShapeHipopede(this) elseif (@enShape == "reb Hopalong 2") Shape = new @p_REB_TrapShapeHopalong2(this) elseif (@enShape == "reb Hopalong") Shape = new @p_REB_TrapShapeHopalong(this) elseif (@enShape == "reb Hyperbola REB") Shape = new @p_REB_TrapShapeHyperbola(this) elseif (@enShape == "reb Image Tile Texture") Shape = new @p_REB_ImageTileTexture(this) elseif (@enShape == "reb Kampyle of Eudoxus") Shape = new @p_REB_TrapShapeKampyleofEudoxus(this) elseif (@enShape == "reb Kappa Curve") Shape = new @p_REB_TrapShapeKappaCurve(this) elseif (@enShape == "reb Keratoid Cusp") Shape = new REB_TrapShapeKeratoidCusp(this) elseif (@enShape == "reb KnotCurve") Shape = new @p_REB_TrapShapeKnotCurve(this) elseif (@enShape == "reb Latoocarfian") Shape = new @p_REB_TrapShapeLatoocarfian(this) elseif (@enShape == "reb Lattice Textures") Shape = new @p_REB_TrapShapeLatticeTexture(this) elseif (@enShape == "reb Lemniscate") Shape = new @p_REB_TrapShapeLemniscate(this) elseif (@enShape == "reb Liar") Shape = new @p_REB_TrapShapeLiar(this) elseif (@enShape == "reb Limacon Of Pascal") Shape = new @p_REB_TrapShapeLimaconOfPascal(this) elseif (@enShape == "reb Line") Shape = new @p_REB_TrapShapeLine(this) elseif (@enShape == "reb Links Curve") Shape = new @p_REB_TrapShapeLinksCurve(this) elseif (@enShape == "reb Lituus") Shape = new @p_REB_TrapShapeLituus(this) elseif (@enShape == "reb Log Spiral Catacaustic") Shape = new @p_REB_TrapShapeLogSpiralCatacaustic(this) elseif (@enShape == "reb Log Spiral") Shape = new @p_REB_TrapShapeLogSpiral(this) elseif (@enShape == "reb Maltese Cross") Shape = new @p_REB_TrapShapeMalteseCross(this) elseif (@enShape == "reb Modified Perlin Textures") Shape = new @p_REB_TrapShapeModPerlinTexture(this) elseif (@enShape == "reb Nephroid") Shape = new @p_REB_TrapShapeNephroid(this) elseif (@enShape == "reb Ophiuride") Shape = new @p_REB_TrapShapeOphiuride(this) elseif (@enShape == "reb Parabola") Shape = new @p_REB_TrapShapeParabola(this) elseif (@enShape == "reb Pickover") Shape = new @p_REB_TrapShapePickover(this) elseif (@enShape == "reb Piriform") Shape = new @p_REB_TrapShapePiriform(this) elseif (@enShape == "reb Poinsot Spiral 1") Shape = new @p_REB_TrapShapePoinsotSpiral1(this) elseif (@enShape == "reb Poinsot Spiral 2") Shape = new @p_REB_TrapShapePoinsotSpiral2(this) elseif (@enShape == "reb Polytrope") Shape = new @p_REB_TrapShapePolytrope(this) elseif (@enShape == "reb Product 2") Shape = new @p_REB_TrapShapeProduct2(this) elseif (@enShape == "reb Product") Shape = new @p_REB_TrapShapeProduct(this) elseif (@enShape == "reb Quadratrix of Hippias") Shape = new @p_REB_TrapShapeQuadratrixofHippias(this) elseif (@enShape == "reb Quadrifolium") Shape = new @p_REB_TrapShapeQuadrifolium(this) elseif (@enShape == "reb Quadruptwo") Shape = new @p_REB_TrapShapeQuadruptwo(this) elseif (@enShape == "reb Quotient 1") Shape = new @p_REB_TrapShapeQuotient1(this) elseif (@enShape == "reb Quotient 2") Shape = new @p_REB_TrapShapeQuotient2(this) elseif (@enShape == "reb Quotient 3") Shape = new @p_REB_TrapShapeQuotient3(this) elseif (@enShape == "reb Quotient 4") Shape = new @p_REB_TrapShapeQuotient4(this) elseif (@enShape == "reb Rose of Troy") Shape = new @p_REB_TrapShapeRoseofTroy(this) elseif (@enShape == "reb Rose") Shape = new @p_REB_TrapShapeRose(this) elseif (@enShape == "reb Scarabaeus") Shape = new @p_REB_TrapShapeScarabaeus(this) elseif (@enShape == "reb Semicubical") Shape = new @p_REB_TrapShapeSemicubicalParabola(this) elseif (@enShape == "reb Serpentine Curve") Shape = new @p_REB_TrapShapeSerpentineCurve(this) elseif (@enShape == "reb Sierpinski") Shape = new @p_REB_TrapShapeSierpinski(this) elseif (@enShape == "reb Sprott3D") Shape = new @p_REB_TrapShapeSprott3D(this) elseif (@enShape == "reb Sprott3D_ODE") Shape = new @p_REB_TrapShapeSprott3D_ODE(this) elseif (@enShape == "reb SprottQuad") Shape = new @p_REB_TrapShapeSprottQuad(this) elseif (@enShape == "reb Stirrup Curve") Shape = new @p_REB_TrapShapeStirrupCurve(this) elseif (@enShape == "reb Strophoid") Shape = new @p_REB_TrapShapeStrophoid(this) elseif (@enShape == "reb Sum 2") Shape = new @p_REB_TrapShapeSum2(this) elseif (@enShape == "reb Sum") Shape = new @p_REB_TrapShapeSum(this) elseif (@enShape == "reb Swastika Curve") Shape = new @p_REB_TrapShapeSwastikaCurve(this) elseif (@enShape == "reb Teardrop Curve") Shape = new @p_REB_TrapShapeTeardropCurve(this) elseif (@enShape == "reb Threeply") Shape = new @p_REB_TrapShapeThreeply(this) elseif (@enShape == "reb Toby's Geometrix Texture") Shape = new @p_REB_TrapShapeTobyGeometrixTexture(this) elseif (@enShape == "reb Tr Plus") Shape = new @p_REB_TrapShapeTrPlus(this) elseif (@enShape == "reb Tractrix") Shape = new @p_REB_TrapShapeTractrix(this) elseif (@enShape == "reb Trefoil") Shape = new @p_REB_TrapShapeTrefoil(this) elseif (@enShape == "reb Trident of Descartes") Shape = new @p_REB_TrapShapeTridentofDescartes(this) elseif (@enShape == "reb Trident") Shape = new @p_REB_TrapShapeTrident(this) elseif (@enShape == "reb Trifolium") Shape = new @p_REB_TrapShapeTrifolium(this) elseif (@enShape == "reb Trisectrix of Mclaurin") Shape = new @p_REB_TrapShapeTrisectrixofMclaurin(this) elseif (@enShape == "reb Trunc Round") Shape = new @p_REB_TrapShapeTruncRound(this) elseif (@enShape == "reb Tschirnhausen Cubic") Shape = new @p_REB_TrapShapeTschirnhausenCubic(this) elseif (@enShape == "reb Witch of Agnesi") Shape = new @p_REB_TrapShapeWitchofAgnesi(this) elseif (@enShape == "reb Worley Textures") Shape = new @p_REB_TrapShapeWorleyTextures(this) elseif (@enShape == "reb Zito") Shape = new @p_REB_TrapShapeZito(this) ; rkb elseif (@enShape == "rkb Deform Shape") Shape = new @p_RKB_TrapShapeDeformShape(this) elseif (@enShape == "rkb Flower") Shape = new @p_RKB_TrapShapeFlower(this) ; standard elseif (@enShape == "Standard Astroid") Shape = new @p_Standard_TrapShapeAstroid(this) elseif (@enShape == "Standard Box") Shape = new @p_Standard_TrapShapeBox(this) elseif (@enShape == "Standard Cross") Shape = new @p_Standard_TrapShapeCross(this) elseif (@enShape == "Standard Diamond") Shape = new @p_Standard_TrapShapeDiamond(this) elseif (@enShape == "Standard Egg") Shape = new @p_Standard_TrapShapeEgg(this) elseif (@enShape == "Standard Gaussian Integer") Shape = new @p_Standard_TrapShapeGaussianInteger(this) elseif (@enShape == "Standard Heart") Shape = new @p_Standard_TrapShapeHeart(this) elseif (@enShape == "Standard Hyperbola") Shape = new @p_Standard_TrapShapeHyperbola(this) elseif (@enShape == "Standard Hypercross") Shape = new @p_Standard_TrapShapeHypercross(this) elseif (@enShape == "Standard Lines") Shape = new @p_Standard_TrapShapeLines(this) elseif (@enShape == "Standard Pinch") Shape = new @p_Standard_TrapShapePinch(this) elseif (@enShape == "Standard Point") Shape = new @p_Standard_TrapShapePoint(this) elseif (@enShape == "Standard Rectangle") Shape = new @p_Standard_TrapShapeRectangle(this) elseif (@enShape == "Standard Ring") Shape = new @p_Standard_TrapShapeRing(this) elseif (@enShape == "Standard Ring 2") Shape = new @p_Standard_TrapShapeRing2(this) elseif (@enShape == "Standard Ripples") Shape = new @p_Standard_TrapShapeRipples(this) elseif (@enShape == "Standard Spiral") Shape = new @p_Standard_TrapShapeSpiral(this) elseif (@enShape == "Standard Waves") Shape = new @p_Standard_TrapShapeWaves(this) endif endfunc float func Iterate(complex pz) return Shape.Iterate(pz)*@fScale endfunc private: TrapShape Shape default: title = "Shape Collection" int param iVersion visible = false endparam param enShape caption = "Shapes List" enum = "dmj5 Astroid" \ "dmj5 Cross" \ "dmj5 Egg" \ "dmj5 fBm" \ "dmj5 Flat Texture" \ "dmj5 Hyperbola" \ "dmj5 Hypercross" \ "dmj5 Lines" \ "dmj5 Pinch" \ "dmj5 Point" \ "dmj5 Rectangle" \ "kcc5 Ampersand Trap" \ "kcc5 Angle Function 1" \ "kcc5 Angle Function 2" \ "kcc5 ArcTangent Trap" \ "kcc5 Atan Trap" \ "kcc5 Balls Trap" \ "kcc5 Bean Curve Trap" \ "kcc5 Bicorn Curve Trap" \ "kcc5 Bicuspid Curve Trap" \ "kcc5 Bifoliate Trap" \ "kcc5 Bifolium Trap" \ "kcc5 Blobs Trap" \ "kcc5 Bow Trap" \ "kcc5 Bubbles Trap" \ "kcc5 Butterfly Curve Trap" \ "kcc5 Cassini Ovals Trap" \ "kcc5 Circles Trap" \ "kcc5 Cissoid of Diocles Trap" \ "kcc5 Cochleoid Trap" \ "kcc5 Cocked Hat Trap" \ "kcc5 Conchoid of Nicomedes Trap" \ "kcc5 Cones Trap" \ "kcc5 Cruciform Trap" \ "kcc5 Curls Trap" \ "kcc5 Devil's Curve Trap" \ "kcc5 Diamond Trap" \ "kcc5 Dimpled Spheroids Trap" \ "kcc5 Dumbbell Curve Trap" \ "kcc5 Dürer's Conchoid Trap" \ "kcc5 Eight Curve Trap" \ "kcc5 Flexballs Trap" \ "kcc5 Happy Accident Trap" \ "kcc5 Harlequin Trap" \ "kcc5 Hyperbola Trap" \ "kcc5 Kappa Curve Trap" \ "kcc5 Keppler's Folium Trap" \ "kcc5 Keratoid Cusp Trap" \ "kcc5 Knot Curve Trap" \ "kcc5 Lemniscate Corrected Trap" \ "kcc5 Lemniscate Trap" \ "kcc5 Limacon Trap" \ "kcc5 Line Trap" \ "kcc5 Links Curve Trap" \ "kcc5 Maltese Cross Curve Trap" \ "kcc5 Parabola Trap" \ "kcc5 Pear-Shaped Curve Trap" \ "kcc5 Petals Trap" \ "kcc5 Piriform Trap" \ "kcc5 Polygon Trap" \ "kcc5 Quadrifolium Trap" \ "kcc5 Ring Segments Trap" \ "kcc5 Rings Trap" \ "kcc5 Rose Curve Trap" \ "kcc5 Serpentine Curve Trap" \ "kcc5 sin(x)/x Trap" \ "kcc5 Sinus + Cosinus Trap" \ "kcc5 Spheres Trap" \ "kcc5 Spheroids Trap" \ "kcc5 Spiral Trap" \ "kcc5 Square Trap" \ "kcc5 Squares Trap" \ "kcc5 Stalks Trap" \ "kcc5 Star of David Trap" \ "kcc5 Stirrup Curve Trap" \ "kcc5 Strange Shape Trap" \ "kcc5 Swastika Curve Trap" \ "kcc5 Tangent Balls Trap" \ "kcc5 Tangent Trap" \ "kcc5 Trefoil Trap" \ "kcc5 Trident of Descartes Trap" \ "kcc5 Trident Trap" \ "kcc5 Trifolium Trap" \ "kcc5 Trisectrix of Maclaurin Trap" \ "kcc5 Twisted Cross Trap" \ "kcc5 Two Ellipses Trap" \ "kcc5 Witch of Agnesi Trap" \ "mmf Angles (of z)" \ "mmf Angles (of z-zold or z-older)" \ "mmf Centre of Curvature" \ "mmf Curvature" \ "mmf Functions" \ "mmf Orbitals" \ "mmf Simple Vergence" \ "mmf Triangle Inequality" \ "mt Bump Maps Texture" \ "mt Butterfly" \ "mt Cardioid" \ "mt Crackle Texture" \ "mt Folium" \ "mt Gnarl Texture" \ "mt Gnarl" \ "mt Harlequin" \ "mt Image Maps Texture" \ "mt Marble Texture" \ "mt Martin" \ "mt Perlin Noise 3D Texture" \ "mt Perlin Noise Texture" \ "mt Popcorn Texture" \ "mt Popcorn" \ "mt Rhodonea" \ "mt Rose" \ "mt Sextic" \ "mt Sine" \ "mt Transform" \ "mt Turbulence Texture" \ "mt Voronoi Texture" \ "mt Yorke Texture" \ "reb 4D Orbit" \ "reb Ampersand" \ "reb Arachnida 1" \ "reb Arachnida 2" \ "reb Archimedes" \ "reb Astroid REB" \ "reb Atzema Spiral" \ "reb Bean" \ "reb Bicorn" \ "reb Bicuspid" \ "reb Bifolium" \ "reb Bow" \ "reb Butterfly" \ "reb Cardiod" \ "reb Cassini Ovals" \ "reb Cayley's Sextic" \ "reb Ceil Floor" \ "reb Cf Plus" \ "reb Chip 2" \ "reb Chip" \ "reb Circle Catacaustic" \ "reb Circle" \ "reb Cissoid of Diocles" \ "reb Cochleoid" \ "reb Conchoid" \ "reb CosMartin 2" \ "reb CosMartin" \ "reb Cotes' Spiral" \ "reb Cruciform" \ "reb Curtate Cycloid" \ "reb Cycloid of Seva" \ "reb Cycloid" \ "reb Deltoid Catacaustic" \ "reb Devils Curve" \ "reb Diamond" \ "reb Dipole Curve" \ "reb Dumbell Curve" \ "reb Eight Curve" \ "reb Ellipse Catacaustic" \ "reb Ellipse Evolute" \ "reb Epicycloid" \ "reb Epispiral" \ "reb Fibonacci" \ "reb Folium Of Descartes" \ "reb Gear Curve" \ "reb General Textures" \ "reb Gingerbread" \ "reb Gnarl Textures" \ "reb Henon 2" \ "reb Henon" \ "reb Hipopede" \ "reb Hopalong 2" \ "reb Hopalong" \ "reb Hyperbola REB" \ "reb Ikenaga" \ "reb Image Tile Texture" \ "reb Kampyle of Eudoxus" \ "reb Kappa Curve" \ "reb Keratoid Cusp" \ "reb KnotCurve" \ "reb Latoocarfian" \ "reb Lattice Textures" \ "reb Lemniscate" \ "reb Liar" \ "reb Limacon Of Pascal" \ "reb Line" \ "reb Links Curve" \ "reb Lituus" \ "reb Log Spiral Catacaustic" \ "reb Log Spiral" \ "reb Maltese Cross" \ "reb Modified Perlin Textures" \ "reb Nephroid" \ "reb Ophiuride" \ "reb Parabola" \ "reb Pickover" \ "reb Piriform" \ "reb Poinsot Spiral 1" \ "reb Poinsot Spiral 2" \ "reb Polytrope" \ "reb Product 2" \ "reb Product" \ "reb Quadratrix of Hippias" \ "reb Quadrifolium" \ "reb Quadruptwo" \ "reb Quotient 1" \ "reb Quotient 2" \ "reb Quotient 3" \ "reb Quotient 4" \ "reb Rose of Troy" \ "reb Rose" \ "reb Scarabaeus" \ "reb Semicubical" \ "reb Serpentine Curve" \ "reb Sierpinski" \ "reb Sprott3D" \ "reb Sprott3D_ODE" \ "reb SprottQuad" \ "reb Stirrup Curve" \ "reb Strophoid" \ "reb Sum 2" \ "reb Sum" \ "reb Swastika Curve" \ "reb Teardrop Curve" \ "reb Threeply" \ "reb Toby's Geometrix Texture" \ "reb Tr Plus" \ "reb Tractrix" \ "reb Trefoil" \ "reb Trident of Descartes" \ "reb Trident" \ "reb Trifolium" \ "reb Trisectrix of Mclaurin" \ "reb Trunc Round" \ "reb Tschirnhausen Cubic" \ "reb Witch of Agnesi" \ "reb Worley Textures" \ "reb Zito" \ "rkb Deform Shape" \ "rkb Flower" \ "Standard Astroid" \ "Standard Box" \ "Standard Cross" \ "Standard Diamond" \ "Standard Egg" \ "Standard Gaussian Integer" \ "Standard Heart" \ "Standard Hyperbola" \ "Standard Hypercross" \ "Standard Lines" \ "Standard Pinch" \ "Standard Point" \ "Standard Rectangle" \ "Standard Ring" \ "Standard Ring 2" \ "Standard Ripples" \ "Standard Spiral" \ "Standard Waves" default = 0 endparam float param fScale caption = "Scale" default = 1.0 endparam TrapShape param p_DMJ_TrapShapeAstroid, caption = "Trap Shape", default = DMJ_TrapShapeAstroid, visible = (@enShape == "dmj5 Astroid"), endparam TrapShape param p_DMJ_TrapShapeCross, caption = "Trap Shape", default = DMJ_TrapShapeCross, visible = (@enShape == "dmj5 Cross"), endparam TrapShape param p_DMJ_TrapShapeEgg, caption = "Trap Shape", default = DMJ_TrapShapeEgg, visible = (@enShape == "dmj5 Egg"), endparam TrapShape param p_DMJ_TrapShapefBm, caption = "Trap Shape", default = DMJ_TrapShapefBm, visible = (@enShape == "dmj5 fBm"), endparam TrapShape param p_DMJ_TrapShapeFlat, caption = "Trap Shape", default = DMJ_TrapShapeFlat, visible = (@enShape == "dmj5 Flat Texture"), endparam TrapShape param p_DMJ_TrapShapeHyperbola, caption = "Trap Shape", default = DMJ_TrapShapeHyperbola, visible = (@enShape == "dmj5 Hyperbola"), endparam TrapShape param p_DMJ_TrapShapeHypercross, caption = "Trap Shape", default = DMJ_TrapShapeHypercross, visible = (@enShape == "dmj5 Hypercross"), endparam TrapShape param p_DMJ_TrapShapeLines, caption = "Trap Shape", default = DMJ_TrapShapeLines, visible = (@enShape == "dmj5 Lines"), endparam TrapShape param p_DMJ_TrapShapePinch, caption = "Trap Shape", default = DMJ_TrapShapePinch, visible = (@enShape == "dmj5 Pinch"), endparam TrapShape param p_DMJ_TrapShapePoint, caption = "Trap Shape", default = DMJ_TrapShapePoint, visible = (@enShape == "dmj5 Point"), endparam TrapShape param p_DMJ_TrapShapeRectangle, caption = "Trap Shape", default = DMJ_TrapShapeRectangle, visible = (@enShape == "dmj5 Rectangle"), endparam TrapShape param p_KCC_AmpersandTrap, caption = "Trap Shape", default = KCC_AmpersandTrap, visible = (@enShape == "kcc5 Ampersand Trap"), endparam TrapShape param p_KCC_AngleFunction1Trap, caption = "Trap Shape", default = KCC_AngleFunction1Trap, visible = (@enShape == "kcc5 Angle Function 1"), endparam TrapShape param p_KCC_AngleFunction2Trap, caption = "Trap Shape", default = KCC_AngleFunction2Trap, visible = (@enShape == "kcc5 Angle Function 2"), endparam TrapShape param p_KCC_ArcTangentTrap, caption = "Trap Shape", default = KCC_ArcTangentTrap, visible = (@enShape == "kcc5 ArcTangent Trap"), endparam TrapShape param p_KCC_AtanTrap, caption = "Trap Shape", default = KCC_AtanTrap, visible = (@enShape == "kcc5 Atan Trap"), endparam TrapShape param p_KCC_BallsTrap, caption = "Trap Shape", default = KCC_BallsTrap, visible = (@enShape == "kcc5 Balls Trap"), endparam TrapShape param p_KCC_BeanCurveTrap, caption = "Trap Shape", default = KCC_BeanCurveTrap, visible = (@enShape == "kcc5 Bean Curve Trap"), endparam TrapShape param p_KCC_BicornCurveTrap, caption = "Trap Shape", default = KCC_BicornCurveTrap, visible = (@enShape == "kcc5 Bicorn Curve Trap"), endparam TrapShape param p_KCC_BicuspidCurveTrap, caption = "Trap Shape", default = KCC_BicuspidCurveTrap, visible = (@enShape == "kcc5 Bicuspid Curve Trap"), endparam TrapShape param p_KCC_BifoliateTrap, caption = "Trap Shape", default = KCC_BifoliateTrap, visible = (@enShape == "kcc5 Bifoliate Trap"), endparam TrapShape param p_KCC_BifoliumTrap, caption = "Trap Shape", default = KCC_BifoliumTrap, visible = (@enShape == "kcc5 Bifolium Trap"), endparam TrapShape param p_KCC_BlobsTrap, caption = "Trap Shape", default = KCC_BlobsTrap, visible = (@enShape == "kcc5 Blobs Trap"), endparam TrapShape param p_KCC_BowTrap, caption = "Trap Shape", default = KCC_BowTrap, visible = (@enShape == "kcc5 Bow Trap"), endparam TrapShape param p_KCC_BubblesTrap, caption = "Trap Shape", default = KCC_BubblesTrap, visible = (@enShape == "kcc5 Bubbles Trap"), endparam TrapShape param p_KCC_ButterflyCurveTrap, caption = "Trap Shape", default = KCC_ButterflyCurveTrap, visible = (@enShape == "kcc5 Butterfly Curve Trap"), endparam TrapShape param p_KCC_CassiniOvalsTrap, caption = "Trap Shape", default = KCC_CassiniOvalsTrap, visible = (@enShape == "kcc5 Cassini Ovals Trap"), endparam TrapShape param p_KCC_CirclesTrap, caption = "Trap Shape", default = KCC_CirclesTrap, visible = (@enShape == "kcc5 Circles Trap"), endparam TrapShape param p_KCC_CissoidOfDioclesTrap, caption = "Trap Shape", default = KCC_CissoidOfDioclesTrap, visible = (@enShape == "kcc5 Cissoid of Diocles Trap"), endparam TrapShape param p_KCC_CochleoidTrap, caption = "Trap Shape", default = KCC_CochleoidTrap, visible = (@enShape == "kcc5 Cochleoid Trap"), endparam TrapShape param p_KCC_CockedHatTrap, caption = "Trap Shape", default = KCC_CockedHatTrap, visible = (@enShape == "kcc5 Cocked Hat Trap"), endparam TrapShape param p_KCC_ConchoidOfNicomedesTrap, caption = "Trap Shape", default = KCC_ConchoidOfNicomedesTrap, visible = (@enShape == "kcc5 Conchoid of Nicomedes Trap"), endparam TrapShape param p_KCC_ConesTrap, caption = "Trap Shape", default = KCC_ConesTrap, visible = (@enShape == "kcc5 Cones Trap"), endparam TrapShape param p_KCC_CruciformTrap, caption = "Trap Shape", default = KCC_CruciformTrap, visible = (@enShape == "kcc5 Cruciform Trap"), endparam TrapShape param p_KCC_CurlsTrap, caption = "Trap Shape", default = KCC_CurlsTrap, visible = (@enShape == "kcc5 Curls Trap"), endparam TrapShape param p_KCC_DevilsCurveTrap, caption = "Trap Shape", default = KCC_DevilsCurveTrap, visible = (@enShape == "kcc5 Devil's Curve Trap"), endparam TrapShape param p_KCC_DiamondTrap, caption = "Trap Shape", default = KCC_DiamondTrap, visible = (@enShape == "kcc5 Diamond Trap"), endparam TrapShape param p_KCC_DimpledSpheroidsTrap, caption = "Trap Shape", default = KCC_DimpledSpheroidsTrap, visible = (@enShape == "kcc5 Dimpled Spheroids Trap"), endparam TrapShape param p_KCC_DumbbellCurveTrap, caption = "Trap Shape", default = KCC_DumbbellCurveTrap, visible = (@enShape == "kcc5 Dumbbell Curve Trap"), endparam TrapShape param p_KCC_DurersConchoidTrap, caption = "Trap Shape", default = KCC_DurersConchoidTrap, visible = (@enShape == "kcc5 Dürer's Conchoid Trap"), endparam TrapShape param p_KCC_EightCurveTrap, caption = "Trap Shape", default = KCC_EightCurveTrap, visible = (@enShape == "kcc5 Eight Curve Trap"), endparam TrapShape param p_KCC_FlexballsTrap, caption = "Trap Shape", default = KCC_FlexballsTrap, visible = (@enShape == "kcc5 Flexballs Trap"), endparam TrapShape param p_KCC_HappyAccidentTrap, caption = "Trap Shape", default = KCC_HappyAccidentTrap, visible = (@enShape == "kcc5 Happy Accident Trap"), endparam TrapShape param p_KCC_HarlequinTrap, caption = "Trap Shape", default = KCC_HarlequinTrap, visible = (@enShape == "kcc5 Harlequin Trap"), endparam TrapShape param p_KCC_HyperbolaTrap, caption = "Trap Shape", default = KCC_HyperbolaTrap, visible = (@enShape == "kcc5 Hyperbola Trap"), endparam TrapShape param p_KCC_KappaCurveTrap, caption = "Trap Shape", default = KCC_KappaCurveTrap, visible = (@enShape == "kcc5 Kappa Curve Trap"), endparam TrapShape param p_KCC_KepplersFoliumTrap, caption = "Trap Shape", default = KCC_KepplersFoliumTrap, visible = (@enShape == "kcc5 Keppler's Folium Trap"), endparam TrapShape param p_KCC_KeratoidCuspTrap, caption = "Trap Shape", default = KCC_KeratoidCuspTrap, visible = (@enShape == "kcc5 Keratoid Cusp Trap"), endparam TrapShape param p_KCC_KnotCurveTrap, caption = "Trap Shape", default = KCC_KnotCurveTrap, visible = (@enShape == "kcc5 Knot Curve Trap"), endparam TrapShape param p_KCC_LemniscateCorrectedTrap, caption = "Trap Shape", default = KCC_LemniscateCorrectedTrap, visible = (@enShape == "kcc5 Lemniscate Corrected Trap"), endparam TrapShape param p_KCC_LemniscateTrap, caption = "Trap Shape", default = KCC_LemniscateTrap, visible = (@enShape == "kcc5 Lemniscate Trap"), endparam TrapShape param p_KCC_LimaconTrap, caption = "Trap Shape", default = KCC_LimaconTrap, visible = (@enShape == "kcc5 Limacon Trap"), endparam TrapShape param p_KCC_LineTrap, caption = "Trap Shape", default = KCC_LineTrap, visible = (@enShape == "kcc5 Line Trap"), endparam TrapShape param p_KCC_LinksCurveTrap, caption = "Trap Shape", default = KCC_LinksCurveTrap, visible = (@enShape == "kcc5 Links Curve Trap"), endparam TrapShape param p_KCC_MalteseCrossCurveTrap, caption = "Trap Shape", default = KCC_MalteseCrossCurveTrap, visible = (@enShape == "kcc5 Maltese Cross Curve Trap"), endparam TrapShape param p_KCC_ParabolaTrap, caption = "Trap Shape", default = KCC_ParabolaTrap, visible = (@enShape == "kcc5 Parabola Trap"), endparam TrapShape param p_KCC_PearShapedCurveTrap, caption = "Trap Shape", default = KCC_PearShapedCurveTrap, visible = (@enShape == "kcc5 Pear-Shaped Curve Trap"), endparam TrapShape param p_KCC_PetalsTrap, caption = "Trap Shape", default = KCC_PetalsTrap, visible = (@enShape == "kcc5 Petals Trap"), endparam TrapShape param p_KCC_PiriformTrap, caption = "Trap Shape", default = KCC_PiriformTrap, visible = (@enShape == "kcc5 Piriform Trap"), endparam TrapShape param p_KCC_PolygonTrap, caption = "Trap Shape", default = KCC_PolygonTrap, visible = (@enShape == "kcc5 Polygon Trap"), endparam TrapShape param p_KCC_QuadrifoliumTrap, caption = "Trap Shape", default = KCC_QuadrifoliumTrap, visible = (@enShape == "kcc5 Quadrifolium Trap"), endparam TrapShape param p_KCC_RingSegmentsTrap, caption = "Trap Shape", default = KCC_RingSegmentsTrap, visible = (@enShape == "kcc5 Ring Segments Trap"), endparam TrapShape param p_KCC_RingsTrap, caption = "Trap Shape", default = KCC_RingsTrap, visible = (@enShape == "kcc5 Rings Trap"), endparam TrapShape param p_KCC_RoseCurveTrap, caption = "Trap Shape", default = KCC_RoseCurveTrap, visible = (@enShape == "kcc5 Rose Curve Trap"), endparam TrapShape param p_KCC_SerpentineCurveTrap, caption = "Trap Shape", default = KCC_SerpentineCurveTrap, visible = (@enShape == "kcc5 Serpentine Curve Trap"), endparam TrapShape param p_KCC_sinXTrap, caption = "Trap Shape", default = KCC_sinXTrap, visible = (@enShape == "kcc5 sin(x)/x Trap"), endparam TrapShape param p_KCC_SinusCosinusTrap, caption = "Trap Shape", default = KCC_SinusCosinusTrap, visible = (@enShape == "kcc5 Sinus + Cosinus Trap"), endparam TrapShape param p_KCC_SpheresTrap, caption = "Trap Shape", default = KCC_SpheresTrap, visible = (@enShape == "kcc5 Spheres Trap"), endparam TrapShape param p_KCC_SpheroidsTrap, caption = "Trap Shape", default = KCC_SpheroidsTrap, visible = (@enShape == "kcc5 Spheroids Trap"), endparam TrapShape param p_KCC_SpiralTrap, caption = "Trap Shape", default = KCC_SpiralTrap, visible = (@enShape == "kcc5 Spiral Trap"), endparam TrapShape param p_KCC_SquareTrap, caption = "Trap Shape", default = KCC_SquareTrap, visible = (@enShape == "kcc5 Square Trap"), endparam TrapShape param p_KCC_SquaresTrap, caption = "Trap Shape", default = KCC_SquaresTrap, visible = (@enShape == "kcc5 Squares Trap"), endparam TrapShape param p_KCC_StalksTrap, caption = "Trap Shape", default = KCC_StalksTrap, visible = (@enShape == "kcc5 Stalks Trap"), endparam TrapShape param p_KCC_StarOfDavidTrap, caption = "Trap Shape", default = KCC_StarOfDavidTrap, visible = (@enShape == "kcc5 Star of David Trap"), endparam TrapShape param p_KCC_StirrupCurveTrap, caption = "Trap Shape", default = KCC_StirrupCurveTrap, visible = (@enShape == "kcc5 Stirrup Curve Trap"), endparam TrapShape param p_KCC_StrangeShapeTrap, caption = "Trap Shape", default = KCC_StrangeShapeTrap, visible = (@enShape == "kcc5 Strange Shape Trap"), endparam TrapShape param p_KCC_SwastikaCurveTrap, caption = "Trap Shape", default = KCC_SwastikaCurveTrap, visible = (@enShape == "kcc5 Swastika Curve Trap"), endparam TrapShape param p_KCC_TangentBallsTrap, caption = "Trap Shape", default = KCC_TangentBallsTrap, visible = (@enShape == "kcc5 Tangent Balls Trap"), endparam TrapShape param p_KCC_TangentTrap, caption = "Trap Shape", default = KCC_TangentTrap, visible = (@enShape == "kcc5 Tangent Trap"), endparam TrapShape param p_KCC_TrefoilTrap, caption = "Trap Shape", default = KCC_TrefoilTrap, visible = (@enShape == "kcc5 Trefoil Trap"), endparam TrapShape param p_KCC_TridentOfDescartesTrap, caption = "Trap Shape", default = KCC_TridentOfDescartesTrap, visible = (@enShape == "kcc5 Trident of Descartes Trap"), endparam TrapShape param p_KCC_TridentTrap, caption = "Trap Shape", default = KCC_TridentTrap, visible = (@enShape == "kcc5 Trident Trap"), endparam TrapShape param p_KCC_TrifoliumTrap, caption = "Trap Shape", default = KCC_TrifoliumTrap, visible = (@enShape == "kcc5 Trifolium Trap"), endparam TrapShape param p_KCC_TrisectrixOfMaclaurinTrap, caption = "Trap Shape", default = KCC_TrisectrixOfMaclaurinTrap, visible = (@enShape == "kcc5 Trisectrix of Maclaurin Trap"), endparam TrapShape param p_KCC_TwistedCrossTrap, caption = "Trap Shape", default = KCC_TwistedCrossTrap, visible = (@enShape == "kcc5 Twisted Cross Trap"), endparam TrapShape param p_KCC_TwoEllipsesTrap, caption = "Trap Shape", default = KCC_TwoEllipsesTrap, visible = (@enShape == "kcc5 Two Ellipses Trap"), endparam TrapShape param p_KCC_WitchOfAgnesiTrap, caption = "Trap Shape", default = KCC_WitchOfAgnesiTrap, visible = (@enShape == "kcc5 Witch of Agnesi Trap"), endparam TrapShape param p_MMF_TrapShapeAngle, caption = "Trap Shape", default = MMF_TrapShapeAngle, visible = (@enShape == "mmf Angles (of z)"), endparam TrapShape param p_MMF_TrapShapeOldAngles, caption = "Trap Shape", default = MMF_TrapShapeOldAngles, visible = (@enShape == "mmf Angles (of z-zold or z-older)"), endparam TrapShape param p_MMF_TrapShapeCentreOfCurvature, caption = "Trap Shape", default = MMF_TrapShapeCentreOfCurvature, visible = (@enShape == "mmf Centre of Curvature"), endparam TrapShape param p_MMF_TrapShapeCurvature, caption = "Trap Shape", default = MMF_TrapShapeCurvature, visible = (@enShape == "mmf Curvature"), endparam TrapShape param p_MMF_TrapShapeFnz, caption = "Trap Shape", default = MMF_TrapShapeFnz, visible = (@enShape == "mmf Functions"), endparam TrapShape param p_MMF_TrapShapeOrbitals, caption = "Trap Shape", default = MMF_TrapShapeOrbitals, visible = (@enShape == "mmf Orbitals"), endparam TrapShape param p_MMF_TrapShapeSimpleVergence, caption = "Trap Shape", default = MMF_TrapShapeSimpleVergence, visible = (@enShape == "mmf Simple Vergence"), endparam TrapShape param p_MMF_TrapShapeTriangleInequality, caption = "Trap Shape", default = MMF_TrapShapeTriangleInequality, visible = (@enShape == "mmf Triangle Inequality"), endparam TrapShape param p_MT_BumpMapsTexture, caption = "Trap Shape", default = MT_BumpMapsTexture, visible = (@enShape == "mt Bump Maps Texture"), endparam TrapShape param p_MT_TrapShapeButterfly, caption = "Trap Shape", default = MT_TrapShapeButterfly, visible = (@enShape == "mt Butterfly"), endparam TrapShape param p_MT_TrapShapeCardioid, caption = "Trap Shape", default = MT_TrapShapeCardioid, visible = (@enShape == "mt Cardioid"), endparam TrapShape param p_MT_CrackleTexture, caption = "Trap Shape", default = MT_CrackleTexture, visible = (@enShape == "mt Crackle Texture"), endparam TrapShape param p_MT_TrapShapeFolium, caption = "Trap Shape", default = MT_TrapShapeFolium, visible = (@enShape == "mt Folium"), endparam TrapShape param p_MT_GnarlTexture, caption = "Trap Shape", default = MT_GnarlTexture, visible = (@enShape == "mt Gnarl Texture"), endparam TrapShape param p_MT_TrapShapeGnarl, caption = "Trap Shape", default = MT_TrapShapeGnarl, visible = (@enShape == "mt Gnarl"), endparam TrapShape param p_MT_TrapShapeHarlequin, caption = "Trap Shape", default = MT_TrapShapeHarlequin, visible = (@enShape == "mt Harlequin"), endparam TrapShape param p_MT_ImageMapsTexture, caption = "Trap Shape", default = MT_ImageMapsTexture, visible = (@enShape == "mt Image Maps Texture"), endparam TrapShape param p_MT_MarbleTexture, caption = "Trap Shape", default = MT_MarbleTexture, visible = (@enShape == "mt Marble Texture"), endparam TrapShape param p_MT_TrapShapeMartin, caption = "Trap Shape", default = MT_TrapShapeMartin, visible = (@enShape == "mt Martin"), endparam TrapShape param p_MT_PerlinNoise3DTexture, caption = "Trap Shape", default = MT_PerlinNoise3DTexture, visible = (@enShape == "mt Perlin Noise 3D Texture"), endparam TrapShape param p_MT_PerlinNoiseTexture, caption = "Trap Shape", default = MT_PerlinNoiseTexture, visible = (@enShape == "mt Perlin Noise Texture"), endparam TrapShape param p_MT_PopcornTexture, caption = "Trap Shape", default = MT_PopcornTexture, visible = (@enShape == "mt Popcorn Texture"), endparam TrapShape param p_MT_TrapShapePopcorn, caption = "Trap Shape", default = MT_TrapShapePopcorn, visible = (@enShape == "mt Popcorn"), endparam TrapShape param p_MT_TrapShapeRhodonea, caption = "Trap Shape", default = MT_TrapShapeRhodonea, visible = (@enShape == "mt Rhodonea"), endparam TrapShape param p_MT_TrapShapeRose, caption = "Trap Shape", default = MT_TrapShapeRose, visible = (@enShape == "mt Rose"), endparam TrapShape param p_MT_TrapShapeSextic, caption = "Trap Shape", default = MT_TrapShapeSextic, visible = (@enShape == "mt Sextic"), endparam TrapShape param p_MT_TrapShapeSine, caption = "Trap Shape", default = MT_TrapShapeSine, visible = (@enShape == "mt Sine"), endparam TrapShape param p_MT_TrapShape_Transform, caption = "Trap Shape", default = MT_TrapShape_Transform, visible = (@enShape == "mt Transform"), endparam TrapShape param p_MT_TurbulenceTexture, caption = "Trap Shape", default = MT_TurbulenceTexture, visible = (@enShape == "mt Turbulence Texture"), endparam TrapShape param p_MT_VoronoiTexture, caption = "Trap Shape", default = MT_VoronoiTexture, visible = (@enShape == "mt Voronoi Texture"), endparam TrapShape param p_MT_YorkeTexture, caption = "Trap Shape", default = MT_YorkeTexture, visible = (@enShape == "mt Yorke Texture"), endparam TrapShape param p_REB_TrapShape4DOrbit, caption = "Trap Shape", default = REB_TrapShape4DOrbit, visible = (@enShape == "reb 4D Orbit"), endparam TrapShape param p_REB_TrapShapeAmpersand, caption = "Trap Shape", default = REB_TrapShapeAmpersand, visible = (@enShape == "reb Ampersand"), endparam TrapShape param p_REB_TrapShapeArachnida1, caption = "Trap Shape", default = REB_TrapShapeArachnida1, visible = (@enShape == "reb Arachnida 1"), endparam TrapShape param p_REB_TrapShapeArachnida2, caption = "Trap Shape", default = REB_TrapShapeArachnida2, visible = (@enShape == "reb Arachnida 2"), endparam TrapShape param p_REB_TrapShapeArchimedes, caption = "Trap Shape", default = REB_TrapShapeArchimedes, visible = (@enShape == "reb Archimedes"), endparam TrapShape param p_REB_TrapShapeREBAstroid, caption = "Trap Shape", default = REB_TrapShapeREBAstroid, visible = (@enShape == "reb Astroid REB"), endparam TrapShape param p_REB_TrapShapeAtzemaSpiral, caption = "Trap Shape", default = REB_TrapShapeAtzemaSpiral, visible = (@enShape == "reb Atzema Spiral"), endparam TrapShape param p_REB_TrapShapeBean, caption = "Trap Shape", default = REB_TrapShapeBean, visible = (@enShape == "reb Bean"), endparam TrapShape param p_REB_TrapShapeBicorn, caption = "Trap Shape", default = REB_TrapShapeBicorn, visible = (@enShape == "reb Bicorn"), endparam TrapShape param p_REB_TrapShapeBicuspid, caption = "Trap Shape", default = REB_TrapShapeBicuspid, visible = (@enShape == "reb Bicuspid"), endparam TrapShape param p_REB_TrapShapeBifolium, caption = "Trap Shape", default = REB_TrapShapeBifolium, visible = (@enShape == "reb Bifolium"), endparam TrapShape param p_REB_TrapShapeBow, caption = "Trap Shape", default = REB_TrapShapeBow, visible = (@enShape == "reb Bow"), endparam TrapShape param p_REB_TrapShapeButterfly, caption = "Trap Shape", default = REB_TrapShapeButterfly, visible = (@enShape == "reb Butterfly"), endparam TrapShape param p_REB_TrapShapeCardiod, caption = "Trap Shape", default = REB_TrapShapeCardiod, visible = (@enShape == "reb Cardiod"), endparam TrapShape param p_REB_TrapShapeCassiniOvals, caption = "Trap Shape", default = REB_TrapShapeCassiniOvals, visible = (@enShape == "reb Cassini Ovals"), endparam TrapShape param p_REB_TrapShapeCayleysSextic, caption = "Trap Shape", default = REB_TrapShapeCayleysSextic, visible = (@enShape == "reb Cayley's Sextic"), endparam TrapShape param p_REB_TrapShapeCeilFloor, caption = "Trap Shape", default = REB_TrapShapeCeilFloor, visible = (@enShape == "reb Ceil Floor"), endparam TrapShape param p_REB_TrapShapeCfPlus, caption = "Trap Shape", default = REB_TrapShapeCfPlus, visible = (@enShape == "reb Cf Plus"), endparam TrapShape param p_REB_TrapShapeChip2, caption = "Trap Shape", default = REB_TrapShapeChip2, visible = (@enShape == "reb Chip 2"), endparam TrapShape param p_REB_TrapShapeChip, caption = "Trap Shape", default = REB_TrapShapeChip, visible = (@enShape == "reb Chip"), endparam TrapShape param p_REB_TrapShapeCircleCatacaustic, caption = "Trap Shape", default = REB_TrapShapeCircleCatacaustic, visible = (@enShape == "reb Circle Catacaustic"), endparam TrapShape param p_REB_TrapShapeCircle, caption = "Trap Shape", default = REB_TrapShapeCircle, visible = (@enShape == "reb Circle"), endparam TrapShape param p_REB_TrapShapeCissoidofDiocles, caption = "Trap Shape", default = REB_TrapShapeCissoidofDiocles, visible = (@enShape == "reb Cissoid of Diocles"), endparam TrapShape param p_REB_TrapShapeCochleoid, caption = "Trap Shape", default = REB_TrapShapeCochleoid, visible = (@enShape == "reb Cochleoid"), endparam TrapShape param p_REB_TrapShapeConchoid, caption = "Trap Shape", default = REB_TrapShapeConchoid, visible = (@enShape == "reb Conchoid"), endparam TrapShape param p_REB_TrapShapeCosMartin2, caption = "Trap Shape", default = REB_TrapShapeCosMartin2, visible = (@enShape == "reb CosMartin 2"), endparam TrapShape param p_REB_TrapShapeCosMartin, caption = "Trap Shape", default = REB_TrapShapeCosMartin, visible = (@enShape == "reb CosMartin"), endparam TrapShape param p_REB_TrapShapeCotesSpiral, caption = "Trap Shape", default = REB_TrapShapeCotesSpiral, visible = (@enShape == "reb Cotes' Spiral"), endparam TrapShape param p_REB_TrapShapeCruciform, caption = "Trap Shape", default = REB_TrapShapeCruciform, visible = (@enShape == "reb Cruciform"), endparam TrapShape param p_REB_TrapShapeCurtateCycloid, caption = "Trap Shape", default = REB_TrapShapeCurtateCycloid, visible = (@enShape == "reb Curtate Cycloid"), endparam TrapShape param p_REB_TrapShapeCycloidofSeva, caption = "Trap Shape", default = REB_TrapShapeCycloidofSeva, visible = (@enShape == "reb Cycloid of Seva"), endparam TrapShape param p_REB_TrapShapeCycloid, caption = "Trap Shape", default = REB_TrapShapeCycloid, visible = (@enShape == "reb Cycloid"), endparam TrapShape param p_REB_TrapShapeDeltoidCatacaustic, caption = "Trap Shape", default = REB_TrapShapeDeltoidCatacaustic, visible = (@enShape == "reb Deltoid Catacaustic"), endparam TrapShape param p_REB_TrapShapeDevilsCurve, caption = "Trap Shape", default = REB_TrapShapeDevilsCurve, visible = (@enShape == "reb Devils Curve"), endparam TrapShape param p_REB_TrapShapeDiamond, caption = "Trap Shape", default = REB_TrapShapeDiamond, visible = (@enShape == "reb Diamond"), endparam TrapShape param p_REB_TrapShapeDipoleCurve, caption = "Trap Shape", default = REB_TrapShapeDipoleCurve, visible = (@enShape == "reb Dipole Curve"), endparam TrapShape param p_REB_TrapShapeDumbellCurve, caption = "Trap Shape", default = REB_TrapShapeDumbellCurve, visible = (@enShape == "reb Dumbell Curve"), endparam TrapShape param p_REB_TrapShapeEightCurve, caption = "Trap Shape", default = REB_TrapShapeEightCurve, visible = (@enShape == "reb Eight Curve"), endparam TrapShape param p_REB_TrapShapeEllipseCatacaustic, caption = "Trap Shape", default = REB_TrapShapeEllipseCatacaustic, visible = (@enShape == "reb Ellipse Catacaustic"), endparam TrapShape param p_REB_TrapShapeEllipseEvolute, caption = "Trap Shape", default = REB_TrapShapeEllipseEvolute, visible = (@enShape == "reb Ellipse Evolute"), endparam TrapShape param p_REB_TrapShapeEpicycloid, caption = "Trap Shape", default = REB_TrapShapeEpicycloid, visible = (@enShape == "reb Epicycloid"), endparam TrapShape param p_REB_TrapShapeEpispiral, caption = "Trap Shape", default = REB_TrapShapeEpispiral, visible = (@enShape == "reb Epispiral"), endparam TrapShape param p_REB_TrapShapeFibonacci, caption = "Trap Shape", default = REB_TrapShapeFibonacci, visible = (@enShape == "reb Fibonacci"), endparam TrapShape param p_REB_TrapShapeFoliumOfDescartes, caption = "Trap Shape", default = REB_TrapShapeFoliumOfDescartes, visible = (@enShape == "reb Folium Of Descartes"), endparam TrapShape param p_REB_TrapShapeGearCurve, caption = "Trap Shape", default = REB_TrapShapeGearCurve, visible = (@enShape == "reb Gear Curve"), endparam TrapShape param p_REB_TrapShapeGenTexture, caption = "Trap Shape", default = REB_TrapShapeGenTexture, visible = (@enShape == "reb General Textures"), endparam TrapShape param p_REB_TrapShapeGingerbread, caption = "Trap Shape", default = REB_TrapShapeGingerbread, visible = (@enShape == "reb Gingerbread"), endparam TrapShape param p_REB_TrapShapeGnarlTexture, caption = "Trap Shape", default = REB_TrapShapeGnarlTexture, visible = (@enShape == "reb Gnarl Textures"), endparam TrapShape param p_REB_TrapShapeHenon2, caption = "Trap Shape", default = REB_TrapShapeHenon2, visible = (@enShape == "reb Henon 2"), endparam TrapShape param p_REB_TrapShapeHenon, caption = "Trap Shape", default = REB_TrapShapeHenon, visible = (@enShape == "reb Henon"), endparam TrapShape param p_REB_TrapShapeHipopede, caption = "Trap Shape", default = REB_TrapShapeHipopede, visible = (@enShape == "reb Hipopede"), endparam TrapShape param p_REB_TrapShapeHopalong2, caption = "Trap Shape", default = REB_TrapShapeHopalong2, visible = (@enShape == "reb Hopalong 2"), endparam TrapShape param p_REB_TrapShapeHopalong, caption = "Trap Shape", default = REB_TrapShapeHopalong, visible = (@enShape == "reb Hopalong"), endparam TrapShape param p_REB_TrapShapeHyperbola, caption = "Trap Shape", default = REB_TrapShapeHyperbola, visible = (@enShape == "reb Hyperbola REB"), endparam TrapShape param p_REB_ImageTileTexture, caption = "Trap Shape", default = REB_ImageTileTexture, visible = (@enShape == "reb Image Tile Texture"), endparam TrapShape param p_REB_TrapShapeKampyleofEudoxus, caption = "Trap Shape", default = REB_TrapShapeKampyleofEudoxus, visible = (@enShape == "reb Kampyle of Eudoxus"), endparam TrapShape param p_REB_TrapShapeKappaCurve, caption = "Trap Shape", default = REB_TrapShapeKappaCurve, visible = (@enShape == "reb Kappa Curve"), endparam TrapShape param p_REB_TrapShapeKeratoidCusp, caption = "Trap Shape", default = REB_TrapShapeKeratoidCusp, visible = (@enShape == "reb Keratoid Cusp"), endparam TrapShape param p_REB_TrapShapeKnotCurve, caption = "Trap Shape", default = REB_TrapShapeKnotCurve, visible = (@enShape == "reb KnotCurve"), endparam TrapShape param p_REB_TrapShapeLatoocarfian, caption = "Trap Shape", default = REB_TrapShapeLatoocarfian, visible = (@enShape == "reb Latoocarfian"), endparam TrapShape param p_REB_TrapShapeLatticeTexture, caption = "Trap Shape", default = REB_TrapShapeLatticeTexture, visible = (@enShape == "reb Lattice Textures"), endparam TrapShape param p_REB_TrapShapeLemniscate, caption = "Trap Shape", default = REB_TrapShapeLemniscate, visible = (@enShape == "reb Lemniscate"), endparam TrapShape param p_REB_TrapShapeLiar, caption = "Trap Shape", default = REB_TrapShapeLiar, visible = (@enShape == "reb Liar"), endparam TrapShape param p_REB_TrapShapeLimaconOfPascal, caption = "Trap Shape", default = REB_TrapShapeLimaconOfPascal, visible = (@enShape == "reb Limacon Of Pascal"), endparam TrapShape param p_REB_TrapShapeLine, caption = "Trap Shape", default = REB_TrapShapeLine, visible = (@enShape == "reb Line"), endparam TrapShape param p_REB_TrapShapeLinksCurve, caption = "Trap Shape", default = REB_TrapShapeLinksCurve, visible = (@enShape == "reb Links Curve"), endparam TrapShape param p_REB_TrapShapeLituus, caption = "Trap Shape", default = REB_TrapShapeLituus, visible = (@enShape == "reb Lituus"), endparam TrapShape param p_REB_TrapShapeLogSpiralCatacaustic, caption = "Trap Shape", default = REB_TrapShapeLogSpiralCatacaustic, visible = (@enShape == "reb Log Spiral Catacaustic"), endparam TrapShape param p_REB_TrapShapeLogSpiral, caption = "Trap Shape", default = REB_TrapShapeLogSpiral, visible = (@enShape == "reb Log Spiral"), endparam TrapShape param p_REB_TrapShapeMalteseCross, caption = "Trap Shape", default = REB_TrapShapeMalteseCross, visible = (@enShape == "reb Maltese Cross"), endparam TrapShape param p_REB_TrapShapeModPerlinTexture, caption = "Trap Shape", default = REB_TrapShapeModPerlinTexture, visible = (@enShape == "reb Modified Perlin Textures"), endparam TrapShape param p_REB_TrapShapeNephroid, caption = "Trap Shape", default = REB_TrapShapeNephroid, visible = (@enShape == "reb Nephroid"), endparam TrapShape param p_REB_TrapShapeOphiuride, caption = "Trap Shape", default = REB_TrapShapeOphiuride, visible = (@enShape == "reb Ophiuride"), endparam TrapShape param p_REB_TrapShapeParabola, caption = "Trap Shape", default = REB_TrapShapeParabola, visible = (@enShape == "reb Parabola"), endparam TrapShape param p_REB_TrapShapePickover, caption = "Trap Shape", default = REB_TrapShapePickover, visible = (@enShape == "reb Pickover"), endparam TrapShape param p_REB_TrapShapePiriform, caption = "Trap Shape", default = REB_TrapShapePiriform, visible = (@enShape == "reb Piriform"), endparam TrapShape param p_REB_TrapShapePoinsotSpiral1, caption = "Trap Shape", default = REB_TrapShapePoinsotSpiral1, visible = (@enShape == "reb Poinsot Spiral 1"), endparam TrapShape param p_REB_TrapShapePoinsotSpiral2, caption = "Trap Shape", default = REB_TrapShapePoinsotSpiral2, visible = (@enShape == "reb Poinsot Spiral 2"), endparam TrapShape param p_REB_TrapShapePolytrope, caption = "Trap Shape", default = REB_TrapShapePolytrope, visible = (@enShape == "reb Polytrope"), endparam TrapShape param p_REB_TrapShapeProduct2, caption = "Trap Shape", default = REB_TrapShapeProduct2, visible = (@enShape == "reb Product 2"), endparam TrapShape param p_REB_TrapShapeProduct, caption = "Trap Shape", default = REB_TrapShapeProduct, visible = (@enShape == "reb Product"), endparam TrapShape param p_REB_TrapShapeQuadratrixofHippias, caption = "Trap Shape", default = REB_TrapShapeQuadratrixofHippias, visible = (@enShape == "reb Quadratrix of Hippias"), endparam TrapShape param p_REB_TrapShapeQuadrifolium, caption = "Trap Shape", default = REB_TrapShapeQuadrifolium, visible = (@enShape == "reb Quadrifolium"), endparam TrapShape param p_REB_TrapShapeQuadruptwo, caption = "Trap Shape", default = REB_TrapShapeQuadruptwo, visible = (@enShape == "reb Quadruptwo"), endparam TrapShape param p_REB_TrapShapeQuotient1, caption = "Trap Shape", default = REB_TrapShapeQuotient1, visible = (@enShape == "reb Quotient 1"), endparam TrapShape param p_REB_TrapShapeQuotient2, caption = "Trap Shape", default = REB_TrapShapeQuotient2, visible = (@enShape == "reb Quotient 2"), endparam TrapShape param p_REB_TrapShapeQuotient3, caption = "Trap Shape", default = REB_TrapShapeQuotient3, visible = (@enShape == "reb Quotient 3"), endparam TrapShape param p_REB_TrapShapeQuotient4, caption = "Trap Shape", default = REB_TrapShapeQuotient4, visible = (@enShape == "reb Quotient 4"), endparam TrapShape param p_REB_TrapShapeRoseofTroy, caption = "Trap Shape", default = REB_TrapShapeRoseofTroy, visible = (@enShape == "reb Rose of Troy"), endparam TrapShape param p_REB_TrapShapeRose, caption = "Trap Shape", default = REB_TrapShapeRose, visible = (@enShape == "reb Rose"), endparam TrapShape param p_REB_TrapShapeScarabaeus, caption = "Trap Shape", default = REB_TrapShapeScarabaeus, visible = (@enShape == "reb Scarabaeus"), endparam TrapShape param p_REB_TrapShapeSemicubicalParabola, caption = "Trap Shape", default = REB_TrapShapeSemicubicalParabola, visible = (@enShape == "reb Semicubical"), endparam TrapShape param p_REB_TrapShapeSerpentineCurve, caption = "Trap Shape", default = REB_TrapShapeSerpentineCurve, visible = (@enShape == "reb Serpentine Curve"), endparam TrapShape param p_REB_TrapShapeSierpinski, caption = "Trap Shape", default = REB_TrapShapeSierpinski, visible = (@enShape == "reb Sierpinski"), endparam TrapShape param p_REB_TrapShapeSprott3D, caption = "Trap Shape", default = REB_TrapShapeSprott3D, visible = (@enShape == "reb Sprott3D"), endparam TrapShape param p_REB_TrapShapeSprott3D_ODE, caption = "Trap Shape", default = REB_TrapShapeSprott3D_ODE, visible = (@enShape == "reb Sprott3D_ODE"), endparam TrapShape param p_REB_TrapShapeSprottQuad, caption = "Trap Shape", default = REB_TrapShapeSprottQuad, visible = (@enShape == "reb SprottQuad"), endparam TrapShape param p_REB_TrapShapeStirrupCurve, caption = "Trap Shape", default = REB_TrapShapeStirrupCurve, visible = (@enShape == "reb Stirrup Curve"), endparam TrapShape param p_REB_TrapShapeStrophoid, caption = "Trap Shape", default = REB_TrapShapeStrophoid, visible = (@enShape == "reb Strophoid"), endparam TrapShape param p_REB_TrapShapeSum2, caption = "Trap Shape", default = REB_TrapShapeSum2, visible = (@enShape == "reb Sum 2"), endparam TrapShape param p_REB_TrapShapeSum, caption = "Trap Shape", default = REB_TrapShapeSum, visible = (@enShape == "reb Sum"), endparam TrapShape param p_REB_TrapShapeSwastikaCurve, caption = "Trap Shape", default = REB_TrapShapeSwastikaCurve, visible = (@enShape == "reb Swastika Curve"), endparam TrapShape param p_REB_TrapShapeTeardropCurve, caption = "Trap Shape", default = REB_TrapShapeTeardropCurve, visible = (@enShape == "reb Teardrop Curve"), endparam TrapShape param p_REB_TrapShapeThreeply, caption = "Trap Shape", default = REB_TrapShapeThreeply, visible = (@enShape == "reb Threeply"), endparam TrapShape param p_REB_TrapShapeTobyGeometrixTexture, caption = "Trap Shape", default = REB_TrapShapeTobyGeometrixTexture, visible = (@enShape == "reb Toby's Geometrix Texture"), endparam TrapShape param p_REB_TrapShapeTrPlus, caption = "Trap Shape", default = REB_TrapShapeTrPlus, visible = (@enShape == "reb Tr Plus"), endparam TrapShape param p_REB_TrapShapeTractrix, caption = "Trap Shape", default = REB_TrapShapeTractrix, visible = (@enShape == "reb Tractrix"), endparam TrapShape param p_REB_TrapShapeTrefoil, caption = "Trap Shape", default = REB_TrapShapeTrefoil, visible = (@enShape == "reb Trefoil"), endparam TrapShape param p_REB_TrapShapeTridentofDescartes, caption = "Trap Shape", default = REB_TrapShapeTridentofDescartes, visible = (@enShape == "reb Trident of Descartes"), endparam TrapShape param p_REB_TrapShapeTrident, caption = "Trap Shape", default = REB_TrapShapeTrident, visible = (@enShape == "reb Trident"), endparam TrapShape param p_REB_TrapShapeTrifolium, caption = "Trap Shape", default = REB_TrapShapeTrifolium, visible = (@enShape == "reb Trifolium"), endparam TrapShape param p_REB_TrapShapeTrisectrixofMclaurin, caption = "Trap Shape", default = REB_TrapShapeTrisectrixofMclaurin, visible = (@enShape == "reb Trisectrix of Mclaurin"), endparam TrapShape param p_REB_TrapShapeTruncRound, caption = "Trap Shape", default = REB_TrapShapeTruncRound, visible = (@enShape == "reb Trunc Round"), endparam TrapShape param p_REB_TrapShapeTschirnhausenCubic, caption = "Trap Shape", default = REB_TrapShapeTschirnhausenCubic, visible = (@enShape == "reb Tschirnhausen Cubic"), endparam TrapShape param p_REB_TrapShapeWitchofAgnesi, caption = "Trap Shape", default = REB_TrapShapeWitchofAgnesi, visible = (@enShape == "reb Witch of Agnesi"), endparam TrapShape param p_REB_TrapShapeWorleyTextures, caption = "Trap Shape", default = REB_TrapShapeWorleyTextures, visible = (@enShape == "reb Worley Textures"), endparam TrapShape param p_REB_TrapShapeZito, caption = "Trap Shape", default = REB_TrapShapeZito, visible = (@enShape == "reb Zito"), endparam TrapShape param p_RKB_TrapShapeDeformShape, caption = "Trap Shape", default = RKB_TrapShapeDeformShape, visible = (@enShape == "rkb Deform Shape"), endparam TrapShape param p_RKB_TrapShapeFlower, caption = "Trap Shape", default = RKB_TrapShapeFlower, visible = (@enShape == "rkb Flower"), endparam TrapShape param p_Standard_TrapShapeAstroid, caption = "Trap Shape", default = Standard_TrapShapeAstroid, visible = (@enShape == "Standard Astroid"), endparam TrapShape param p_Standard_TrapShapeBox, caption = "Trap Shape", default = Standard_TrapShapeBox, visible = (@enShape == "Standard Box"), endparam TrapShape param p_Standard_TrapShapeCross, caption = "Trap Shape", default = Standard_TrapShapeCross, visible = (@enShape == "Standard Cross"), endparam TrapShape param p_Standard_TrapShapeDiamond, caption = "Trap Shape", default = Standard_TrapShapeDiamond, visible = (@enShape == "Standard Diamond"), endparam TrapShape param p_Standard_TrapShapeEgg, caption = "Trap Shape", default = Standard_TrapShapeEgg, visible = (@enShape == "Standard Egg"), endparam TrapShape param p_Standard_TrapShapeGaussianInteger, caption = "Trap Shape", default = Standard_TrapShapeGaussianInteger, visible = (@enShape == "Standard Gaussian Integer"), endparam TrapShape param p_Standard_TrapShapeHeart, caption = "Trap Shape", default = Standard_TrapShapeHeart, visible = (@enShape == "Standard Heart"), endparam TrapShape param p_Standard_TrapShapeHyperbola, caption = "Trap Shape", default = Standard_TrapShapeHyperbola, visible = (@enShape == "Standard Hyperbola"), endparam TrapShape param p_Standard_TrapShapeHypercross, caption = "Trap Shape", default = Standard_TrapShapeHypercross, visible = (@enShape == "Standard Hypercross"), endparam TrapShape param p_Standard_TrapShapeLines, caption = "Trap Shape", default = Standard_TrapShapeLines, visible = (@enShape == "Standard Lines"), endparam TrapShape param p_Standard_TrapShapePinch, caption = "Trap Shape", default = Standard_TrapShapePinch, visible = (@enShape == "Standard Pinch"), endparam TrapShape param p_Standard_TrapShapePoint, caption = "Trap Shape", default = Standard_TrapShapePoint, visible = (@enShape == "Standard Point"), endparam TrapShape param p_Standard_TrapShapeRectangle, caption = "Trap Shape", default = Standard_TrapShapeRectangle, visible = (@enShape == "Standard Rectangle"), endparam TrapShape param p_Standard_TrapShapeRing, caption = "Trap Shape", default = Standard_TrapShapeRing, visible = (@enShape == "Standard Ring"), endparam TrapShape param p_Standard_TrapShapeRing2, caption = "Trap Shape", default = Standard_TrapShapeRing2, visible = (@enShape == "Standard Ring 2"), endparam TrapShape param p_Standard_TrapShapeRipples, caption = "Trap Shape", default = Standard_TrapShapeRipples, visible = (@enShape == "Standard Ripples"), endparam TrapShape param p_Standard_TrapShapeSpiral, caption = "Trap Shape", default = Standard_TrapShapeSpiral, visible = (@enShape == "Standard Spiral"), endparam TrapShape param p_Standard_TrapShapeWaves, caption = "Trap Shape", default = Standard_TrapShapeWaves, visible = (@enShape == "Standard Waves"), endparam } ;########################### ; ; Combine Shapes ; ;########################### class RKB_TrapShapeCombineShapes(common.ulb:TrapShape) { ; A shape plug-in which combines two shapes public: func RKB_TrapShapeCombineShapes(Generic pparent) TrapShape(pparent) ; True if function list is set to 'ident' ShapeA = new @shapeA(this) ShapeB = new @shapeB(this) endfunc float func Iterate(complex pz) ; Process Shape A float fIndexA = ShapeA.Iterate(pz) if (@fGradientRotateA > 0.0) if (fIndexA > 1.0), fIndexA = 1.0, endif fIndexA = ((fIndexA + @fGradientRotateA) % 1.0) endif fIndexA = fIndexA * @fScaleA ; Process Shape B float fIndexB = ShapeB.Iterate(pz) if (@fGradientRotateB > 0.0) if (fIndexB > 1.0), fIndexB = 1.0, endif fIndexB = ((fIndexB + @fGradientRotateB) % 1.0) endif fIndexB = fIndexB * @fScaleB float fIndex = 0.0 ; Put them together if (@enCombineMode == "Ratio") fIndex = fIndexA * @fRatio + fIndexB * (1.0 - @fRatio) elseif (@enCombineMode == "A-B") fIndex = fIndexA - fIndexB elseif (@enCombineMode == "B-A") fIndex = fIndexB - fIndexA elseif (@enCombineMode == "A*B") fIndex = fIndexA * fIndexB elseif (@enCombineMode == "A/B") fIndex = fIndexB / (fIndexA * @fStrength) elseif (@enCombineMode == "min") if (fIndexA < fIndexB), fIndex = fIndexA, else, fIndex = fIndexB, endif elseif (@enCombineMode == "max") if (fIndexA > fIndexB), fIndex = fIndexA, else, fIndex = fIndexB, endif elseif (@enCombineMode == "sin/cos") if (fIndexA > 1.0), fIndexA = 0.0, endif if (fIndexB > 1.0), fIndexB = 0.0, endif fIndex = (abs(sin(fIndexA * #pi)) + abs(cos(fIndexB * #pi)))/2 elseif (@enCombineMode == "sin/cos min") if (fIndexA > 1.0), fIndexA = 0.0, endif if (fIndexB > 1.0), fIndexB = 0.0, endif fIndexA = abs(sin(fIndexA * #pi)) fIndexB = abs(cos(fIndexB * #pi)) if (fIndexA < fIndexB), fIndex = fIndexA, else, fIndex = fIndexB, endif elseif (@enCombineMode == "sin/cos max") if (fIndexA > 1.0), fIndexA = 0.0, endif if (fIndexB > 1.0), fIndexB = 0.0, endif fIndexA = abs(sin(fIndexA * #pi)) fIndexB = abs(cos(fIndexB * #pi)) if (fIndexA > fIndexB), fIndex = fIndexA, else, fIndex = fIndexB, endif elseif (@enCombineMode == "A only") fIndex = fIndexA elseif (@enCombineMode == "B only") fIndex = fIndexB endif return fIndex endfunc private: TrapShape ShapeA TrapShape ShapeB default: title = "Combine Shapes" int param iVersion default = 101 visible = false endparam param enCombineMode caption = "Combine Mode" enum = "Ratio" "A-B" "B-A" "A*B" "A/B" "min" "max" "sin/cos" \ "sin/cos min" "sin/cos max" "A only" "B only" endparam float param fRatio caption = "Combine Ratio" default = .5 min = 0 max = 1.0 visible = @enCombineMode == "ratio" endparam float param fStrength caption = "Strength" default = .1 visible = @enCombineMode == "A/B" endparam heading caption="-- Shape A parameters --" endheading float param fScaleA caption = "Scale Shape A" default = 1.0 endparam float param fGradientRotateA caption = "Rotate Graident A" default = 0.0 min = 0.0 max = 1.0 hint = "Rotates the gradient for Shape A. Values range from 0.0 to 1.0." endparam TrapShape param shapeA caption = "Trap Shape A" default = RKB_TrapShapeFlower hint = "Selects first shape for the combination." endparam heading caption="-- Shape B parameters --" endheading float param fScaleB caption = "Scale Shape B" default = 1.0 endparam float param fGradientRotateB caption = "Rotate Graident B" default = 0.0 min = 0.0 max = 1.0 hint = "Rotates the gradient for Shape B. Values range from 0.0 to 1.0." endparam TrapShape param shapeB caption = "Trap Shape B" default = RKB_TrapShapeFlower hint = "Selects second shape for the combination." endparam }