HOME | DD

FlyingMatthew — Fire by Moonlight

#fractalart #mandelbrot #fractview
Published: 2019-07-13 12:12:22 +0000 UTC; Views: 829; Favourites: 47; Downloads: 18
Redirect to original
Description Mandelbrot Reciprocal

FractView  for Android 

{"source":["// Default Preset","// This is a good start for all kinds of fractals","// including newton sets, nova fractals and others.","var x int, y int, color int;","","","extern maxdepth int \u003d 120;","","// some further arguments","extern juliaset bool \u003d false;","extern reciprocal bool \u003d false;","extern juliapoint cplx \u003d -0.8:0.16;","","// c: coordinates, breakcondition: a function whether we should stop, ","// value: a real variable to return some kind of value","// used in 3d-types for the height.","// returns a quat representing the color","func escapetime(c, breakcondition) {"," var i int \u003d 0,"," p cplx \u003d juliapoint if juliaset else "," (/c + juliapoint) if reciprocal else"," c,"," zlast cplx \u003d 0,"," z cplx,"," znext cplx \u003d 0;",""," extern mandelinit expr \u003d \"0\";",""," z \u003d c if juliaset else mandelinit;",""," extern function expr \u003d \"mandelbrot(z, p)\";",""," var color quat;",""," while {"," znext \u003d function;"," not breakcondition(i, znext, z, zlast, c, p, color)"," } do {"," // advance to next values"," zlast \u003d z;"," z \u003d znext;"," }",""," // return color"," color","}","","// everything that is drawn must have a get_color-function.","","// c \u003d coordinates (scaled)","// value is a real variable for z-information in 3D","// but also otherwise convenient to separate drawing","// algorithm from transfer","// returns color.","func get_color(c, value) {",""," // if the fractal accumulates some values"," // like in traps or addends, here is a got place to do it.",""," func breakcondition(i, znext, z, zlast, c, p, color) {"," func bailoutcolor() {"," extern bailout real \u003d 128;"," extern max_power real \u003d 2;"," var smooth_i \u003d smoothen(znext, bailout, max_power) ;",""," // the next ones are only used in 3d-fractals"," extern bailoutvalue expr \u003d \"log(20 + i + smooth_i)\";"," value \u003d bailoutvalue ;"," "," extern bailouttransfer expr \u003d \"value\";",""," extern bailoutpalette palette \u003d ["," [#006, #26c , #fff , #fa0 , #303]];"," "," color \u003d bailoutpalette bailouttransfer"," }",""," func lakecolor() {"," extern epsilon real \u003d 1e-9;"," "," // the next ones are only used in 3d-fractals"," extern lakevalue expr \u003d \"log(1 + rad znext)\";"," value \u003d lakevalue;",""," extern laketransfer expr \u003d"," \"arcnorm znext : value\";",""," extern lakepalette palette \u003d ["," [#000, #000, #000, #000],"," [#f00 , #ff0 , #0f8 , #00f ],"," [#f88 , #ff8 , #afc , #88f ]];",""," color \u003d lakepalette laketransfer"," }",""," { lakecolor() ; true } if not next(i, maxdepth) else"," radrange(znext, z, bailout, epsilon, bailoutcolor(), lakecolor())"," }"," "," escapetime(c, breakcondition)","}","","func get_color_test(c, value) {"," // this one is just here for testing light effects"," // circle + donut + green bg"," var rc \u003d rad c;"," "," { value \u003d (circlefn rc + 5); int2lab #0000ff } if rc \u003c 1 else"," { value \u003d circlefn abs (rc - 3); int2lab #ff0000 } if rc \u003d\u003c 4 and rc \u003e\u003d 2 else"," { value \u003d -10; int2lab #00ff00 }","}","","// ******************************************","// * Next are just drawing procedures. They *","// * should be the same for all drawings. * ","// ******************************************","","extern supersampling bool \u003d false;","extern light bool \u003d false;","","// drawpixel for 2D","func drawpixel_2d(x, y) { "," var c cplx \u003d map(x, y);"," var value real;"," get_color(c, value) // value is not used","}","","// drawpixel for 3D","func drawpixel_3d(x, y) {"," var c00 cplx \u003d map(x, y),"," c10 cplx \u003d map(x + 1, y + 0.5),"," c01 cplx \u003d map(x + 0.5, y + 1);"," "," var h00 real, h10 real, h01 real; // heights"," "," // color is already kinda super-sampled"," var color \u003d (get_color(c00, h00) + get_color(c10, h10) + get_color(c01, h01)) / 3;",""," // get height out of value"," func height(value) {"," extern valuetransfer expr \u003d \"value\";"," valuetransfer"," }"," "," h00 \u003d height h00; h01 \u003d height h01; h10 \u003d height h10;",""," // get the normal vector (cross product)"," var xp \u003d c10 - c00, xz \u003d h10 - h00;"," var yp \u003d c01 - c00, yz \u003d h01 - h00;"," "," var np cplx \u003d (xp.y yz - xz yp.y) : (xz yp.x - xp.x yz);"," var nz real \u003d xp.x yp.y - xp.y yp.x;"," "," // normalize np and nz"," var nlen \u003d sqrt(rad2 np + sqr nz);"," np \u003d np / nlen; nz \u003d nz / nlen;"," "," // get light direction"," extern lightvector cplx \u003d -0.667 : -0.667; // direction from which the light is coming"," def lz \u003d sqrt(1 - sqr re lightvector - sqr im lightvector); // this is inlined",""," // Lambert\u0027s law."," var cos_a real \u003d dot(lightvector, np) + lz nz;",""," // diffuse reflexion with ambient factor"," extern lightintensity real \u003d 1;"," extern ambientlight real \u003d 0.5;",""," // if lumen is negative it is behind, "," // but I tweak it a bit for the sake of the looks:"," // cos_a \u003d -1 (which is super-behind) \u003d\u003d\u003e 0"," // cos_a \u003d 0 \u003d\u003d\u003e ambientlight"," // cos_a \u003d 1 \u003d\u003d\u003e lightintensity",""," // for a mathematically correct look use the following:"," // if cos_a \u003c 0 then cos_a \u003d 0;"," // color.a \u003d color.a * (ambientlight + lightintensity lumen);"," "," def d \u003d lightintensity / 2; // will be inlined later",""," // Change L in Lab-Color"," color.a \u003d color.a (((d - ambientlight) cos_a + d) cos_a + ambientlight);",""," // Next, specular reflection. Viewer is always assumed to be in direction (0,0,1)"," extern specularintensity real \u003d 1;",""," extern shininess real \u003d 8;",""," // r \u003d 2 n l - l; v \u003d 0:0:1"," var spec_refl \u003d 2 cos_a nz - lz;"," "," // 100 because L in the Lab-Model is between 0 and 100"," if spec_refl \u003e 0 then"," color.a \u003d color.a + 100 * specularintensity * spec_refl ^ shininess;",""," color","}","","func do_pixel(x, y) {"," // two or three dimensions?"," def drawpixel \u003d drawpixel_3d if light else drawpixel_2d;"," "," func drawaapixel(x, y) {"," 0.25 ("," drawpixel(x - 0.375, y - 0.125) + "," drawpixel(x + 0.125, y - 0.375) + "," drawpixel(x + 0.375, y + 0.125) +"," drawpixel(x - 0.125, y + 0.375) "," );"," }",""," // which function to apply?"," def fn \u003d drawpixel if not supersampling else drawaapixel;",""," color \u003d lab2int fn(x, y)","}","","// and finally call the draing procedure","do_pixel(x, y)"],"arguments":{"ints":{"maxdepth":1200},"reals":{"shininess":2.0,"ambientlight":0.75},"cplxs":{"juliapoint":[-1.0000587,0.665]},"bools":{"light":true,"reciprocal":true},"exprs":{"bailoutvalue":"log(20 + i + smooth_i)^5","bailouttransfer":"log(value^2.5 + 3^p * -value)"},"palettes":{"bailoutpalette":{"width":9,"height":3,"colors":[-16777216,-1,-16777216,-1244927,-393472,-1244927,-16777216,-1,-16777216,-16777216,-1,-16777216,-6097408,-13875785,-6097408,-16777216,-1,-16777216,-16777216,-1,-16777216,-162043,-393472,-162043,-16777216,-1,-16777216]},"lakepalette":{"width":1,"height":1,"colors":[-16777216]}},"scales":{"Scale":[4.6953369587405966E-9,2.470444961944562E-8,-2.470444961944562E-8,4.6953369587405966E-9,-0.710313916530376,0.9968861179949535]}}}
Related content
Comments: 18

FractalCaleidoscope [2019-11-26 12:25:29 +0000 UTC]

Excellent work

👍: 0 ⏩: 1

FlyingMatthew In reply to FractalCaleidoscope [2019-11-27 13:20:05 +0000 UTC]

Thank you, I'm Glad you Enjoyed it 

👍: 0 ⏩: 1

FractalCaleidoscope In reply to FlyingMatthew [2019-11-27 20:39:16 +0000 UTC]

I sure did. Do you have exhibitions?  It is really great work. 

👍: 0 ⏩: 1

FlyingMatthew In reply to FractalCaleidoscope [2019-11-29 13:20:08 +0000 UTC]

Wow, such high praise No I have never had an exhibition. I have thought about getting some prints made up and seeing if I could sell them at a local cafe. But I haven't done it. 

👍: 0 ⏩: 1

FractalCaleidoscope In reply to FlyingMatthew [2019-11-29 14:51:44 +0000 UTC]

You should try it. Why not? What can you loose? 
 Good luck!

👍: 0 ⏩: 1

FlyingMatthew In reply to FractalCaleidoscope [2019-11-30 10:36:47 +0000 UTC]

Maybe I will, Thank you 

👍: 0 ⏩: 1

FractalCaleidoscope In reply to FlyingMatthew [2019-12-01 14:58:03 +0000 UTC]

You're welcome

👍: 0 ⏩: 0

FractalRock [2019-07-14 00:04:12 +0000 UTC]

Stunning!

👍: 0 ⏩: 1

FlyingMatthew In reply to FractalRock [2019-07-14 00:14:52 +0000 UTC]

I'm Glad you Enjoyed it 

👍: 0 ⏩: 0

Leanndra51 [2019-07-13 22:36:49 +0000 UTC]

This is very beautiful!

👍: 0 ⏩: 1

FlyingMatthew In reply to Leanndra51 [2019-07-14 00:15:22 +0000 UTC]

I'm Glad you Enjoyed it 

👍: 0 ⏩: 1

Leanndra51 In reply to FlyingMatthew [2019-07-14 03:46:18 +0000 UTC]

So am I!   

👍: 0 ⏩: 1

FlyingMatthew In reply to Leanndra51 [2019-07-14 10:28:59 +0000 UTC]

 

👍: 0 ⏩: 0

BlueDisciple [2019-07-13 19:38:15 +0000 UTC]

...that's how you work a gradient!!    

👍: 0 ⏩: 1

FlyingMatthew In reply to BlueDisciple [2019-07-14 00:16:03 +0000 UTC]

Thank you, I was really pleased with how this one turned out. 

👍: 0 ⏩: 1

BlueDisciple In reply to FlyingMatthew [2019-07-14 06:40:42 +0000 UTC]

Quite rightly so! ...and you're very welcome!

👍: 0 ⏩: 0

acidrainbow01 [2019-07-13 17:16:56 +0000 UTC]

This is fantastic! I like the contrast between the warm colors and the metal effect. I also like the 3D look.

👍: 0 ⏩: 1

FlyingMatthew In reply to acidrainbow01 [2019-07-14 00:17:22 +0000 UTC]

Thank you, I'm Glad you Enjoyed it  

👍: 0 ⏩: 0