Ich weiss, dass zu diesem Thema ein thead existiert, nur ist die vorgeschlagene Lösung verbunden mit vPython. Ich suche eine andere Lösung.
Folgendes Skript funktioniert, es stellt einen Quader dar. Ich möchte nun ein Zylinder nach gleichem Prinzip darstellen. Hat mir jemand eine gute Quelle, ein Script oder einen Vorschlag?
Vielen Dank für eure Hilfe!
Code: Alles auswählen
from zaMa import *
rotiere = 0
vWinkel = 90
hWinkel = 0
def drawCube(side):
# halbe seitenlaenge => ursprung in der mitte
s = side/2.
# ecken analog zu modell oben
c = [
[-s,-s,s],
[-s,-s,-s],
[-s,s,s],
[-s,s,-s],
[s,-s,s],
[s,-s,-s],
[s,s,s],
[s,s,-s]
]
# seiten zeichnen
Polygon([c[0],c[1],c[3],c[2]])
Polygon([c[4],c[5],c[7],c[6]])
Polygon([c[0],c[4],c[6],c[2]])
Polygon([c[1],c[5],c[7],c[3]])
Polygon([c[2],c[6],c[7],c[3]])
Polygon([c[0],c[4],c[5],c[1]])
SetColor([0,0,0])
# kanten zeichnen
#SetColor([0,0,0])
#SetLineSize(3)
#Lines([c[0],c[1],c[3],c[2]])
#Lines([c[4],c[5],c[7],c[6]])
#Lines([c[0],c[4],c[6],c[2]])
#Lines([c[1],c[5],c[7],c[3]])
#Lines([c[2],c[6],c[7],c[3]])
#Lines([c[0],c[4],c[5],c[1]])
def OnDraw():
Translate(GetWindowWidth()*.5,GetWindowHeight()*.5)
Rotate(hWinkel,[0,1,0])
Rotate(vWinkel,[1,0,0])
drawCube(100)
SetBackgroundColor(1,1,1)
def OnMouseButtonDown(x,y,button):
global rotiere
if(button == MOUSE.LBUTTON):
rotiere = 1
def OnMouseButtonUp(x,y,button):
global rotiere
if(button == MOUSE.LBUTTON):
rotiere = 0
def OnMouseMotion(x,y):
global hWinkel,vWinkel,rotiere
if rotiere == 1:
hWinkel = 360./GetWindowWidth() * (x) -180;
vWinkel = -180./GetWindowHeight() * (y-GetWindowHeight());
#print(hWinkel,vWinkel)
Redraw()
def OnResize(w,h):
Redraw()
SetupEnvironment("Farbsystem",800,800, ENV.WINDOW)
StartEnviroment()