[Edu-sig] Pickling Polyhedra
Arthur
ajsiegel at optonline.net
Wed Mar 22 03:40:13 CET 2006
Kirby -
You might want to check out Yafray
http://www.yafray.org/
It's a powerful raytracers, with ties to Blender (with ties to Python), and
a pure XML based SDL.
If my free minute, or next lifetime, I am hoping to do a PyGeo to Yafray
export in addition to PyGeo to Povray as there is now.
Among my motives is simply to get more hands on with XML processing concepts
- which is something I need to do more for business reasons than anything
else.
These kinds of synergies between what I do because I like to do it and what
I do because I can get paid to do it is how PyGeo gets financed - in a
manner of speaking.
Or that's at least the story to my wife ;)
Art
> >-----Original Message-----
> >From: edu-sig-bounces at python.org
> >[mailto:edu-sig-bounces at python.org] On Behalf Of kirby urner
> >Sent: Tuesday, March 21, 2006 9:27 PM
> >To: edu-sig at python.org
> >Subject: [Edu-sig] Pickling Polyhedra
> >
> >OK, so this title is somewhat misleading, because pickling
> >and shelving is one of the things I've not yet gotten around
> >to, vis-a-vis Polyhedra. But let me tell you about some of
> >the other things I've done (classic bait and switch, I realize).
> >
> >First, what data structures to use? Well, no need to
> >reinvent the wheel here. Geometers discovered long ago that
> >labeled vertices made a lot of sense, which suggests a
> >dictionary. But we're not done.
> >What vertices connect to what? Just edges (pairs of connected
> >vertices) might seem like the answer but then figuring out
> >the faces turns out to be hard, relative to how easy it'd be
> >if the faces were simply a part of the data.
> >
> >And that suggests a list of tuples perhaps, the list being
> >Faces and each tuple being a face. Within the tuple,
> >labels, keys in a dictionary of saved Vertices. And what
> >about edges? They derive from Faces, by means of a simple
> >algorithm (weeding out duplicates is part of it -- the
> >native Set type may prove useful).
> >
> >So what about the *values* of our Vertexes dictionary?
> >[Vertexes: an intentional respelling, per Synergetics -- I
> >like the 'x-marks-a-rail-crossing' aesthetic]. I vote for
> >vectors (lovely alliteration). Of course the Clifford
> >Algebra people may have other ideas, and I can't say I'd be
> >against them. But for now, simple XYZ coordination is
> >sufficient, or try our newfangled Quadrays, with
> >only-positive four-tuples (a member of the "simplicial
> >coordinate system" family -- "simplicial" from "simplex,"
> >our tetrahedron or "minimum system" in synergetic geometry).
> >
> >So that's the data structure: a dictionary of vertex
> >vectors, gathered into face-tuples in a list. There's good
> >practice with all three main collection types here, plus
> >strings, if you use those to label your vertices (you could
> >also just use plain integers, a popular choice among
> >computational geometers).
> >
> >So one design pattern would be this: define your Polyhedron
> >class to "eat" your data structures. Build in rotation,
> >translation and scaling. Have the results of these
> >operations be new polyhedra, i.e.
> >these are not "changes in place" even if the rotations are minor.
> >Every change begets a new self. Very Buddhist, very "be here now".
> >
> >Then, make a Writer superclass as a paradigm consumer of
> >these Polyhedron objects (an icosahedron say, or rhombic
> >triacontahedron of 120 T modules). The polyhedra themselves
> >are fairly innocent of i/o.
> >At this superclass level, maybe there's a default data dump,
> >a YAML or XML generator. But anything more elaborate and
> >application specific, such as a VRML, VPython, POV-Ray, EIG
> >or LiveGraphics3D writer (and I've written all of these in
> >my day), should simply eat a Polyhedron and scribble the
> >file. The Polyhedron class itself remains blissfully
> >ignorant of all these nitty gritty requirements.
> >
> >>From a students point of view, how might all this work?
> >XML and file
> >i/o is probably going to come through other topical
> >segments. I'm a big fan of using kml files ("camel files")
> >out of Google Earth. The syntax of class construction will
> >likewise already be familiar, as will these basic Python
> >data structures (dictionary, tuple and list).
> >
> >The Vector concept might be new though. We could start with that.
> >Vector algebra is very graphical, plays well with geometry.
> >A computer graphics savvy curriculum is going to need vectors.
> >Implement these natively in pure Python. Then get into the
> >rotation algorithms. 3x3 matrices should be sufficient (our
> >newfangled Quadrays come with 4x4s, thanks to Tom Ace) -- no
> >need for homogenous coordinates at this level.
> >
> >To rotate is to hit every unique vector in the Vertexes
> >dictionary, and to spit back a new poly (now rotated).
> >
> >My inclination is to focus on POV-Ray early, as this full
> >featured ray tracer offers hours of fun to those who would
> >get lost in it. A Python polyhedron writer only takes
> >advantage of a small subset of POV-Ray's capabilities, but
> >there's much more to explore "off camera".
> > A goal is to unleash the artist in each student, to give
> >them high powered creativity tools. Yes, mastery of
> >mathematics is important, but not at the expense of a
> >well-developed sense of aesthetics.
> >"Ethics = aesthetics" wrote Ludwig Wittgenstein, in his
> >Tractatus Logico-Philosophicus. Our Python-based
> >mathematics aims for some Athenian style panache, not just
> >for Spartan style bare bones efficiency.
> >
> >Where to go after POV-Ray I'm not so sure. I'm not sure it matters.
> >Depends on the curriculum, the teacher, the student. Plus
> >I'm expecting the IronPython branch to open new territory,
> >hitherto unexplored. VPython is certainly fun, per Arthur's
> >PyGeo, my Hypertoons, and any number of art-science projects
> >that others may brainstorm. I'm looking forward to
> >witnessing a lot of creativity in these areas, having helped
> >craft a launching pad or starting gate, with plenty of help
> >from others (Pythonistas, Pyconistos -- some in full Monty).
> >
> >Anyway, now that we've got Python and Polyhedra in the
> >picture, I'm thinking mathematics learning will be a lot
> >more rewarding and fun.
> >Let the good times roll.
> >
> >Exercise:
> >
> >Relate the above design pattern proposal to the
> >model-view-controller architecture. Explain how the above
> >might be consistent and/or inconsistent with MVC concepts.
> >
> >====
> >
> >K. Urner
> >4D Studios
> >PDX USA
> >2006.3.21
> >_______________________________________________
> >Edu-sig mailing list
> >Edu-sig at python.org
> >http://mail.python.org/mailman/listinfo/edu-sig
> >
More information about the Edu-sig
mailing list