![]() |
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? |
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 |
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
|
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 |
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
|
Re: shape auf weg
Dann machst du innen Timer sowas wie:
Code:
Er bewegt sich jedesmalum ein zehntel des verbliebenen Weges ... rein theoretisch würde er also nie ankommen aber praktisch .... ;)
Weg = PosB - PosA;
PosA = PosA + 0.1 * Weg; |
Re: shape auf weg
GGf. diese Berechnung für Delta x und Delta y machen
|
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 |
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; |
Re: shape auf weg
Zitat:
Code:
Du kannst auch TPoints benutzen oder dir selber was basteln, ich hoffe dass mit dem _X und _Y sollte klar sein ...
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 Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr. |
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