[Edu-sig] Design patterns

Kirby Urner urnerk at qwest.net
Wed Aug 24 18:42:04 CEST 2005


> Here's some code, which as yet doesn't actually make use of VPython -- but
> that's where it's going.
> 

And here's where it (the code) went.  

Very minimal, at this point but enough to get VPython actually doing
something with the triangle.  

A student could start with this code and start adding stuff e.g. make it
more colorful, add defaults (e.g. radius), cycle through random triangles in
main() -- using a try loop to catch illegals -- and so on.

Kirby

===

class Vpyview(object):
    """
    A viewer: view using VPython
    """

    def __init__(self):
        self._garbage = []
        
    def display(self, shape):
        self._garbagecollect()
        self._showverts(shape.verts)
        self._showedges(shape.edges, shape.verts)
        time.sleep(.1)        

    def _garbagecollect(self):
        for g in self._garbage:
            g.visible = 0
    
    def _showedges(self, edges, verts):
        for e in edges:
            v0 = vector(verts[e[0]])
            v1 = vector(verts[e[1]])
            edge = cylinder(pos=v0, axis=v1-v0, radius = 0.1)
            self._garbage.append(edge)
            
    def _showverts(self, verts):
        for v in verts:
            v0 = vector(verts[v])
            sph = sphere(pos=v0, radius=0.1)
            self._garbage.append(sph)

from visual import *
import time

def main():
    """
    Main call sequence
    """
    thescene = display(title='MVC Demo', center=(0,0,0),
                         background=(.5, .5, .5))
    thescene.autoscale = 0    
    theviewer = Vpyview()    
    theshape = TriAdapter(3,3,3)
    pulser = Pulser(theshape, theviewer)
    pulser.run()
    




More information about the Edu-sig mailing list