Python Fractal Landscape

Python Fractal Landscape

24 comments · 94% upvoted · source · other discussions

comments

Swipecat [OP]

I watched the Nova documentary "Fractals - Hunting the Hidden Dimension" on Youtube, and was interested in the story of a computer graphics engineer at Boeing, Loren Carpenter, who created the first computer-generated mountain landscapes. He did this after reading Benoit Mandelbrot's book about fractals, and created the landscapes by diving them into progressively smaller triangles. I tried out the idea with a small Python script.

To set up an easy coordinate system, I used squares split diagonally into right-angle triangles, which could be split into smaller right-angle triangles with random elevations. That's somewhat imperfect but is enough to test the idea. I used the "Mayavi" Python library for 3D visualisation (since it was in the Ubuntu repository) to display the result.

I thought this group might be interested in the result.

My test had just 20 lines of Python.

Code on Pastebin

Code on Github

The image shown was generated with "random.seed(6)" added. Rotation, zoom and background colour were set interactively in the Mayavi visualizer.

The Python code was dashed out as a quick test, so the method of finding the correct corner points in the correct order is not very readable. Sorry about that. After writing this test, I Googled for the algorithms usually used in fractal landscape generation and found out about the fractal terrain "diamond square algorithm", so if you want to know more about this subject, then I suggest you do the same.

Edit: Here's two more landscapes on Imgur

jiminiminimini

You should check out /r/proceduralgeneration

Swipecat [OP]

You should check out /r/proceduralgeneration

Thanks. Some interesting stuff there.

sneakpeekbot
Gear5th

Thanks for this. Found some really interesting stuff!

grmblflx

I dont know how i would use this or if this is any good, but i kinda like it :)

[deleted]

I can imagine using it for more artistic applications, or maybe even game development.

[deleted]

You should check out pyenv. No need to limit yourself to distro-provided libs or python builds.

[deleted]

[deleted]

Swipecat [OP]

Thanks. Bookmarked.

Especuloide

Very nice man !!! Have never heard about Mayavi before, thanks.

mrpopenfresh

I remember watching a documentary on fractals and they had this game designer on who figured out you could use them for stuff like this.

*edit: exactly what OP said.

sofagoose

This is really cool!

haZard_OS

Impressive! Did any renderings come out looking weird or do they all look as good as this?

Swipecat [OP]

I've added two more to my initial comment.

Not weird as such, but with most of them, one edge or another would end up raised so that it was difficult to rotate it to a view where you didn't see an obviously cut-off edge.

CokeOnBooty

Posts like this give me the motivation to keep learning Pyhton. Thank you so much OP!

tresclow

I expected this to be some sort of "I hate Python" post, like this

__thinline__

I love that episode of Nova - one of my favorites!

[deleted]

Wow... takes me back years ago... we used to do similar (although much less detailed) stuff on the Atari ST. Rendering took hours...

B-R0ck

How

nakatanaka

nice vertical shale

[deleted]

That's pretty neat! Thanks for sharing.

stOneskull

Awesome, mate! Looks really nice :)