[python-users] FrosCon Stand

Thomas Lenarz tommesml at netcologne.de
Sa Aug 21 10:15:44 CEST 2010


Hallo zusammen,

Ihr seid so fleißig. Ich wünsche Euch viel Erfolg auf der FrosCon!!! :-)

Leider bin ich in den letzten Wochen in der Arbeit etwas versumpft, dass 
ich abends wegen "viereckiger Augen"-Syndrom nicht mehr viel Lust hatte, 
mich zum e-Mail-Lesen an den Rechner zu setzen.

Heute morgen hatte ich spontan noch eine Idee:

Ihr könntet in publikumsarmen Zeiten (falls es die gibt) als Hingucker 
und "Lockmittel" die animierte Schlange laufen lassen, die ich auf dem 
Barcamp gezeigt habe:

http://wiki.python-forum.de/PythonBarCamp/Python%20Visual%20-%203D-Grafik-Programmierung

Auf einem Ubuntu System sollte es als Grundlage ausreichen, das Paket 
python-visual (VPython 3D scientific visualization library) zu 
installieren. (Aber Achtung ich erinnere mich, dass es zwischenzeitlich 
einmal einen Bug hatte und man es nur mit ein bischen Gebastel ans 
Laufen bekommen hat, das wird nicht lohnen, wenn es nicht direkt 
läuft... Hoffe, dass ist mittlerweile behoben.)

(Perspektive ändern: Click-Ziehen bei gedrückter rechter Maustaste,
Zoom: Click-Ziehen bei gedrückter mittlerer Maustaste)

So, muss jetzt auch los, werde heute vermutl. nicht mehr online sein.

Viele Grüße, viel Spaß und Erfolg an alle,

Thomas


---- Code von der Schlaengel-Schlange ---
#! /usr/bin/python

#
# 3D-Darstellung einer sich bewegenden Python-Schlange mit VPython
# Thomas Lenarz, Juni, 2009

import visual

__author__="Thomas Lenarz"
__date__ ="$24.06.2009 21:40:55$"


if __name__ == "__main__":

     # Schalter fuer Fullscreen Darstellung
     # visual.scene.fullscreen = True

     # Schalter fuer 3D-Darstellung (rot/blau-Brille)
     # visual.scene.stereo = 'redblue'

     # Schwanz der Schlange als Sinuskurve
     x = visual.arange( 0, 4 * visual.pi, 0.001 )
     c = visual.curve( x = x - 2 * visual.pi, y=visual.sin(x), 
color=visual.color.green, radius=0.1 )

     # Kopf: Elliposid (gruen) + 2 Ellipsoide (weiss) + 2 Ellipsoide 
(schwarz) als Augen
     s = visual.ellipsoid( pos=(2 * visual.pi, 0, 
0),length=0.8,height=0.5,width=0.5,color=visual.color.green )
     e1 = visual.ellipsoid( pos=(2 * visual.pi + 0.25, 0.1, 0.15 ), 
height=0.15,width=0.15,length=0.01,color=visual.color.white )
     e2 = visual.ellipsoid( pos=(2 * visual.pi + 0.25, 0.1, -0.15 ), 
height=0.15,width=0.15,length=0.01,color=visual.color.white )
     e11 = visual.ellipsoid( pos=(2 * visual.pi + 0.26, 0.11, 0.16 ), 
height=0.08,width=0.08,length=0.01,color=visual.color.black )
     e22 = visual.ellipsoid( pos=(2 * visual.pi + 0.26, 0.11, -0.16 ), 
height=0.08,width=0.08,length=0.01,color=visual.color.black )

     # Parameter fuer die Zunge (1 Konvex (Rechteck) + 2 Konvexe 
(Dreieck) fuer die Zungenspitze
     Z_LAENGE = 0.8
     Z_BREITE = 0.1
     Z_SPALTE = 0.2
     u = 2 * visual.pi + 0.25
     w = -0.05

     f1 = visual.frame()
     c1 = visual.convex( frame=f1,pos = [ ( 0,0,-Z_BREITE/2), (0 + 
Z_LAENGE - Z_SPALTE, 0, -Z_BREITE/2),
                                (0 + Z_LAENGE - Z_SPALTE, 0, 0 + 
Z_BREITE - Z_BREITE/2), (0, 0, 0 + Z_BREITE - Z_BREITE/2)  ], color = 
visual.color.red )

     c2 = visual.convex( frame=f1,pos = [ (0 + Z_LAENGE - Z_SPALTE, 0, 
-Z_BREITE/2), (0 + Z_LAENGE - Z_SPALTE, 0, 0 + Z_BREITE/2 - Z_BREITE/2),
                                (0 + Z_LAENGE, 0, -Z_BREITE/2)  ], color 
= visual.color.red )

     c3 = visual.convex( frame=f1,pos = [ (0 + Z_LAENGE - Z_SPALTE, 0, 0 
+ Z_BREITE - Z_BREITE/2), (0 + Z_LAENGE - Z_SPALTE, 0, 0 + Z_BREITE/2 - 
Z_BREITE/2),
                                (0 + Z_LAENGE, 0, 0 + Z_BREITE - 
Z_BREITE/2)  ], color = visual.color.red )

     f1.rotate( 
angle=visual.radians(-12),axis=(0,0,Z_BREITE),origin=(0,0,-Z_BREITE/2) )
     f1.pos=(u,w,0)

     # Schlange bewegen.... (Sie lebt.... ;-) )
     offset = 0
     while True:
         visual.rate(30)
         c.y=visual.sin( x + offset ) * 0.1 * x
         s.y=visual.sin( offset ) * 0.1 * 4 * visual.pi
         e1.y=visual.sin( offset ) * 0.1 * 4 * visual.pi
         e2.y=visual.sin( offset ) * 0.1 * 4 * visual.pi
         e11.y=visual.sin( offset ) * 0.1 * 4 * visual.pi
         e22.y=visual.sin( offset ) * 0.1 * 4 * visual.pi

         w = visual.sin( offset) * 0.1 * 4 * visual.pi - 0.1

         f1.y = visual.sin( offset) * 0.1 * 4 * visual.pi - 0.1

         offset += 0.05
         if offset >= 2 * visual.pi:
             offset = 0

         if visual.scene.mouse.clicked:
             print("Mouse clicked")
             visual.scene.exit_on_close()
             exit()
---



Mehr Informationen über die Mailingliste python-users