donut_drehend.py
Ein drehender Donut, bestehend aus zwei Ringen, kann mit Mausklick garniert werden. Ein Skriptparameter kontrolliert die maximale Streuselanzahl.
donut_drehend.py — text/python-source, 1 KB (1854 bytes)
Dateiinhalt
# -*- coding: utf-8 -*- # 3D-Donut # Einbinden der Module: 3D, Zufall, System (argumentvektor) from visual import * from random import random from sys import argv # Abfrage Argumentvektor, ansonsten Standard einsetzen if len(argv) > 1: maxstreusel = int(argv[1]) # String wird in int umgewandelt! else: maxstreusel = 20 # Fenstertitel, Kameraposition, Stereodarstellung scene.title = "Streusel auf den Donut!" scene.forward = (0,-.5,-1) #scene.stereo = "redcyan" # Teig und Glasur werden im Rahmen donut gefangen donut = frame() teig = ring(thickness=0.55, color=(.9,.8,.2), axis=(0,1,0), frame=donut) glasur= ring(thickness=0.56, color=(.3,.2,.1),\ material=materials.plastic, y=0.1, axis=(0,1,0), frame=donut) # Konstanten winkel=0.5 streuselzahl=0 # Streuselverbrauch anzeige = label(pos=donut.pos, text="Streuselverbrauch", \ box=False, line=False, yoffset=150, height=10) while streuselzahl < maxstreusel: # max. 50 Bilder pro Sekunde rate(50) # Rotation des Frames um y-Achse um 'winkel' pro Bild donut.rotate(angle=radians(winkel), axis=(0,1,0)) # Abgfrage: Maus-Event ereignet? if scene.mouse.events: # Maus-Event in Variable speichern sme = scene.mouse.getevent() # Verarbeitung des Maus-Events: Maus über Glasur und Taste gedrückt? if sme.pick == glasur and sme.press: # Streuselprotokoll streuselzahl += 1 # erzeuge Streusel relativ zu 'donut' sphere(pos=donut.world_to_frame(sme.pickpos), color=color.hsv_to_rgb((random(),1,1)), \ radius=0.05, material=materials.plastic, frame=donut) anzeige.text="Verbrauch: "+str(streuselzahl)+" Streusel" print streuselzahl, # Mögliche weitere Aufgaben: # Rotationsrichtung per Pfeiltasten ändern #...