hi christian
also ich probiere es mal so genau wie möglich zu sagen
1.) oben ist der würfel in seiner ganzen form und man kann ihn drehen wie man will + geschwindigkeit regeln etc.
2.) ich habe probiert einfach nur das fenster zu erstellen und darin ein würfel der sich rotiert also ohne button ohne geschwindigkeit einfach nur der rotierende würfel
3.) klappt auch alles soweit nur dann wenn ich starten will kommt auf gut deutsch gar nix mehr
- z.b. fenster kommt nicht so groß wie oben sondern kleiner und da steht einfach nur würfel
- oder fenster wird erstellt mit buttons aber ich seh kein würfel in der mitte
ich hoffe ihr wisst jetzt was ich mein - einfach den würfel umwandeln damit er in einem fenster ist ohne die ganzen buttons bin schon den ganzen tag dabei aber noch bin ich nicht ganz dahinter gekommen also wer da was weiß bzw. mir helfen will bitte melden
zur fehlerbeschreibung : da steht dann z.b. konnte xxx nicht finden [ xxx = beispiel ]
edit: mit xxx mein ich einfach befehle die dann irgendwo fehlen damit das läuft
Bewegbarer Würfel
-
- User
- Beiträge: 38
- Registriert: Freitag 8. April 2005, 16:33
- Wohnort: Krefeld
-
- Python-Forum Veteran
- Beiträge: 1209
- Registriert: Montag 29. September 2003, 17:18
- Wohnort: Purkersdorf (bei Wien [Austria])
Hi!
Also ich versteh auch nicht was die ganze Aufregung soll.
@-Sugar Princes-:
Hast Du schon mal gesehen was Leonidas gepostet hat? Ist das nicht genau das was Du willst?
Gruß, mawe
Also ich versteh auch nicht was die ganze Aufregung soll.
@-Sugar Princes-:
Hast Du schon mal gesehen was Leonidas gepostet hat? Ist das nicht genau das was Du willst?
Gruß, mawe
-
- User
- Beiträge: 38
- Registriert: Freitag 8. April 2005, 16:33
- Wohnort: Krefeld
hi mawe ups das hab ich ja voll übersehenmawe hat geschrieben:Hi!
@-Sugar Princes-:
Hast Du schon mal gesehen was Leonidas gepostet hat? Ist das nicht genau das was Du willst?
Gruß, mawe
haben anscheinend fast gleich gepostet sodass mein post auf die zweite seite kam und ich dachte da is nix neues aber jetzt wo du es sagst
hab es gleich mal ausprobiert - hatte zwar kurze start probleme was aber nicht an den befehlen liegt sondern einen anderen grund hatte aber es lief dann doch ich werde es mir jetzt noch mal in ruhe anschauen
danke nochmal
-
- User
- Beiträge: 38
- Registriert: Freitag 8. April 2005, 16:33
- Wohnort: Krefeld
so noch mal dahin zurück jupp is es hab mir das jetzt mal die letzten tagen angeschaut und versucht dadurchzukommen hab immer direkt definitionen dabei geschrieben was da gerade passiertmawe hat geschrieben:Hi!
@-Sugar Princes-:
Hast Du schon mal gesehen was Leonidas gepostet hat? Ist das nicht genau das was Du willst?
Gruß, mawe
ich hab leider das gefühl das vll. etwas zu ungenau ist bzw. bei einigen sachen kam ich ins stocken [ siehe # zeichen wo nix hinter steht ]
kannst du dir das mal bitte anschauen oder ein anderer vielleicht
hab da noch ein paar sachen rausgenommen die leonidas drin gelassen hat da die ja hier nicht gebraucht werden die buttons und so sind ja deaktiviert daher auch der aufruf der farbe am anfang
----------------------------------------------------------------------------------
Code: Alles auswählen
useIDLE = 0
# colors of cubes (timecube,realcube,connectioncube)
# Farbe des Würfels (Zeitwürfel, realer Würfel , Verbindungswürfel)
e_colors = [0,"#8080ff","#ff0000","#70d090"]
# delay for animation
# Verzögerung für Animationen
showdelay = 20 #50
# centric projection distance
# zentraler Projektionsabstand ??
dist = 7
# background of canvas if necessary
# Hintergrund der Grafik falls vorhanden
canvascolor = "#ffffff" #None # "#rrggbb"
# Importiere: Tkinter Befehle;bestimmte mathematische Funktionen;copy für befehle die z.b. nicht durch [:] kopiert werden.
from Tkinter import *
import math
import copy
# Würfel
class HCube:
# Eingebaute Funktion
def __init__(self):
# Ecken des Würfels
self.corners = [[-1.0,-1.0,-1.0,-1.0],[ 1.0,-1.0,-1.0,-1.0],
[-1.0, 1.0,-1.0,-1.0],[ 1.0, 1.0,-1.0,-1.0],
[-1.0,-1.0, 1.0,-1.0],[ 1.0,-1.0, 1.0,-1.0],
[-1.0, 1.0, 1.0,-1.0],[ 1.0, 1.0, 1.0,-1.0],
[-1.0,-1.0,-1.0, 1.0],[ 1.0,-1.0,-1.0, 1.0],
[-1.0, 1.0,-1.0, 1.0],[ 1.0, 1.0,-1.0, 1.0],
[-1.0,-1.0, 1.0, 1.0],[ 1.0,-1.0, 1.0, 1.0],
[-1.0, 1.0, 1.0, 1.0],[ 1.0, 1.0, 1.0, 1.0]]
# Ränder des Würfels
self.edges = [(0,1),(1,3),(3,2),(2,0), # bottom1 # 1.Unterseite
(4,5),(5,7),(7,6),(6,4), # top1 # 1.Oberseite
(0,4),(1,5),(3,7),(2,6), # sides1 up # 1.Seite oben
(8,9),(9,11),(11,10),(10,8), # bottom2 # 2.Unterseite
(12,13),(13,15),(15,14),(14,12), # top2 # 2.Oberseite
(8,12),(9,13),(11,15),(10,14), # sides2 up # 2. Seite oben
(0,8),(1,9),(3,11),(2,10), # connect 1,2 # Verbindung von 1 und 2
(4,12),(5,13),(7,15),(6,14)]
# Randfarben des Würfels
self.edgecolors=[e_colors[1]]*12+[e_colors[2]]*12+[e_colors[3]]*12
# Punkte = Ecken
self.points = copy.deepcopy(self.corners)
# Würfelperspektive
self.perspective=0
# Erstelle Grafikfenster für Würfel
def resetcube(self):
self.points = copy.deepcopy(self.corners)
## print "cube resetted!"
# Schreibe Würfel - Start ??
def setproj(self,params):
self.ax0,self.ax1,self.ax2 = params
## print "Proj.",self.ax0,self.ax1,self.ax2
#
def setrot(self,params):
self.rot1,self.rot2 = params
## print "Rot",self.rot1,self.rot2
# Farbe des Würfels = Rot
def setangle(self,deg):
self.angle = deg
## print "Angle:",self.angle
# Wähle Winkel des Würfels aus
# Perspektive des Würfels hier 3D
def setperspective(self,value):
self.perspective = value
## print "Perspective:",value
# Wähle Perspektive des Würfels, Wert
# Rotieren aktivieren
def rotate(self,direction):
w = direction*self.angle*math.pi/180.0
co,si = math.cos(w), math.sin(w)
ax1,ax2 = self.rot1,self.rot2
for c in self.points:
c[ax1],c[ax2] = co*c[ax1]-si*c[ax2],si*c[ax1]+co*c[ax2]
# Würfel wird zusammengesetzt
def project(self):
ax0,ax1,ax2 = self.ax0,self.ax1,self.ax2
p = [0]*len(self.points)
# project points
if self.perspective:
for i in range(len(p)):
f = dist/(dist-self.points[i][ax0]+1)
p[i]=(f*self.points[i][ax1],f*self.points[i][ax2],self.points[i][ax0])
else:
for i in range(len(p)):
p[i]=(self.points[i][ax1],self.points[i][ax2],self.points[i][ax0])
e = [0]*len(self.edges)
for i in range(len(e)):
a,b = self.edges[i]
e[i] = (p[a][0],p[a][1],p[b][0],p[b][1],self.edgecolors[i],(p[a][2]+p[b][2])/2.0)
# insert sort
# Einsatzart
for stelle in range(1,len(e)):
wert = e[stelle]
i = stelle
while 1:
if i==0: break
if e[i-1][5]<=wert[5]: break
e[i]=e[i-1]
i = i-1
e[i] = wert
return e
# Rahmenerstellung des Projektes
class ProjectionFrame(Frame):
# Eingebaute Funktion
# Definiere Abkürzungen
def __init__(self,parent,hypercube, hcanvas, axname,**options):
Frame.__init__(self,parent,**options)
self.hcube = hypercube
self.hcanvas = hcanvas
self.projvar = IntVar()
self.projvar.set(1)
self.perspvar = IntVar()
self.perspvar.set(2)
#
def projjob(self,values):
self.hcube.setproj(values)
self.hcanvas.show()
#
def perspjob(self,values):
self.hcube.setperspective(values)
self.hcanvas.show()
#
class RotationFrame(Frame):
# Eingebaute Funktion
def __init__(self,parent,hypercube,hcanvas, axname,**options):
Frame.__init__(self,parent,**options)
self.hcube = hypercube
#
def rotjob(self,values):
self.hcube.setrot(values)
#
class CommandFrame(Frame):
# Eingebaute Funktion
def __init__(self,parent,hypercube, hcanvas, axname,**options):
Frame.__init__(self,parent,**options)
self.hcanvas = hcanvas
#
def degreeset(self,event):
self.hcube.setangle(self.tempo.get())
#
def turnjob(self,param):
self.hcanvas.setjob(param)
#
class HyperCanvas(Canvas):
# Eingebaute Funktion
def __init__(self,parent,hcube,numx,numy):
Canvas.__init__(self)
self.running = 0
self.hcube=hcube
self.OFFS = 5
self.numx, self.numy = numx, numy
self.center = numx/2
self.scale = numx/2.0*0.5
if canvascolor:
self.cv = Canvas(parent,width=self.numx+7,height=self.numy+7,
background=canvascolor)
else:
self.cv = Canvas(parent,width=self.numx+7,height=self.numy+7)
self.cv.grid(row=1,column=1,padx=3,pady=3)
self.lines=[0]*len(hcube.edges)
for i in range(len(self.lines)):
self.lines[i]=self.cv.create_line(0,0,0,0,width=2)
#
def setjob(self,code):
self.job = code
## print "Job:",self.job
self.dothejob(code)
#
def update(self):
self.cv.update()
#
def stop(self):
self.running = 0
#
def dothejob(self,code):
if code==0:
self.stop()
self.cv.after(100)
self.cv.update()
elif code==1:
self.running=0
self.hcube.rotate(1)
self.show()
elif code==-1:
self.running=0
self.hcube.rotate(-1)
self.show()
elif code==2:
self.running=1
while self.running:
self.hcube.rotate(1)
self.show()
self.after(showdelay)
elif code==-2:
self.running=1
while self.running:
self.hcube.rotate(-1)
self.show()
self.after(showdelay)
elif code==10:
self.show()
# Zeige Würfel
def show(self):
## print "Showing!"
lines = self.hcube.project()
for i in range(len(lines)):
x0,y0 = lines[i][0]*self.scale,lines[i][1]*self.scale
x1,y1 = lines[i][2]*self.scale,lines[i][3]*self.scale
c = lines[i][4]
self.cv.coords(self.lines[i],int(0.5+self.center+x0),int(0.5+self.center-y0),
int(0.5+self.center+x1),int(0.5+self.center-y1))
self.cv.itemconfigure(self.lines[i],fill=c)
self.cv.update()
# Einstellen des Rahmes (Größe, Ränderdicke) und Eingabe es Titels und des Textes
class CubeShow:
# Eingebaute Funktion
def __init__(self,axname):
hypercube = HCube()
self.root = Tk()
self.root.title("Würfel von -Sugar Princes-")
Label(self.root,text="Würfel",font=("Arial",24)). \
grid(row=0,column=0,columnspan=3,pady=3)
canvas = HyperCanvas(self.root,hypercube,500,500)
frame_left = ProjectionFrame(self.root, hypercube, canvas,axname, relief=FLAT, borderwidth=2)
frame_left.grid(row=1,column=0,padx=3,pady=3,sticky=N)
frame_right = RotationFrame(self.root,hypercube,canvas,
axname, relief=FLAT, borderwidth=2)
frame_right.grid(row=1,column=2,padx=3,pady=3,sticky=N)
frame_bottom = CommandFrame(self.root,hypercube, canvas,
axname,relief=SUNKEN, borderwidth=2)
frame_bottom.grid(row=2,column=0,columnspan=3,pady=6)
self.root.after(250)
self.root.update()
hypercube.setangle(1)
hypercube.resetcube()
frame_left.projjob((2,0,1)) # z->xy # Drehungsrichtung des Würfels
frame_left.perspjob(1) # centric # zentriert ??
frame_right.rotjob((2,0)) # rotate in yz # Rotiere in yz (Drehungsrichtung)
frame_bottom.turnjob(0) # stop # wenn man das löscht trotzdem funzt; notwendig ?!
frame_bottom.turnjob(2) # stop # ????
if not useIDLE: self.root.mainloop()
x = CubeShow("xyzt")
#x = CubeShow("1234")
# Zuordnung der Buchstaben zu den Zahlen
beim beenden des würfels wird noch eine fehlermeldung angezeigt is da was was nicht sein sollte?
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Standard\Desktop\Rotierender Würfel.pyw", line 292, in ?
x = CubeShow("xyzt")
File "C:\Dokumente und Einstellungen\Standard\Desktop\Rotierender Würfel.pyw", line 288, in __init__
frame_bottom.turnjob(2) # stop # ????
File "C:\Dokumente und Einstellungen\Standard\Desktop\Rotierender Würfel.pyw", line 168, in turnjob
self.hcanvas.setjob(param)
File "C:\Dokumente und Einstellungen\Standard\Desktop\Rotierender Würfel.pyw", line 198, in setjob
self.dothejob(code)
File "C:\Dokumente und Einstellungen\Standard\Desktop\Rotierender Würfel.pyw", line 226, in dothejob
self.show()
File "C:\Dokumente und Einstellungen\Standard\Desktop\Rotierender Würfel.pyw", line 246, in show
int(0.5+self.center+x1),int(0.5+self.center-y1))
File "H:\INFORM~1\Phyton\lib\lib-tk\Tkinter.py", line 2039, in coords
self.tk.splitlist(
TclError: invalid command name ".13799992"
danke schonmal im voraus
Zuletzt geändert von -Sugar Princes- am Montag 11. April 2005, 17:09, insgesamt 1-mal geändert.
Jetzt soll Dir also jemand das Programm erklären helfen, das von Dir ist, und von dem Dein Lehrer nicht geglaubt hätte, das Du das hinbekommst!? Interessant.
1. sollen is der falsche ausdruck es is ne bitte von mir zwinge ich euch dazu nein alsoBlackJack hat geschrieben:Jetzt soll Dir also jemand das Programm erklären helfen, das von Dir ist, und von dem Dein Lehrer nicht geglaubt hätte, das Du das hinbekommst!? Interessant.
2. wenn es nen lehrer gibt dann weiß er noch nix vom würfel - wenn ich was mache dann mache ich es richtig dauert zwar länger aber okay das nehm ich halt bei allen sachen in kauf
3. hab ich gefragt wer mir helfen kann will tut - was is daran so schwer ?
-
- User
- Beiträge: 38
- Registriert: Freitag 8. April 2005, 16:33
- Wohnort: Krefeld
hmmm dann nich =)
dann muss ich halt bissel googlen aber passt schon
dann muss ich halt bissel googlen aber passt schon
- Hannes-Spz
- User
- Beiträge: 123
- Registriert: Sonntag 7. August 2005, 22:42
Bei allem Respekt, aber ich glaube nun unabbringlich von meinem Verdacht zu sein, dass da irgendjemand nur leichtes Spiel und eine gute=hohe Punktzahl erzielte...-Sugar Princes- hat geschrieben: dann muss ich halt bissel googlen aber passt schon
Ich bin mir dessen im klaren, dass Diskussionen darüber schon oft geführt wurden, aber ist es nich peinlich mit anzusehen, wie jemand der Meinung ist, ein solch mehr oder weniger komplexes programm auf die Beine zu stellen, wenn er
weder erkannt hat, dass der computerbildschirm ungeeignet für die Messung der Seitenzahlen ist
(und meiner Meinung nach SONST nur ein Buch eine derartige zahl an Seiten für so wenig Quelltext aufbringen kann...),nennt ihr sowas keine ahnung von phyton 7 Seiten Programmierung die funktioniert
noch, dass diese Person erkannt hat, dass grafische Benutzeroberfläche übersetzt sowas wie GUI(GraphicalUserInterface) bedeutet und somit in Tk, Wx oder ähnliches gepostet werden müsste.
Und wenn die Beschreibung dazu im Buch 500 Seiten hätte, darf man trotzdem nicht zu faul sein, sie sich wenigstens im
gröbsten Maaße durch zu lesen!
Und wenn man lieber ausprobiert, sollte man doch in der Lage sein, englische Texte (in diesem Fall Fehlermeldungen) zu verstehen...
Fazit:
Wer lesen kann, ist klar im Vorteil!
Nicht, dass man mal zugeben könnte, dass man es nicht selbst geschrieben (wobei ABschreiben aus der Wertung fällt) hat, muss man noch in der für alle zugänglichen Testverion eine Provokation einfügen, nur um wenigstens EINEN Teil selbst dazu beigetragen zu haben, oder sollte ich mich darin irren? Wenn dies zu bestätigen ist, ziehe ich im größten Maaße der Entschuldigung meine Punkte der Anklage zurück.
Jedoch sehe ich mich sonst innerlich dazu gezwungen, gegen die guten Absichten von
Sugar Prince
zu protestieren, denn alles in Allem finde ich den Beitrag des rotierenden Würfels lächerlich und eine Zumutung für jeden, der täglich bereit ist, den Helfenswerten zu helfen, um es mit dieser Art der Alliteration abschließend auszudrücken.
Ich wünsche allen anderen einen schönen Sonntag
Hannes