[Edu-sig] Just for Fun: Another Fractal (ASCII output)

Kirby Urner kurner at oreillyschool.com
Tue Mar 4 21:32:50 CET 2014


Just to conclude the the code part (from me), I realized while walking this
morning that POV-Ray scene description language is such that the ordering
of sphere placement would not matter, so just iterate through the keys.

The code before tried to construct the keys by duplicating the raster
pattern of the Fractal's __init__ -- quite unnecessarily.

    def __init__(self, left_x, top_y, right_x, bottom_y, delta_x, delta_y):
        """Top Left, Top, Far Right, Bottom, x increment, y increment"""

As also suggested by F.delta_x below, I also modified Fractal in an obvious
way:  to accept delta_x and delta_y as arguments, along with: x minimum
(left), y maximum (top), x maximum (right), y minimum (bottom).

If this were scaffolding in a class setting, a next iteration might involve
jiggering the API, to accept (top, left) and (bottom, right) as tuples
perhaps.

Here's the revised make_pov function:

def make_pov(F):
    """
    eat Fractal object, output POV-ray spheres
    for inclusion in a POV-Ray file
    """
    rows = ""
    radius = F.delta_x/2
    for x,y in F:
        v = abs(F[(x,y)])
        # calibrate by magnitude of stored value
        if v >= 3:
            color = "rgb<1,1,1>"
        elif 3 > v >= 2.5:
            color = "rgb<1,0.65,0>"
        elif 2.5 > v >= 1.5:
            color = "rgb<0.45,0.45,0>"
        elif 1.5 > y >= 1.0:
            color = "rgb<0.25,0.25,0>"
        else:
            color = "rgb<0.25,0.25,0>"
        rows += sphere_tmpl.format(x=x, y=y, z=0, radius=radius,
color=color)
    return rows

And here's a screen shot of what I get for running the Python below:

http://www.flickr.com/photos/kirbyurner/12934900014/lightbox/

def _test2():
    # run me and then render me in POV-Ray to see 'fractal'
    f = Fractal(-2.2, 1.4, 0.8, -1.4, 0.005, 0.005)
    pov_out.make_file(f)  # mandelbrot.pov is the output

...and in bash:

povray +Imandelbrot.pov +A[0.1] +W1024 +H768

I've been into Python + Fractals before here on edu-sig.

Here's a solution using PIL:

http://4dsolutions.net/ocn/fractals.html

And in this one I use VPython to play Game of Life (also Chaos Math) on a
hexapent:

http://4dsolutions.net/ocn/life.html

Then there's the Wolfram / NKS stuff ("new kind of science"), very doable
in tkinter for example:

http://www.frank-buss.de/automaton/rule30.html

Lots of people work in this area.  I've done nothing with Python and the
Mandelbulb.

Kirby
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/edu-sig/attachments/20140304/194acbbd/attachment.html>


More information about the Edu-sig mailing list