AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Jetzt aber: Rotierte bewegung
Thema durchsuchen
Ansicht
Themen-Optionen

Jetzt aber: Rotierte bewegung

Ein Thema von Airblader · begonnen am 8. Mai 2005 · letzter Beitrag vom 9. Mai 2005
Antwort Antwort
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#1

Jetzt aber: Rotierte bewegung

  Alt 8. Mai 2005, 19:21
Hiho,

da ich damals vielleicht noch etwas wenig Mathe konnte, wollte ich nun alles neu anpacken:
Das "rotierte" Zeichnen und Bewegen von Dingen wie Autos etc.
Hab zwar bis heute keinen Kosinus, Sinus oder sonstwas gehabt, aber nun hab ichs zumindest mal hinbekommen.

Ein "Fehler" hat es aber noch:
Wenn ich den Spieler bewege, sieht das immer so abgehackt aus.
Kann man das nicht irgendwie ändern?

Ich gehe wie folgt vor:
Ich hab einen DXTImer, in dem per GetAsyncKeyState auf Links/Rechts geprüft wird und die Variable "PAngle" dementsprechend +/- 0.02 gesetzt wird.
Meine Prozedur zum neu-Berechnen und Zeichnen sieht wie folgt aus:

Delphi-Quellcode:
procedure TForm1.Draw;
begin
        if not Form1.DXDraw1.CanDraw then
                Exit;

        PPos.X := Floor(PPos.X + (sin(PAngle) * 1.5));
        PPos.Y := Floor(PPos.Y - (cos(PAngle) * 1.5));

        Form1.DXDraw1.Surface.Fill(0);

        Form1.DXImageList1.Items.Find('Player').DrawRotate(Form1.DXDraw1.Surface, PPos.X, PPos.Y, 10, 10, 0, 0.5, 0.5, Floor(PAngle));

        Form1.DXDraw1.Flip;
end;
PPos ist ein TPoint und PAngle ein Extended.

Wie gesagt, das alles funktioniert zwar, ist aber sehr abgehackt.
What do do?

Danke schonmal

air
P.S.: Das alles ist nur ein Testprojekt für mich, also noch nicht so sehr darauf achten, dass ich das nicht in ein record packe oder so
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
stefan2005

Registriert seit: 30. Sep 2003
Ort: Puchheim
250 Beiträge
 
Delphi 6 Personal
 
#2

Re: Jetzt aber: Rotierte bewegung

  Alt 8. Mai 2005, 19:31
hi,
brauchen die sin() und cos() Funktionen nicht das Bogenmaß anstatt den Winkel als Parameter ?

cu,
stefan2005
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#3

Re: Jetzt aber: Rotierte bewegung

  Alt 8. Mai 2005, 19:33
Zitat von stefan2005:
hi,
brauchen die sin() und cos() Funktionen nicht das Bogenmaß anstatt den Winkel als Parameter ?

cu,
stefan2005
Hatte mir das auch schon gedacht.
Hab also sowohl DegToRad als auch RadToDeg probiert.

DegToRad:
---------
Gehtr garnimmer links/rechts

RadToDeg:
---------
Nervöses Zuckeln im Quadrat

Edit:
Oh..RadToDeg stimmt wohl. Nur 0.02 is dafür viel zu hoch.

Werds nochmal testen

Edit2: ok..scheint zu gehen.
Aber woran liegt es, dass wenn ich z.b. links gedrückt halte, keine kreisförmige Bahn entsteht sondern mehr so in eine Richtung gezogene Spirale?

Edit3: Sorry *g*
Kleine Zwischenfrage.
Ich mach grade die Kollisionsabfrage für die Wände.
Für links/rechts (X-Achse) funzt es gut, indem ich PAngle auf -PAngle setze.
Aber wie sieht es für die Y-Achse aus? Hab auch versucht, 180° abzuziehen / zu addieren
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#4

Re: Jetzt aber: Rotierte bewegung

  Alt 9. Mai 2005, 20:29
*push*

Die Frage bleibt, wie ich den Winkel beim Abprallen an der Y-Achse ändern muss.

Habe schon ziemlich viel probiert

Das Problem, einfach einen Winkel zuzufügen/abzuziehen ist ja, dass der Winkel ja nicht In Grad gegeben ist.
D.h. von 90 zu 90, 5 ist das vllt schon eine ganze Umdrehung.

Habe morgen vor, meinen Mathelehrer zu fragen, mir mal einen Crashkurs in Trigonometrie zu geben.

Aber könnte mir trotzdem jemand helfen?

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Chegga
Chegga

Registriert seit: 5. Nov 2004
Ort: Kirchheim
453 Beiträge
 
Delphi 7 Architect
 
#5

Re: Jetzt aber: Rotierte bewegung

  Alt 9. Mai 2005, 20:40
Hi,

Zitat von Airblader:
Ein "Fehler" hat es aber noch:
Wenn ich den Spieler bewege, sieht das immer so abgehackt aus.
Kann man das nicht irgendwie ändern?
Wenn du nur gerade Bewegungen (also ohne Hindernis z.B.) brauchst,
verwende doch den Satz von Pythagoras.
(Den kannst du ja hoffentlich. )

MfG Marc

P.S.: Sorry, wenn ich jetzt deinen bisherigen Code völlig verändere.
Marc P.
Grüße aus Kirchheim Teck
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Jetzt aber: Rotierte bewegung

  Alt 9. Mai 2005, 20:51
@Chegga: Beim Drehen der Figur mit den Pfeiltasten könnte es dann aber etwas schwer werden .

@Airblader: Also der Nebenwinkel im Bogenmaß?
Alpha := Pi - Alpha
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#7

Re: Jetzt aber: Rotierte bewegung

  Alt 9. Mai 2005, 21:08
Naja..langsam wird alles merkwürdiger.

Mal eine Info:
Der Winkel muss nichtmal um 1 geändert werden um eine vollständige Drehung zu erhalten.

Stimmt denn die Rechnung für die neuen Positionen überhaupt?

Delphi-Quellcode:
PPos.X := Floor(PPos.X + (sin(RadToDeg(PAngle)) * 3.5));
PPos.Y := Floor(PPos.Y - (cos(RadToDeg(PAngle)) * 3.5));
@Khabarakh
Wenn ich
PAngle := PI - PAngle;

setze, funzt es auch nicht
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz