Belastung einzelner Brückenelemente

Du hast eine Idee für ein Projekt?
Antworten
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Code: Alles auswählen

from visual import *
L = 5
hilfe1 = curve(pos=[(0,0,0), (0,1,0)], color=color.green)
hilfe2 = curve(pos=[(0,0,0), (0,0,1)], color=color.red)
teil01 = curve(pos=[(0,0,0), (L,0,0)])
teil02 = curve(pos=[(L,0,0), (2*L,0,0)])
teil03 = curve(pos=[(2*L,0,0), (3*L,0,0)])
teil04 = curve(pos=[(3*L,0,0), (4*L,0,0)])
teil05 = curve(pos=[(4*L,0,0), (5*L,0,0)])
teil10 = curve(pos=[(0,0,0), (cos(60*pi/180)*L,sin(60*pi/180)*L,0)])
teil11 = curve(pos=[(L,0,0), (cos(60*pi/180)*L+L,sin(60*pi/180)*L,0)])
teil12 = curve(pos=[(2*L,0,0), (cos(60*pi/180)*L+2*L,sin(60*pi/180)*L,0)])
teil13 = curve(pos=[(3*L,0,0), (cos(60*pi/180)*L+3*L,sin(60*pi/180)*L,0)])
teil14 = curve(pos=[(4*L,0,0), (cos(60*pi/180)*L+4*L,sin(60*pi/180)*L,0)])
teil20 = curve(pos=[(L,0,0), (cos(120*pi/180)*L+L,sin(120*pi/180)*L,0)])
teil21 = curve(pos=[(2*L,0,0), (cos(120*pi/180)*L+2*L,sin(120*pi/180)*L,0)])
teil22 = curve(pos=[(3*L,0,0), (cos(120*pi/180)*L+3*L,sin(120*pi/180)*L,0)])
teil23 = curve(pos=[(4*L,0,0), (cos(120*pi/180)*L+4*L,sin(120*pi/180)*L,0)])
teil24 = curve(pos=[(5*L,0,0), (cos(120*pi/180)*L+5*L,sin(120*pi/180)*L,0)])
teil30 = curve(pos=[(cos(60*pi/180)*L,sin(60*pi/180)*L,0), (cos(60*pi/180)*L+L,sin(60*pi/180)*L,0)])
teil31 = curve(pos=[(cos(60*pi/180)*L+L,sin(60*pi/180)*L,0), (cos(60*pi/180)*L+2*L,sin(60*pi/180)*L,0)])
teil32 = curve(pos=[(cos(60*pi/180)*L+2*L,sin(60*pi/180)*L,0), (cos(60*pi/180)*L+3*L,sin(60*pi/180)*L,0)])
teil33 = curve(pos=[(cos(60*pi/180)*L+3*L,sin(60*pi/180)*L,0), (cos(60*pi/180)*L+4*L,sin(60*pi/180)*L,0)])
Also das hab ich bisher. Nun will ich aber die Belastung der einzelnen Brückenteile sichtbar machen.
Habt ihr eine Idee?
Wie kann ich da die Gravitation mit reinbringen?
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Meinst Du nicht, Du solltest erst einmal Python etwas besser verstehen, dann Dir Gedanken machen, wie man Brückenelemente am besten in einer Datenstruktur repräsentiert und dann an die Implementierung gehen? Damit lösen sich Deine Fragen fast von selbst, denn alles was Du bis jetzt hast ist eine abstrakte Seitendarstellung einer Brücke.

Gruß,
Christian
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Ich weiss, dass ich noch viel vor mir habe. Aber ich lerne am besten mit Learning by Doing. Und darum dachte ich dass ich hier einen Tip bekommen könnte. Hmmm.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Sorry, ich wollte nicht arrogant klingen.
Dein Projekt ist durchaus nicht abwegig schwer, aber Du machst Dir das Leben bei jedem Projekt einfacher, wenn Du überlegst, wie Du Deine Daten organisieren willst bevor Du anfängst - und dazu gehört ein gutes Verständnis der Programmiersprache.
Mein Rat ist also durchaus ernstgemeint und kein riesiger Umweg: Tutorial durcharbeiten und erneut loslegen.

Gruß,
Christian
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Hallo Christian

Ich kann dich durchaus verstehen. Kannst du mir vielleicht ein Tutorial zeigen was mir weiterhilft, weil ich ja schon eins durchgearbeitet habe.

Ich habe jetzt ne neue Idee.

Code: Alles auswählen

from visual import *

L = 5
timer = 0

# Punkte
P1=(-25,5,0) # fester Punkt
P2=(-15,5,0)
P3=(-5,5,0)
P4=(5,5,0)
P5=(15,5,0)
P6=(25,5,0)

# Bodenteile
boden1 = box(pos=(-30,0,0), size=(10,10,10), color=(0.4,0.7,0.4))
boden2 = box(pos=(30,0,0), size=(10,10,10), color=(0.4,0.7,0.4))

while(1):
    timer += 1
    print ("Timer: "), timer
    teil1 = curve(pos=[P1, (-15,5-timer,0)], radius=1)
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Aber wie kann ich Punkt2 beim Fallen sagen, dass er immer den gleichen Abstand zu Punkt1 haben soll?
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Code: Alles auswählen

from visual import *

autoscale = 0
timer = 0

punktx = [-25,-15]
punkty = [5,5]
punktz = [0,0]

boden1 = box(pos=(-30,0,0), size=(10,10,10), color=(0.4,0.7,0.4))
boden2 = box(pos=(30,0,0), size=(10,10,10), color=(0.4,0.7,0.4))

while(1):
    rate(20)
    timer += 1    
    teil1 = curve(pos=[(punktx[0],punkty[0],punktz[0]), (punktx[1],punkty[1],punktz[1])], radius=1)
    abstandteil1 = sqrt(((punktx[1]-punktx[0])**2)+((punkty[1]-punkty[0])**2))
    print ("timer:"), timer, ("punktx[1]:"), punktx[1], ("punkty[1]:"), punkty[1], ("abstandteil1:"), abstandteil1
    punkty[1]=punkty[1]-timer*0.0001
    if abstandteil1 > 10:
        punktx[1] -= 0.1
    time.sleep(0.01)
    teil1.visible = 0
    
So ich mache schon Fortschritte. Schade, dass mir nicht doch jemand Tipps geben kann.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Visual? kenn ich garnicht... aber ein Sternchen-Import ist so oder so nicht so schoen! Schaff ihn mal lieber ab und mach stattdessen lieber sowas wie:

Code: Alles auswählen

import visual as vi
und dann eben statt box() vi.box() ;)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

kame hat geschrieben:So ich mache schon Fortschritte. Schade, dass mir nicht doch jemand Tipps geben kann.
Sorry, ich war ein paar Tage offline. Und wenn sonst niemand zum Problem Stellung nimmt, kann das versch. Ursachen haben. Das ist ein Forum und Du kannst nicht immer auf Antworten hoffen. Ist nun mal so.

Abgesehen von den Sternchen-Imports, die Du Dir wirklich überlegen solltest, ist Dein Problem immer noch die Datenstruktur. Du kannst zwar irgendwelche Gleichungen auf Graphikelemente ablassen, aber überlege mal, ob es nicht besser ist Physik auf Datenstrukturen anzuwenden, die tatsächlich Elemente einer Brücke repräsentieren. Das ist doch viel einfacher. Anschließend kannst Du dann den jeweils aktuellen Zustand der Brücke mit dem Visual-Modul (oder sonst irgendwie) abbilden.

Bzgl. Tutorial: Woher soll man wissen was / das Du was durchgelesen hast? Vielleicht bietet Dir [wiki=FAQ#WieFangeIchAlsEinsteigerAn]dies[/wiki] einen guten Einstieg. Und ein aktuelles Tutorial (Englisch) findet sich hier:
http://docs.python.org/tut/tut.html

Gruß,
Christian
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Wenn ich das so mache:
import visual as vi
dann funktioniert mein Programm ploetzlich nicht mehr.
also z.B. auch die sqrt()-Funktion etc.
Da hab ich dann auch vi.sqrt() hingeschrieben. Trotzdem läuft das Programm nicht mehr. Er gibt nicht mal mehr ne Fehlermeldung raus. Hmmm.

Ich mache jetzt schon Fortschritte CM. Hab mir auch ein paar mehr Gedanken zu der Physik hinter den Dingen gemacht und versuche jetzt mit Vektoren zu arbeiten. Aber erst mal werde ich an einer einfacheren Sache weitermachen, eine sich bewegende Fahne.

Gruß kame
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kame hat geschrieben:Wenn ich das so mache:
import visual as vi
dann funktioniert mein Programm ploetzlich nicht mehr.
also z.B. auch die sqrt()-Funktion etc.
Da hab ich dann auch vi.sqrt() hingeschrieben. Trotzdem läuft das Programm nicht mehr. Er gibt nicht mal mehr ne Fehlermeldung raus. Hmmm.
Kann es sein, dass ``sqrt`` aus ``math`` und nicht aus ``visual`` kommt? Dann haben wir ja ein typisches Stern-Import Problem: viele Namen im Namespace aber keine Ahnung woher sie kommen. Das ist einer der Gründe, warum man sowas eben nicht machen sollte.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Hallo Leonidas

Wenn ich das Visual-Modul benutze, muss ich sqrt() nicht aus math holen.
Das hat auch ohne geklappt. Und wenn ich es auf die elegantere Art machen will, muss ich das math-modul extra noch holen. Hmmm. Ich seh gerade nicht den Vorteil. Also bisher bin ich mit einem Modul ausgekommen, und nun sollte ich mehrere verschiedene nehmen? Hat das was mit den Ladezeiten zu tun?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

kame hat geschrieben:Wenn ich das Visual-Modul benutze, muss ich sqrt() nicht aus math holen.
Wenn ``sqrt`` nicht aus ``visual`` kam (weil es nicht als ``visual.sqrt`` verfügbar war) und du es nicht aus ``math`` genommen hast - wo sollte es sonst herkommen.
kame hat geschrieben:Hat das was mit den Ladezeiten zu tun?
Wenn du mir sagst wie lange es dauert, bei dir ``math`` zu importieren, wäre ich schon dran interessiert :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Wenn durch den Sternchenimport ein `sqrt()` im aktuellen Namensraum landet, dann muss das auch im Modul sein.
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

BlackJack hat geschrieben:Wenn durch den Sternchenimport ein `sqrt()` im aktuellen Namensraum landet, dann muss das auch im Modul sein.
In der aktuellen Version von visual steht im __init__.py ein

Code: Alles auswählen

from math import *
Toll, nicht? Und kein __all__ wird definiert.
kame hat geschrieben:Also bisher bin ich mit einem Modul ausgekommen, und nun sollte ich mehrere verschiedene nehmen? Hat das was mit den Ladezeiten zu tun?
Nein, das ist nicht schneller oder langsamer, sondern übersichtlicher. Du mußt ggf. ein paar Zeilen mehr Code schreiben, aber Du und andere wissen anschließend was woher kommt.

Gruß,
Christian
Antworten