Simple Fragen sind doch wohl auch erlaubt oder?
ball.pos = (1, 2, 3)
Der Ball hat eine bestimmte Position. Wie kann ich nun nur das x mit einem Faktor multiplizieren?
Danke,
kame
Vektor multiplizieren (geklärt)
Zuletzt geändert von kame am Montag 25. Februar 2008, 01:02, insgesamt 1-mal geändert.
Neues Tupel erzeugen, in dem die erste Position des alten mit einem Faktor multipliziert wird und die anderen beiden Werte einfach übernommen werden.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Hallo kame, willkommen im Forum,
für aufwendige Vektorberechnungen solltest du dir SciPy ansehen, aber wenn es nur etwas einfaches sein soll, kannst du auch diesen Code nehmen:
Edit: Sorry BlackJack, hab dein Posting nicht gesehen und schon die Lösung geschrieben. Aber du hast die Erklärung des Codes gepostet, das ist für kame ja auch etwas.
Edit: und dann habe ich auch noch die eigentlich zu lösende Aufgabe falsch verstanden. Shame on me
für aufwendige Vektorberechnungen solltest du dir SciPy ansehen, aber wenn es nur etwas einfaches sein soll, kannst du auch diesen Code nehmen:
Code: Alles auswählen
>>> def scalar_mult(v, f):
... return tuple(i * f for i in v)
...
>>> scalar_mult((1, 2, 3), 2)
(2, 4, 6)
Edit: und dann habe ich auch noch die eigentlich zu lösende Aufgabe falsch verstanden. Shame on me
Zuletzt geändert von Leonidas am Samstag 23. Februar 2008, 15:44, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Danke BlackJack und Leonidas.
Aber ich kann das noch nicht umsetzten. Ich würde mich für den Code von BlackJack interessieren.
Das hier habe ich bisher.
Und ich möchte, dass sich der Ball langsam nach unten bewegt.
EDIT: In Zeile 10 sollte kein Kommentar stehen.
Aber ich kann das noch nicht umsetzten. Ich würde mich für den Code von BlackJack interessieren.
Das hier habe ich bisher.
Und ich möchte, dass sich der Ball langsam nach unten bewegt.
Code: Alles auswählen
from visual import *
L = 10 # Laenge des Koordinatensystems
xaxis = curve(pos=[(0,0,0), (L,0,0)], color=(0.5,0.5,0.5))
yaxis = curve(pos=[(0,0,0), (0,L,0)], color=(0.5,0.5,0.5))
zaxis = curve(pos=[(0,0,0), (0,0,L)], color=(0.5,0.5,0.5))
ball1 = sphere(pos=(0,L,0), color=color.red)
ball1.geschwindigkeit = vector(0,-1,0)
while 1:
rate(30)
print "Position:", ball1.pos, "Geschwindigkeit:", ball1.geschwindigkeit
ball1.pos = ball1.pos # + ...
EDIT: In Zeile 10 sollte kein Kommentar stehen.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du hast ein Tupel aus drei Werten: ``ball.pos[0]``, ``ball.pos[1]`` und ``ball.pos[2]``. Jetzt must du ein neues Tupel herstellen, das geht ja mit ``('erste Position', 'zweite Position', 'dritte Position')``. Also musst du den Wert am ersten Index mit deiner Konstante multiplizieren und die beiden anderen aus den alten Daten übernehmen. Wo ist das Problem?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Code: Alles auswählen
while 1:
rate(30)
print "Position:", ball1.pos, "Geschwindigkeit:", ball1.geschwindigkeit
ball1.pos = (ball1.pos[0],ball1.pos[1]*0.99,ball1.pos[2])
Das Problem ist, das ich erst seit ein paar Tagen mit Python programmiere.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Wenn du es etwas schöner haben willst:
Code: Alles auswählen
while True:
rate(30)
print "Position: %s Geschwindigkeit: %.2f" % (ball1.pos, ball1.geschwindigkeit)
ball1.pos = (ball1.pos[0], ball1.pos[1]*0.99, ball1.pos[2])
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich habs schöner gemacht und liebe dieses Python. Genial was ich nach 5 Tagen Python-Erfahrung schon hinbekommen habe.
Kann mal jemand meinen Code testen und sagen warum der Rechner nicht alle Bälle hinzeichnet? Liegt das an der Rechenleistung oder an meiner nicht-fachgerechten Programmierung?
Kann mal jemand meinen Code testen und sagen warum der Rechner nicht alle Bälle hinzeichnet? Liegt das an der Rechenleistung oder an meiner nicht-fachgerechten Programmierung?
Code: Alles auswählen
from visual import *
L = 10 # Laenge des Koordinatensystems
xaxis = curve(pos=[(0,0,0), (L,0,0)], color=(0.5,0.5,0.5))
yaxis = curve(pos=[(0,0,0), (0,L,0)], color=(0.5,0.5,0.5))
zaxis = curve(pos=[(0,0,0), (0,0,L)], color=(0.5,0.5,0.5))
ball = sphere(pos=(0,L,0), color=color.blue)
fz = 1
timer = 0.00
while 1:
rate(30)
timer = timer + 0.03
fy_sin = math.sin(timer*1.1) * 10
fx_cos = math.cos(timer*2.5) * 10
print "Timer: %.2f Position: %s" % (timer, ball.pos)
ball.pos = (fx_cos,fy_sin,ball.pos[2]*fz)
if timer*100 % 2 == 0:
ball2 = sphere(pos=ball.pos, color=color.green)
if timer*100 % 2 == 1:
ball3 = sphere(pos=ball.pos, color=color.red)
kann mir jemand helfen?
Benutze für `timer` keine Fliesskommazahlen, die sind ungenau.
Wie man hier sieht, ist das Ergebnis deshalb nur am Anfang ein paar mal *genau* 1 bzw. *genau* 0:
Wie man hier sieht, ist das Ergebnis deshalb nur am Anfang ein paar mal *genau* 1 bzw. *genau* 0:
Code: Alles auswählen
timer = 0.00
while True:
timer += 0.03
print '%.50f' % (timer * 100 % 2)
Vielen Dank
Da wäre ich nie drauf gekommen.
Da wäre ich nie drauf gekommen.