Title: basic script/makro language?
Post by: cKleinhuis on March 26, 2008, 01:23:44 AM
::) i am developing a little makro language for generating scripts within mutatorkammer, this is how far i am now: Basic language: @MAKRO = XX|YY... == XX|YY... = Makro will be replaced with XX or YY or whatever, any length of alternations is possible == is the final statement it means if MAKRO is in last iteration visible - use that, same syntax as for = Uses The makro with %MAKRONAME% built in functions: randomTree(DEPTH)generates a random Formul Tree of depth DEPTH randomVal(min[max])Creates a random value in between max and min The Above is actually implemented, and i am using the following script as a global include: O0 O0 O0 @MK_SKRIPT COMMENT AREA @MK_MAKROS @ZERO = 0 @ONE = 1 @PI=#3.14159265358979323846264338327950288 @E=#2.71828182845904523536028747135266249 @SQROOT2=#1.41421356237309504880168872420969807 @SQROOT3=#1.73205080756887729352744634150587236 @EMASCH=#0.57721566490153286060651209008240243 @GOLDENRATIO=#1.61803398874989484820458683436563811 @PLASTIC=#1.32471795724474602596090885447809734 @EMBREE= #0.70258 @FEIGENBAUM1= #4.66920160910299067185320382046620161 @FEIGENBAUM2= #2.50290787509589282228390287321821578 @HUGHES= #0.050989 @MEISSELMERTENS= #0.26149721284764278375542683860869585 @CATALAN=#0.91596559417721901505460351493238411 @LANDAU= #0.76422365358922066299069873125009232 @VISWANATH= #1.13198824 @RAMAJUNSOLDNER= #1.45136923488338105028396848589202744 @IMAGINARY=#0#1
@RANDOMCONSTANT=%PI%|%E%|%SQRROOT2%|%SQRROOT3%|%EMASH%|%GOLDENRATIO%|%PLASTIC%|%EMBREE%|%FEIGENBAUM1%|%FEIGENBAUM2%|%HUGHES%|%MEISSELMERTENS%|%|%CATALAN%|%LANDAU%|%VISWANATH%|%RAMAJUNSOLDNER% |%IMAGINARY%
@TRIGONOMETRIC=SIN|COS|TAN|SEC|COSEC|COTAN @INVERSETRIGONOMETRIC=ASIN|ACOS|ATAN|ASEC|ACOSEC|ACOTAN @HYPERBVOLIC=SINH|COSH|TANH|SECH|COSECH|COTANH @INVERSEHYPERBVOLIC=ASINH|ACOSH|ATANH|ASECH|ACOSECH|ACOTANH
@VARIABLE= $PIXEL|$SCREEN|$A|$B|$T|$C|$Z|$LASTZ|$W|$V|$ITERATION @VARIABLECONST=$PIXEL|$SCREEN|$T|$LASTZ|$ITERATION|$V|$W @VARIABLE=$A|$B|$C
@FUNCTION1= SIN|COS|FRAC|CELL|POW|EXP|RECIP|POLAR|CARTESIAN|ABS|NEG|REAL|IMAG|ASIN|ACOS|COSH|CONJ|ROUND|SINH|TAN|TANH|ATAN|NORM|LN|LOG10|SWAP|VECABS|SQRT|FLOOR|CEIL|SETW|SETV|FLAME_CROSS|IMAGE|SINUSOIDIAL|SPHERICAL|SWIRL|HORSESHOE|POLAROID|HANDKERCHIEF|HEART|ASINH|ACOSH|COTAN|COTANH|ACOTAN|ACOTANH|SEC|COSEC|ASEC|ACOSEC|SECH|COSECH|ASECH|ACOSECH|DIST_DIAMOND|DISC|TILE|SPIRAL|CYLINDER|HYPERBOLIC|DIAMOND|EX|FISHEYE|MAPTORGB|BENT|SQUARE|PERLIN|TURBULENCE @FUNCTION2=MOD|MUL|VECMUL|ADD|XOR|AND|OR|PERSPECTIVE|SUB|PARABOLA|RINGS|PERLIN|TURBULENCE|BUBBLE|FLOWER|DIV|DOT|POW|AVG|MAX|MAXABS|MAXIMAG|MIN|FAN|MINIMAG|MINABS|SETW2|APFEL|BARNSLEY1|BARNSLEY2|ITERATE|LAMBDA|POPCORN @FUNCTION3=PERLIN|TURBULENCE|VECTOR3|CLAMP|CURL|PDJ|MAPTORGB2|MAGNET1|MAGNET2|APFEL|BARNSLEY3|SPIDER|MANOWAR|HALLEY|LERP|WAVE|NEWTON|SUPER @FUNCTION4=PHOENIX|IFLO|IFLOIMAG|IFLOABS|AFFIN|NOVA
@FRACTAL2=APFEL|BARNSLEY1|BARNSLEY2|ITERATE|LAMBDA @FRACTAL3= MAGNET1|MAGNET2|APFEL|BARNSLEY3|SPIDER|MANOWAR|HALLEY|NEWTON @FRACTAL4= PHOENIX|NOVA
a script may then look like this: 8) 8) 8) @MK_SKRIPT @MK_MAKROS @MAKRO1=$PIXEL @MK_STARTSTRING %FUNCTION2%(%MAKRO1%,randomvar(-2,2))
i would like you to post any thoughts and suggestions what you think about it, any suggestions, ideas and for sure a mathematical constant i missed so far :police: O0 btw: did did you know that EACH function in the declarations above are currently build in into mutatorkammer v0.69x ?
Title: Re: basic script/makro language?
Post by: Sockratease on March 26, 2008, 10:50:22 AM
I like the idea of defining a range for values in a randomize command. That will be useful, for sure.
I've never used a script in a fractal generator before, so it should prove interesting.
You listed functions I am unfamiliar with, so I'm not likely to have more to suggest, but if I think of any I'll post them!
Title: Re: basic script/makro language?
Post by: cKleinhuis on March 26, 2008, 11:16:33 AM
i think i will add another option:
@MAKRO(par1,par2,...) = X(par1)X(par2)|Y(par1)Y... == XX|YY...
so, adding a parameter object to makros :D
Title: Re: basic script/makro language?
Post by: cKleinhuis on March 27, 2008, 02:44:59 AM
:gum:oh my god, this is becoming huge :D skript language functions: randomtree ( depth ) randomval( min,max )
New Added breed(FORMULASTRING) -breeds FORMULASTRING with current breed window parameter settings crossover(FORMULASTRING,FORMULASTRING2) - crossover FORMULASTRING with FORMULASTRING2 with current breed window parameter settings variate(FORMULASTRING) - variates with current breed window parameter settings eval(FORMULASTRING) - evaluates to a complex number ( constant #r#i )
Macro Definition: MAKROS can have parameters and propabilities ( cstyle and overloading ;) )
Title: Re: basic script/makro language?
Post by: cKleinhuis on March 27, 2008, 04:37:09 AM
one example run: // script 3 @MK_SKRIPT @MK_MAKROS @MAKRO1=ADD(randomtree(2),%FUNCTION2%(%VARI%,%MAKRO1%))|%MAKRO2%==$PIXEL
@MAKRO2=%FUNCTION1%(%MAKRO3%)==$PIXEL @MAKRO3=%FRACTAL2%(%MAKRO1%,%MAKRO3%)|%VARI%=$PIXEL @VARI=$PIXEL|$A|$B|$C|randomval(-2,2) @MK_STARTSTRING %MAKRO1%
ONE RESULT: (compatible witrh current MK but renders slow with current version ... ) ADD(ASEC(ABS(VECMUL(#2.000000#2.000000,$PIXEL))),OR($B,ADD(ASEC(ABS(VECMUL(#2.000000#2.000000,$PIXEL))),MIN($C,ADD(ASEC(ABS(VECMUL(#2.000000#2.000000,$PIXEL))),PERLIN(VECMUL(#2.000000#2.000000,$PIXEL),ADD(ASEC(ABS(VECMUL(#2.000000#2.000000,$PIXEL))),FLOWER($C,ATAN(#0)))))))))
and some sample renderings of that formula:
Title: Re: basic script/makro language?
Post by: lycium on March 27, 2008, 07:57:34 AM
that 2nd pic looks cool with the nice blue glow, good job! O0
|