{"id":187,"date":"2008-07-23T17:41:00","date_gmt":"2008-07-23T15:41:00","guid":{"rendered":"http:\/\/www.thelins.se\/johan\/blog\/2008\/07\/fractalicious\/"},"modified":"2008-07-23T17:41:00","modified_gmt":"2008-07-23T15:41:00","slug":"fractalicious","status":"publish","type":"post","link":"https:\/\/www.thelins.se\/johan\/blog\/2008\/07\/fractalicious\/","title":{"rendered":">Fractalicious"},"content":{"rendered":"<p>>Ever since I first played with <a href=\"http:\/\/spanky.triumf.ca\/www\/fractint\/fractint.html\">FractInt<\/a>, it must have been at least 15 years ago, I&#8217;ve been intrigued by fractals. At first, they seemed like magic to me, but as I learned more maths, I can understand the why, but not always the how.<\/p>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/dragon-780904.png\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;\" src=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/dragon-780902.png\" alt=\"\" border=\"0\" \/><\/a><br \/>A couple of years ago I set out to write a fractal exploration application called Frakter. To be honest, it sucked pretty much, but it was an attempt. The nice things about it where:<\/p>\n<ul>\n<li>Fractals where kept in external scripts, so that the application could be extended.<\/li>\n<li>Colouring was done using special colour maps that could be loaded and saved.<\/li>\n<li>It used a background thread to render the fractals.<\/li>\n<li>It had a zooming history that one could type right into to find interesting ranges in the complex numbers realm.<\/li>\n<\/ul>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/www.digitalfanatics.org\/projects\/frakter\/screenshots\/history.png\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;\" src=\"http:\/\/www.digitalfanatics.org\/projects\/frakter\/screenshots\/history.png\" alt=\"\" border=\"0\" \/><\/a><br \/>Now and then I visit <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/index.html\">Paul Bourke<\/a>&#8216;s great collection of <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/fractals\/\">fractals<\/a> (and <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/geometry\/\">loads<\/a> <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/surfaces_curves\/\">of<\/a> <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/texture_colour\/\">other<\/a> <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/projection\/\">stuff<\/a> <a href=\"http:\/\/local.wasp.uwa.edu.au\/%7Epbourke\/dataformats\/\">too<\/a>). Each time, I feel an urge to write something that can handle everything that he shows.<br \/><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/tree-794424.png\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;\" src=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/tree-794422.png\" alt=\"\" border=\"0\" \/><\/a><br \/>I want to be able to fit all different types of fractals into a class tree that I can write a GUI around. The data carried from the fractals to the UI would be enough to do basic 2D rendering, 3D rendering, psychedelic colouring, and so on.<\/p>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/peano-780424.png\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;\" src=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/peano-780422.png\" alt=\"\" border=\"0\" \/><\/a><br \/>I&#8217;ve had a couple of half hearted attempts this far, but now I started from the other direction, i.e. starting with the fractal types I never get to otherwise.<\/p>\n<p><a onblur=\"try {parent.deselectBloggerImageGracefully();} catch(e) {}\" href=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/fern-766225.png\"><img decoding=\"async\" style=\"margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;\" src=\"http:\/\/www.thelins.se\/johan\/uploaded_images\/fern-766222.png\" alt=\"\" border=\"0\" \/><\/a><br \/>Right now I&#8217;ve implemented <a href=\"http:\/\/en.wikipedia.org\/wiki\/Iterated_function_system\">IFS<\/a> and <a href=\"http:\/\/en.wikipedia.org\/wiki\/L-system\">L-systems<\/a>. The implementation is not even an attempt at being efficient and uses loads and loads and loads of memory, but it works. The next step is to create a colouring class that one can inherit to do the funky stuff. Last value, current value and current iteration, fractal specific category are the &#8220;input values&#8221; I plan to use. Right now, fractal specific category, is &#8220;last used transformation set&#8221; when dealing with IFS, for L-systems, it is zero.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>>Ever since I first played with FractInt, it must have been at least 15 years ago, I&#8217;ve been intrigued by fractals. At first, they seemed like magic to me, but as I learned more maths, I can understand the why, but not always the how. A couple of years ago I set out to write &hellip; <a href=\"https:\/\/www.thelins.se\/johan\/blog\/2008\/07\/fractalicious\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">>Fractalicious<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-187","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/comments?post=187"}],"version-history":[{"count":0,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/posts\/187\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/media?parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/categories?post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thelins.se\/johan\/blog\/wp-json\/wp\/v2\/tags?post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}