Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi shape auf weg (https://www.delphipraxis.net/73672-shape-auf-weg.html)

kissing tiger 21. Jul 2006 17:00


shape auf weg
 
Hi leute, also ich habe folgendes problem...

Ich möchte das sich ein shape auf den kürzesten weg zum zweiten shape bewegt. Ich weiß jetzt schon wie man ein shape bewegen kann aber ich habe keine ahnung wie man es anstellt dass ein shape dabei einen festen weg, nämlich der kürzeste folgt.

Ich hoffe ihr versteht wie ich das meine.

Im prinzip lautet die frage also: Wie lautet der befehl dass ein shape sich auf einen bestimmten weg bewegt?

Ratte 21. Jul 2006 17:07

Re: shape auf weg
 
Du musst es entweder in einer endlosschleife (Ganz wichtig: application.processmessages immer ausführen) oder einem Timer schrittweise bewgen. die Formeln, um die Position zu berechnen findest du in jedem Tafelwerk.

Ratte

kissing tiger 21. Jul 2006 17:48

Re: shape auf weg
 
ja, den kürzesten weg habe ich auch schon berechnet, der wird auch durch eine linie gekennzeichnet. Nur ich will dass er den kürzesten weg automatisch berechnet und abfährt. Also auch wenn ich das ziel woanders hinbringe und dass ich dabei nichts im code verändern muss

Ratte 21. Jul 2006 18:03

Re: shape auf weg
 
wenn du den kürzesten Weg berechnen kannst, dann berechne in doch einfach alle 50ms oder so und bewege das Shape in die richtige Richtung. Da macht es auch nix wenn sich der zielpunkt ändert (musst natürlich entsprechende variablen benutzen). Ich versteh dein Problem nicht.

Ratte

kissing tiger 21. Jul 2006 18:30

Re: shape auf weg
 
gucke, shape1 soll sich auf den kürzesten zu shape2 bewegen. klar kann ich das schnell mit einen timer programmieren, aber wenn ich shape2 jetzt woanders platziere soll er sich auch dort hin bewegen und auch wieder auf den kürzesten weg, dabei will ich aber nichts am code verändern. also das shape1 selber herausfindet wo shape2 ist und sich dann automatisch auf den weg macht

jfheins 21. Jul 2006 18:54

Re: shape auf weg
 
Dann machst du innen Timer sowas wie:
Code:
Weg = PosB - PosA;
PosA = PosA + 0.1 * Weg;
Er bewegt sich jedesmalum ein zehntel des verbliebenen Weges ... rein theoretisch würde er also nie ankommen aber praktisch .... ;)

mkinzler 21. Jul 2006 19:17

Re: shape auf weg
 
GGf. diese Berechnung für Delta x und Delta y machen

kissing tiger 21. Jul 2006 19:43

Re: shape auf weg
 
PosA = PosA + 0.1 * Weg;

macht das für dich sinn? das is wie wenn ich sage a=a+b

ausserdem sind die beiden shapes nicht auf einer linie. das heißt top und left der beiden shapes sind unterschiedlich

mkinzler 21. Jul 2006 19:52

Re: shape auf weg
 
das meinte ich ja mit Delta x und Delta y.

Annahme Shape 2 liegt rechts und unterhalb Shape 1

Delphi-Quellcode:
dx := (Shape1.Left - Shape2.Left) / Schrittweite;
dy := (Shape1.Top - Shape2.Top) / Schrittweite;

Shape2.Left := Shape1.Left + dx;
Shape2.Top := Shape2.Top + dy;

jfheins 21. Jul 2006 19:54

Re: shape auf weg
 
Zitat:

Zitat von kissing tiger
PosA = PosA + 0.1 * Weg;

macht das für dich sinn?

Joa ... eigentlich schon. PosA ist die Position von Shape A, PosB ist die Position von Shape B. Weil du bestimmt der einfachheit halber nicht mit record-operatoren (oder wie heißen die teile?) arbeiten möchtest, empfehle ich dir, es so zu machen, wie mkinzer es vorgeschlagen hat:
Code:
Weg_X = PosB_X - PosA_X;
Weg_Y = PosB_Y - PosA_Y;

PosA_X = PosA_X + 0.1 * Weg_X
PosA_Y = PosA_Y + 0.1 * Weg_Y
Du kannst auch TPoints benutzen oder dir selber was basteln, ich hoffe dass mit dem _X und _Y sollte klar sein ...

Zitat:

das is wie wenn ich sage a=a+b
ach ... ich dachte PosA stellvertretend für "Position von Shape A im Koordinatensystem" wäre selbsterklärend ... :oops:
Zitat:

ausserdem sind die beiden shapes nicht auf einer linie. das heißt top und left der beiden shapes sind unterschiedlich
Deshalb auch X und Y ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz