Fractile is a fractal viewer for iOS devices (iPhone / iPod touch / iPad).
The name “fractile” is a portmanteau of “fractal” and “tile”. Fractile uses a multi-threaded tile-caching architecture similar to that found in online maps: Instead of re-calculating the whole fractal image in response to every user input, the computation is split into discrete tiles arrayed in a 3D grid over space and scale. Finished tiles are stored in a large tile cache, which ensures that calculations for any one point in space are not needlessly repeated if that point is visited again later. This architecture enables fluid 60Hz user interaction and naturally provides progressive level-of-detail.
The aim of this project is to provide the fastest fractal exploration possible on iOS devices. The tile-based architecture, together with specialized NEON 32 and 64-bit arithmetic, allow smooth and efficient exploration of the Mandelbrot set even at medium zooms (up to 1e12) and 4096 iterations.
Why is iOS 3.1.x not supported? I have an original iPhone and they can not be upgraded to iOS 4.
It may be possible to make it run on earlier version of the iphone OS. However the original iPhone and the iPhone 3G can’t be supported for hardware reasons: first the ARMv6 processor doesn’t have the NEON SIMD extensions, so the math would be frustratingly slow (by about a factor of four); second fractile uses lots of RAM for its tile and texture caches, which would not work out on the 128MB ram devices. Sorry!
Hi,
I was just checking out your app in the App Store. Congrats, looks pretty good.
Happy with your sales so far?
I’ve been working with some app developers the last few months, and I’ve learned that there’s two aspects that you need to focus on to be really successful selling apps in iTunes. I’d be happy to share what I’ve learned if you’re interested. Just let me know and I’ll send you a quick overview. (I’m not trying to sell you information, just don’t want to bother you if you’re not interested in what I have to share.)
Best of luck,
Ed Turner
i have itouch 3rd generation. (os 4.2.1) — reports incompatible with fractile.
are the shown nrequirements wrong?
I haven’t got one of those to test, so don’t really know why it would not work. The hardware requirements are that the processor supports NEON (ARMv7) and that the GPU can do OpenGL ES 2.0. According to apple, that means that the 3rd gen touch should work, and it does work fine on an iphone 3GS which has similar hardware.
In settings / general / about, what does your phone say for “Model”?
Great work – Well done !!!
However I’ve two proposals:
1) Sometimes, because of a fault of mine or a program fault, it Zooms Out completely and I can’t find the location again to save the picture. So I’d like to have the possibility to save “favorit places”.
2) I’d like to know the location of a picture that I’ve saved. Maybe you could store the relevant data in the EXIF of the jpg.
Greetings, KH
1 – yes, next version (if it ever happens) will have some form of bookmarking.
2 – The location is already stored in the exif if you save images via the menu. See for example
http://www.flickr.com/photos/reddogfever/5433116150/
I’ll probably register the app as a URL handler, then bookmarks and EXIFs could be expressed as URLs.
Cheers
Georg
Thanks for the quick answer!
I overlooked the EXIF comment because it’s one long line.
One additional question:
Saving via menu is not always useing the full screen resolution.
Is that correct or a mistake by me? How to get the full screen resolution (on iPhone4s)?
Keep going!!! I’m enjoying it very much and would even pay for an update 😉
KH
Sorry for missunderstanding,
The question is about different resolutions
offered via menu and how to get the maximum
not only iPhones screen resolution.
–KH
Hi Georg,
One again – great work.
It’s my most used app currently.
Especially the coloring and the color palettes
are great, compared to what I have on my PC.
Is there any chance to get more info about the
formulas you are using or the color palettes?
The 5th palette from the color picker I like
the most.
I would have some understanding
if you say “NO” 😔
Greetings, KH
A lot of the palettes I adapted from a site called ColourLovers, but the one you’re referring to was one of my own I think.
Here’s the definition. Colours are defined as RGB triplets out of 255. The “F 0.5″ bit at the end of line defines the length of transition to the next color in the list.
NEON_ORANGE_BLUEISH_BINEON_GK
INTRO 0 0 0 F 1
LE 128 10 0 F 1
LE 252 36 0 F 1
LE 255 68 1 F 1
LE 255 149 52 F 0.5
LE 255 255 230 F 0.5
LE 255 149 52 F 1
LE 255 68 1 F 1
LE 252 36 0 F 1
LE 128 10 0 F 1
LE 0 0 0 F 0.8
LE 0 21 44 F 0.8
LE 22 70 93 F 0.8
LE 25 174 178 F 0.8
LE 84 233 255 F 0.8
LE 161 255 255 F 0.3
LE 255 255 255 F 0.3
LE 161 255 255 F 0.8
LE 84 233 255 F 0.8
LE 25 174 178 F 0.8
LE 22 70 93 F 0.8
LE 0 21 44 F 0.8
LE 0 0 0 F 1
SET 0 0 0
LOOPS 4 POWER 0.6 END
Thanks a lot Georg – I’ll try it.
Greetings, KH
I just downloaded the app and I love it — you must love math and programming too to provide it for free! I have one suggestion for the Julia set function: when browsing the M set for Julia sets you can of course see the c parameter, but when you select the full screen Julia set, the c parameter goes away. It would be nice I think to display the c parameter along with the z plane coordinates so you can remember where in the M set you were when you switch to Julia set. Amazing speed! I usually run at 4096 all the time because I like to see as much detail as possible. Is there such a thing as variable precision arithmetic for the iOS so that you could zoom even further, given enough patience?
Thanks for the suggestions. There’s no technical difficulty in making the iterations arbitrarily selectable up to 65535 so I should probably allow that. I’m more hesitant to increase the max zoom level, less because of the extra precision needed to compute the tiles, but because the whole bookkeeping framework around which tiles go where and where is the user looking at would become much more expensive (currently all that stuff is 64 bit). I might try it but it’s very low priority.
Thanks for your quick response. I was thinking about what you said about higher zoom levels needing to keep track of ever increasing tiles, at least I think that’s what you said — I don’t have a clear picture of the structure of your fine program. What I was thinking was a “ultra zoom” mode, the object of which would be to drill in deep to a certain region of interest, but the trade off being that not so many tiles would be stored – sort of going deep at the expense of going wide, so to speak. Anyway, I am having a great time exploring the landscape.
I’m constantly trying to find a comparable app for the mac, and I don’t see one, so congrats on doing this for iOS. If the extra zooming were an option to vote for I’d probably pick it no matter what else anyone could come up with. Believe it or not, I constantly run into the limit in cases where I know (from gawking way way too long at this thing) that it would be interesting. I’m pretty sure I get what you mean about the difficulty. The problem isn’t storing extra tiles, the problem is how you even figure out what the viewpoint is. Right now it seems like you can just specify the address of any given view with three 64 bit integers (all three display to 14 digits — 2 ^ 64 is about 19 digits). If the entire system is based on that, you might have to overhaul a lot to do anything at all. That said, I’d pay a non-trivial amount to for it if it were an add-on ($10? $20??), which is saying a lot considering that it’s mostly for fun for me and I’m pretty skimpy.
I’m considering a mac port. That would also be a better candidate for higher-precision math.
gorgeous George, thanks a lot – images look great on iPad2 and your little pop-up window expresses the relationship between Julia sets and their Mandelbrot atlas.
I just starting to learn about OpenGl 2.0 for a different application of point-based iterative graphics; is all this done with shaders (I’m wowed by the speed!)? Is it the fragment shader that’s doing most of the heavy lifting?
PS. storing last position state (re,im,mag) so one could opt on launch to return to where you left off
PPS. thanks again, off to Appstore to leave +ve comment (not going to wait for Appirater to remind me!)
The heavy lifting in this app is done on the CPU. You could do some of it on the GPU but it runs out of precision pretty quickly.. after a few zooms you need more than 32 bits, which I think the GLES implementation on the apple devices is limited to. In this app the GPU is only used for display of the tiles.
thanks for the reply George.
That makes me even more impressed with the speed (should’ve thought of precision!) Now I’m in a quandary about which route to take for my project.
btw, my comment about storing last position state didn’t make much sense; I intended as a wish-list item.
Thanks again, Andy
My 2 cents on a feature discussion:
I’ve played around also with other Mandelbrot-APPs
and my judgement is, that Fragile is the one which gives
the most fun to me. I’m not sure whether a greater depth
or more iterations would be my first choice, because there is
so much to see already with the current possibilities.
The reason that I’ve asked George for the definition of a color
palette was, that I want to make a Zoom-Movie with on of the
the pictures I’ve found with Fragile as an endpoint. Not to be misunderstood,
I’m not asking for Zoom-Movies as a feature of Fragile!
My wishes would go in the direction of makeing it even more
comfortable than it already is:
- Favorite Places, so that I can come back to a nice place
- Resolution of the final rendering (mininum FullHD, which
I’m not getting in all zoom levels) to use pictures in slideshows
or as wallpapers on PC/MAC.
- Easy modification of color palettes to optimise a picture.
Could be a simple offset modification.
That are my wishes/dreams – for the time beiing😉
And I would even pay for a next version!
Thanks a lot again Georg for your effort.
–KH
Of cause it’s FRACTILE and not FRAGILE😏
It’s me again
I’ve done some tests regarding maximum zoom-level and maximum iteration.
The result is, that for the maximum zoom-level Fractile supports currently the
maximum number of iteration should be doubled (4096->8192).
This will allow to see the shape of the Mandelbrot-Set on maximum zoom-level.
If you’re interested in pictures I will provide them somehow.
–KH
o.k. – have a look at
http://www.planet-ellmau.com/Fractile/
for a comparison of different maximum iterations.
The examples done with a PC do have the same zoom-level as the
first picture done with Fractile on an iPhone 4s.
So I think for the current zoom-level that Fractile supports currently
8192 maximum iterations are o.k.
Greetings, KH
Keep learning!
Playing around again and again I
found more and more regions
on relatively low zoom-level that
would benefit from more iterations.
So maybe I was wrong in judeging
on my own wishlist
Keeping learning about fractals
–KH
I just made this (http://www.cesoid.com/mandelbrot) crude version of a web based tile-loading fractal. It runs on php, and this is the product of about the last 5 hours. This is on a shared server so don’t go crazy, it will likely get shut down.
It’s very limited. You can click to zoom in, bookmark to save your view, use the browser back button to zoom back out. No tile caching, smooth zooming, moving sideways, or decent anti-aliasing (it does a four sub-pixel average though). I experimented with some optimization but it just constantly left parts blacked out when they should have color. I have this idea that you could cache tiles globally (across all users) and move all the calculations to javascript to spread out the computing power (and avoid getting the boot from the shared server).
Rad!
Thanks for php table version. Unfortunately, in Firefox (11.0 for mac) there are gaps (2~3mm) between the rows (cols are fine)
The Best Fractal in App Store!
Infinity zoom PLZ!!!
Drop precision! Precision limit bypass, go simultaneously! Maybe Hold and modify…