Qt Animationen 2D

Verschiedenes zu Qt
Antworten
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Qt Animationen 2D

Beitrag von jd »

Hallo Gemeinde,

ich möchte eine 2D Simulation entwerfen, die an sich sehr stupide aufgebaut sein soll. Ich habe mir gedacht das ich das mit QGLWidget und QPainter mache. Der Punkt soll sich von A->B bewegen. Jedoch ist das an ein paar kleine Bedingungen geknüpft. Ich muss mein QGLWidget so aufbauen, das ich mit Koordinaten arbeiten kann. Die Daten kommen von einer externen Klasse auf die ich keinen Einfluss habe. Zum Beispiel:

Die Fenstergröße lege ich mit:

Code: Alles auswählen

setFixedSize(800, 600);
Nun muss ich auf die Größe eine Koordinatensystem legen, wie mache ich das? so das ich mich innerhalb von:

Code: Alles auswählen

int world[800][600]
bewegen kann.

Code: Alles auswählen

int punkt_start[30][20];
int punkt_moveTo[400][280]
Wie lege ich mein Koordinatensystem fest?

Die zweite Frage ist wie bewege ich meinen Punkt? Eine Rotation ist das ja nicht oder? Gibt es eine Move()-Funktion?

Danke für die Hilfe
so long
jd
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Also...
Beim zeichnen übergibst du einem QPainter koordinaten. Die Koordinaten beginnen bei (0|0)(links oben)und hören bei dir bei (800|600)(rechts unten) auf.

...
Ich denke das ist alles was man wissen muss.
Hier ist noch ein kleines beispiel:
http://qtforum.de/forum/viewtopic.php?t=5289
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Ok, soweit habe ich das verstanden, doch wie läuft das mit der Bewegung?
Ich habe jetzt meinen Punkt (mit Startkoordinaten erstellt)

Code: Alles auswählen

painter->drawEllipse(400, 300, 10, 10);
Bei einer Fenstergröße von 800x600 ist der Punkt genau in der Mitte.
Meine Zielkoordinate ist jetzt [260][80]. Wie Bewege ich meinen Punkt dorthin?

ich denke mal das rotation einfach das falsche ist. Oder irre ich mich da?
Volker
Beiträge: 343
Registriert: 30. Juni 2005 05:27

Beitrag von Volker »

Wieso rotieren? Ich dachte du willst die Position verändern, also eher Translieren. Es sei denn Du rotierst nicht um den Mittelpunkt der Ellipse, aber davon geh ich mal nicht aus.

Wenn Du eine lineare Bewegung haben willst, dann nimmst Du einfach eine QTimeLine bzw. deine externen Daten und lässt über einen Slot die aktuellen Koordinaten updaten, die bei painter->drawEllipse verwendet werden. Evtl. brauchts dann noch ein update.
Bitte seid so nett und ändert den Titel von Beiträgen die gelöst wurden, auf [gelöst] Beitragstitel
jd
Beiträge: 130
Registriert: 22. Januar 2008 17:55

Beitrag von jd »

Danke, ich versuche es mal.
Antworten