* MLbrot: Mandelbrot Set in OCaml @ 2010-11-08 15:03 Daniel de Rauglaudre 2010-11-08 16:07 ` [Caml-list] " Goswin von Brederlow [not found] ` <698193382.354372.1289232453372.JavaMail.root@zmbs3.inria.fr> 0 siblings, 2 replies; 5+ messages in thread From: Daniel de Rauglaudre @ 2010-11-08 15:03 UTC (permalink / raw) To: caml-list Hi everybody! New release of MLbrot: 1.00 MLbrot is a program allowing to explore the Mandelbrot Set and produce nice fractal images. With some extra work, can produce videos. Can be helped by other computers, via internet, to speed up images calculations. Interfaced with 3 graphic toolkits: Lablgtk2, OpenGL and Olibrt. You can choose the one(s) you want at configure time, or let the 'configure' shell to select the ones it finds. Best interface is with Lablgtk2 (it has menus and progress bars). Web site and download at: http://pauillac.inria.fr/~ddr/mlbrot/ You need OCaml and Camlp5 to compile. You need at least one library installed: Lablgtk2, OpenGL or Olibrt. Very useful library too: GMP/MPZ to display deep images (zoom > 2^46). Documentation not yet done. Just launch it, try out option -help and/or ask me. Enjoy! -- Daniel de Rauglaudre http://pauillac.inria.fr/~ddr/ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Caml-list] MLbrot: Mandelbrot Set in OCaml 2010-11-08 15:03 MLbrot: Mandelbrot Set in OCaml Daniel de Rauglaudre @ 2010-11-08 16:07 ` Goswin von Brederlow [not found] ` <698193382.354372.1289232453372.JavaMail.root@zmbs3.inria.fr> 1 sibling, 0 replies; 5+ messages in thread From: Goswin von Brederlow @ 2010-11-08 16:07 UTC (permalink / raw) To: Daniel de Rauglaudre; +Cc: caml-list Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr> writes: > Hi everybody! > > New release of MLbrot: 1.00 > > MLbrot is a program allowing to explore the Mandelbrot Set and produce > nice fractal images. With some extra work, can produce videos. Can be > helped by other computers, via internet, to speed up images calculations. > > Interfaced with 3 graphic toolkits: Lablgtk2, OpenGL and Olibrt. You > can choose the one(s) you want at configure time, or let the 'configure' > shell to select the ones it finds. > > Best interface is with Lablgtk2 (it has menus and progress bars). > > Web site and download at: > http://pauillac.inria.fr/~ddr/mlbrot/ > > You need OCaml and Camlp5 to compile. > You need at least one library installed: Lablgtk2, OpenGL or Olibrt. > Very useful library too: GMP/MPZ to display deep images (zoom > 2^46). > > Documentation not yet done. Just launch it, try out option -help > and/or ask me. > > Enjoy! Only looked at the pictures so far but they do look good. I'm missing some screenshots though. How does the interface look like? I assume you have some way to select a part of the image to zoom? It would also be nice to know a bit more about what drawing methods you support. Do you just compute every pixel or do you support guessing, boundary trace, tesseracting? Also do you have a coloring mode using distance estimation? E.g. color all points < 0.5 pixels distance from the M-Set white. Can you zoom and refine the image like xaos does? Do you support the single orbital iteration method? That puts a 3x3 points grid over the image plus 4 control points. Points of the image are aproximated from the 9 grid points. The 13 points are iterated a few iterations as long as the 4 reference points are close to approximating the same points. If the error becomes to great you go back an iteration, subdivide the grid into 4 parts, approximate the missing point and repeat for each subgrid. Esspecially on dep zooms this can speed up calculations by magnitudes since the first few thousand iterations of each point will be done by calculating only 14 points and approximating. You say you are using OpenGL, so where are the 3D images? I've converted some 20 year old code into ocaml a while back that generates 3D images. Putting the height map into OpenGL and render it through that would probably improve the quality: http://mrvn.homeip.net/mandelbrot/ If you are interested I can share the algorithm for the height calculation (which is all you really need) and example source for this (just don't have it at hand at the moment or I would just paste it here). MfG Goswin ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <698193382.354372.1289232453372.JavaMail.root@zmbs3.inria.fr>]
* Re: [Caml-list] MLbrot: Mandelbrot Set in OCaml [not found] ` <698193382.354372.1289232453372.JavaMail.root@zmbs3.inria.fr> @ 2010-11-09 11:02 ` Daniel de Rauglaudre 2010-11-09 23:56 ` Goswin von Brederlow [not found] ` <1898580325.415190.1289347025607.JavaMail.root@zmbs3.inria.fr> 0 siblings, 2 replies; 5+ messages in thread From: Daniel de Rauglaudre @ 2010-11-09 11:02 UTC (permalink / raw) To: caml-list Hi, On Mon, Nov 08, 2010 at 05:07:33PM +0100, Goswin von Brederlow wrote: > Only looked at the pictures so far but they do look good. I'm missing > some screenshots though. How does the interface look like? I assume you > have some way to select a part of the image to zoom? When clicking with left button, you zoom (twice) centered to that point. Middle button: recenter. Right button: unzoom. And the keys 'z' and 'x' zoom and unzoom, 'Z' and 'X' do it 10 times. > It would also be nice to know a bit more about what drawing methods you > support. Do you just compute every pixel or do you support guessing, > boundary trace, tesseracting? I compute every pixel. I searched on the Internet for faster algorithms but I did not find. What are guessing, boundary trace and tesseracting ? Well, I am going to google these terms :-) > Also do you have a coloring mode using distance estimation? > E.g. color all points < 0.5 pixels distance from the M-Set white. No. I see that I have many things to learn... :-) > Can you zoom and refine the image like xaos does? I did not know xaos, so I installed it, and tested it a little. Well, it is very fast indeed! Yes, I refine the image (you mean around Mandelbrot islands ?) by extending the number of iterations some times. > Do you support the single orbital iteration method? That puts a 3x3 > points grid over the image plus 4 control points. Points of the image > are aproximated from the 9 grid points. The 13 points are iterated a few > iterations as long as the 4 reference points are close to approximating > the same points. If the error becomes to great you go back an iteration, > subdivide the grid into 4 parts, approximate the missing point and > repeat for each subgrid. Esspecially on dep zooms this can speed up > calculations by magnitudes since the first few thousand iterations of > each point will be done by calculating only 14 points and approximating. Oops, I have to read that again, that seems interesting but at the first reading, I don't understand everything. > You say you are using OpenGL, so where are the 3D images? History: I was just looking for a graphic toolkit instead of mine (olibrt, which is old and works only on X Window). Many people here (Inria) use OpenGL, to indeed doing 3D, so I tested, but only in 2D. Well, actually, I tested it on a mini-small-tiny-mplayer I wrote in OCaml: OpenGL is interesting because of Direct Rendering which accelerate the displaying. So, I tested OpenGL in Mlbrot, after having separated the graphic toolkit from the rest of the program. Perhaps, that makes it work under Mac and Windows? I don't know. And a few days ago, I tested with Gtk, which appears to be the good solution and I continue programming with it. Perhaps I try out the 3D feature of the Mandelbrot Set one day. I just looked at a couple of sites talkint about it. > I've converted some 20 year old code into ocaml a while back that > generates 3D images. Putting the height map into OpenGL and render it > through that would probably improve the quality: > http://mrvn.homeip.net/mandelbrot/ Interesting, but I would prefer something more 3D, like cauliflowers. Thank you for your message! -- Daniel de Rauglaudre http://pauillac.inria.fr/~ddr/ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Caml-list] MLbrot: Mandelbrot Set in OCaml 2010-11-09 11:02 ` Daniel de Rauglaudre @ 2010-11-09 23:56 ` Goswin von Brederlow [not found] ` <1898580325.415190.1289347025607.JavaMail.root@zmbs3.inria.fr> 1 sibling, 0 replies; 5+ messages in thread From: Goswin von Brederlow @ 2010-11-09 23:56 UTC (permalink / raw) To: Daniel de Rauglaudre; +Cc: caml-list Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr> writes: > Hi, > > On Mon, Nov 08, 2010 at 05:07:33PM +0100, Goswin von Brederlow wrote: > >> Only looked at the pictures so far but they do look good. I'm missing >> some screenshots though. How does the interface look like? I assume you >> have some way to select a part of the image to zoom? > > When clicking with left button, you zoom (twice) centered to that > point. Middle button: recenter. Right button: unzoom. And the keys > 'z' and 'x' zoom and unzoom, 'Z' and 'X' do it 10 times. > >> It would also be nice to know a bit more about what drawing methods you >> support. Do you just compute every pixel or do you support guessing, >> boundary trace, tesseracting? > > I compute every pixel. I searched on the Internet for faster algorithms > but I did not find. What are guessing, boundary trace and tesseracting ? > Well, I am going to google these terms :-) Guessing: ========= Compute the image in a low resolution, e.g. every 4th pixel and every 4th row. A) If the 4 corners of a square are the same color then guess the square is all the same color. or B) If 3x3 computed pixels are the same color guess that there is a uniformly colored square around the center pixel, a square formed by the centers of the 4 squares formed by the pixel. # # # +---+ | | # | # | # | | +---+ # # # Now compute every 2th pixel and every 2th row where you haven't computed or guessed. Guess again. Compute the remaining pixels. You can also start with every 8th pixel/row or 16th. The number of passes should be variable. Boundary Trace: =============== We know the M-Set is all connected. The bands of color we draw with various methods are also conected. So we don't have to compute the interior of each color band or the M-Set, we only need the boundary. Start in the top left corner and compute right until the color changes. You have found a boundary. Follow the boundary till you've closed the area and fill it with the color. Repeat with the next uncolored pixel. Tesseracting: ============= Compute the borders of the image. If the border is all one color the interior is all one color. Otherwise divide into 4 parts and repeat. >> Also do you have a coloring mode using distance estimation? >> E.g. color all points < 0.5 pixels distance from the M-Set white. > > No. I see that I have many things to learn... :-) > >> Can you zoom and refine the image like xaos does? > > I did not know xaos, so I installed it, and tested it a little. Well, it > is very fast indeed! Yes, I refine the image (you mean around Mandelbrot > islands ?) by extending the number of iterations some times. No. I mean like xaos does. When zooming in it keeps the computed pixels and only inserts new lines or rows where there are gaps. One effect of this is that in an animation the chaotic part of the image, where color for every pixel differs to the next, doesn't just flicker. >> Do you support the single orbital iteration method? That puts a 3x3 >> points grid over the image plus 4 control points. Points of the image >> are aproximated from the 9 grid points. The 13 points are iterated a few >> iterations as long as the 4 reference points are close to approximating >> the same points. If the error becomes to great you go back an iteration, >> subdivide the grid into 4 parts, approximate the missing point and >> repeat for each subgrid. Esspecially on dep zooms this can speed up >> calculations by magnitudes since the first few thousand iterations of >> each point will be done by calculating only 14 points and approximating. > > Oops, I have to read that again, that seems interesting but at the > first reading, I don't understand everything. > >> You say you are using OpenGL, so where are the 3D images? > > History: > > I was just looking for a graphic toolkit instead of mine (olibrt, > which is old and works only on X Window). Many people here (Inria) > use OpenGL, to indeed doing 3D, so I tested, but only in 2D. Well, > actually, I tested it on a mini-small-tiny-mplayer I wrote in OCaml: > OpenGL is interesting because of Direct Rendering which accelerate the > displaying. > > So, I tested OpenGL in Mlbrot, after having separated the graphic > toolkit from the rest of the program. Perhaps, that makes it work > under Mac and Windows? I don't know. And a few days ago, I tested > with Gtk, which appears to be the good solution and I continue > programming with it. > > Perhaps I try out the 3D feature of the Mandelbrot Set one day. I just > looked at a couple of sites talkint about it. > >> I've converted some 20 year old code into ocaml a while back that >> generates 3D images. Putting the height map into OpenGL and render it >> through that would probably improve the quality: >> http://mrvn.homeip.net/mandelbrot/ > > Interesting, but I would prefer something more 3D, like cauliflowers. > > Thank you for your message! MfG Goswin ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <1898580325.415190.1289347025607.JavaMail.root@zmbs3.inria.fr>]
* Re: [Caml-list] MLbrot: Mandelbrot Set in OCaml [not found] ` <1898580325.415190.1289347025607.JavaMail.root@zmbs3.inria.fr> @ 2010-11-10 10:36 ` Daniel de Rauglaudre 0 siblings, 0 replies; 5+ messages in thread From: Daniel de Rauglaudre @ 2010-11-10 10:36 UTC (permalink / raw) To: Goswin von Brederlow; +Cc: caml-list Hi, On Wed, Nov 10, 2010 at 12:57:05AM +0100, Goswin von Brederlow wrote: > Guessing: Ah, yes, I already did that, I found that on the Web, I did not know it was called "guessing". I loop with chunks 16, 8, 4, 2 and 1. > Boundary Trace: > Tesseracting: Both interesting indeed! Ok, I look at them! Thanks a lot! > No. I mean like xaos does. When zooming in it keeps the computed pixels > and only inserts new lines or rows where there are gaps. One effect of > this is that in an animation the chaotic part of the image, where color > for every pixel differs to the next, doesn't just flicker. I already do that. -- Daniel de Rauglaudre http://pauillac.inria.fr/~ddr/ ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-11-10 10:36 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2010-11-08 15:03 MLbrot: Mandelbrot Set in OCaml Daniel de Rauglaudre 2010-11-08 16:07 ` [Caml-list] " Goswin von Brederlow [not found] ` <698193382.354372.1289232453372.JavaMail.root@zmbs3.inria.fr> 2010-11-09 11:02 ` Daniel de Rauglaudre 2010-11-09 23:56 ` Goswin von Brederlow [not found] ` <1898580325.415190.1289347025607.JavaMail.root@zmbs3.inria.fr> 2010-11-10 10:36 ` Daniel de Rauglaudre
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox