AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

shape auf weg

Ein Thema von kissing tiger · begonnen am 21. Jul 2006 · letzter Beitrag vom 21. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
kissing tiger

Registriert seit: 21. Jul 2006
12 Beiträge
 
#1

shape auf weg

  Alt 21. Jul 2006, 17:00
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?
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#2

Re: shape auf weg

  Alt 21. Jul 2006, 17:07
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
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
kissing tiger

Registriert seit: 21. Jul 2006
12 Beiträge
 
#3

Re: shape auf weg

  Alt 21. Jul 2006, 17:48
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
  Mit Zitat antworten Zitat
Ratte

Registriert seit: 12. Dez 2003
Ort: Erfurt
345 Beiträge
 
Delphi 2005 Personal
 
#4

Re: shape auf weg

  Alt 21. Jul 2006, 18:03
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
Schiffsratte der U.S.S. Delphipraxis, Laderaum 4538
BUSH:= TTerminator.create;
  Mit Zitat antworten Zitat
kissing tiger

Registriert seit: 21. Jul 2006
12 Beiträge
 
#5

Re: shape auf weg

  Alt 21. Jul 2006, 18:30
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
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: shape auf weg

  Alt 21. Jul 2006, 18:54
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 ....
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: shape auf weg

  Alt 21. Jul 2006, 19:17
GGf. diese Berechnung für Delta x und Delta y machen
Markus Kinzler
  Mit Zitat antworten Zitat
kissing tiger

Registriert seit: 21. Jul 2006
12 Beiträge
 
#8

Re: shape auf weg

  Alt 21. Jul 2006, 19:43
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: shape auf weg

  Alt 21. Jul 2006, 19:52
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;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#10

Re: shape auf weg

  Alt 21. Jul 2006, 19:54
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 ...
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:36 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