caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Goswin von Brederlow <goswin-v-b@web.de>
To: Daniel de Rauglaudre <daniel.de_rauglaudre@inria.fr>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] MLbrot: Mandelbrot Set in OCaml
Date: Wed, 10 Nov 2010 00:56:55 +0100	[thread overview]
Message-ID: <87pqueuk3c.fsf@frosties.localnet> (raw)
In-Reply-To: <20101109110211.GA32550@yquem.inria.fr> (Daniel de Rauglaudre's message of "Tue, 9 Nov 2010 12:02:11 +0100")

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


  reply	other threads:[~2010-11-09 23:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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>
2010-11-09 11:02   ` Daniel de Rauglaudre
2010-11-09 23:56     ` Goswin von Brederlow [this message]
     [not found]     ` <1898580325.415190.1289347025607.JavaMail.root@zmbs3.inria.fr>
2010-11-10 10:36       ` Daniel de Rauglaudre

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pqueuk3c.fsf@frosties.localnet \
    --to=goswin-v-b@web.de \
    --cc=caml-list@inria.fr \
    --cc=daniel.de_rauglaudre@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).