[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