AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi auto entlang einer linie fahren lassen
Thema durchsuchen
Ansicht
Themen-Optionen

auto entlang einer linie fahren lassen

Ein Thema von holle · begonnen am 15. Sep 2006 · letzter Beitrag vom 18. Sep 2006
Antwort Antwort
Seite 1 von 3  1 23      
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#1

auto entlang einer linie fahren lassen

  Alt 15. Sep 2006, 12:00
hallo, ich möchte ein auto entlang einer linie fahren lassen. die linie beschreibt eine straße. z. b. 100px gerade aus und dann eine kurve mit einem radius von 50px. das auto soll der linie folgen und sich in fahrtrichtung drehen. das auto habe ich als grafik vorliegen.
wie könnte man das am besten realisieren?

mfg holle. (danke)
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: auto entlang einer linie fahren lassen

  Alt 15. Sep 2006, 12:05
an welcher stelle kommst du nicht weiter? Kannst du das Fahrzeug nicht drehen oder kannst du der Linie nicht folgen?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: auto entlang einer linie fahren lassen

  Alt 15. Sep 2006, 21:59
ums drehen habe ich mich erstmal gar nicht gekümmert. gehen wir mal von einem punkt als auto aus. wie kann ich dann der linie folgen? es gibt ja eine kreisgleichung, damit könnte man das auto eine kurve fahren lassen. nur wie bekomme ich das zusammen?

mfg holle
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: auto entlang einer linie fahren lassen

  Alt 15. Sep 2006, 22:01
Wie liegt deine Linie vor? Hast du ein schwarz/weißes Bild, hast du jeden einzelnen Punkt oder hast du Vektorkoordinaten und Bezierkurvenangaben? Oder willst du das hart kodieren?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: auto entlang einer linie fahren lassen

  Alt 15. Sep 2006, 22:06
bis jetzt habe ich noch keine linie. ich habe eine kreuzung als hintergrundbild. hier soll das auto links abbiegen. wie, ist egal. ich könnte ja eine zweite grafik mit einer schwarz-weiß linie zum weg finden nutzen?

mfg holle
Marcel
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#6

Re: auto entlang einer linie fahren lassen

  Alt 15. Sep 2006, 23:07
Bin gerade auf dem Sprung, aber ich spendiere mal einen Code-Schnipsel aus einem Projekt von mir, der verwendet wird um ein Objekt entlang einer Route wandern zu lassen. Die Routen sind als einfache 2f-Vectoren gespeichert. Touched führt eine einfache Prüfung durch, ob das Objekt eine gewisse Toleranz-Distanz zum Zielpunkt erreicht hat. Anschließend brauchst Du nur noch das Objekt in die richtige Richtung zu drehen.

Delphi-Quellcode:
if control = CC_ROUTE then
begin
  rx := route[currentRoute].x;
  ry := route[currentRoute].y;

  xdiff := abs(rx-pos[0]);
  ydiff := abs(ry-pos[1]);

  length := sqrt(xdiff*xdiff+ydiff*ydiff);

  mx := (rx - pos[0]) / length*speed;
  my := (ry - pos[1]) / length*speed;

  pos[0] := pos[0] + mx;
  pos[1] := pos[1] + my;

  // check, if a route point is reached
  if touched(rx,ry) then
  begin
     case route[currentRoute].action of
     RP_NEXT:
     begin
       g_Console.add('Reach rp '+IntToStr(currentRoute)+' proceed to next');
       inc(currentRoute)
     end;
     RP_REPEAT:
     begin
       g_Console.add('Reach rp '+IntToStr(currentRoute)+' start over again');
       currentRoute := 0;
     end;
   end;
end;
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: auto entlang einer linie fahren lassen

  Alt 17. Sep 2006, 12:11
@Phobeus
danke für den code. nur leider blick ich da nicht so ganz durch. könntest du mal bitte erläutern, was da gemacht wird?
danke, holle.
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#8

Re: auto entlang einer linie fahren lassen

  Alt 17. Sep 2006, 12:40
Eine Ellipse kann man so parametrisieren:

( cos(x)*a, sin(x)*b ) (0<x<=2pi; für a=b=r wirds ein Kreis mit Radius r)

Wenn das Auto eine Kurve nach links fahren soll (um 90°) muss der Ausdruck x zwischen 0 und pi/2 liegen, da Delphi Eingaben in Rad erwartet. Das Auto fährt damit einen Viertelkreis ab.
Zuerst suchst du dir den Mittelpunkt deines Kreisstückes. (M in der Grafik) dann machst du eine while-Schleife in der du Winkelwerte zwischen 0 und pi/2 abarbeitest. Je nach dem, wie groß der Abstand zwischen zwei Winkelwerten ist, springt das Auto mehr oder weniger.
Die Position deines Autos hast du dann immer durch (M.x+cos(phi)*r, M.y-sin(phi)*r) gegeben.
Miniaturansicht angehängter Grafiken
unbenannt_270.jpg  
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: auto entlang einer linie fahren lassen

  Alt 17. Sep 2006, 14:18
ich würde das noch etwas anders machen:
du weißt doch bestimmt wo sich die staße im bild befindet wenn nicht: das musst mit paint herrausfinden und die eck punkte abspeichern in einer variable...

du brauchst einzelne objekte z.b. bilder die du einfügt....
jetzt könntes du mit hilfe eine zeitschleife den werten der staße entlangen fahren z.b. so:

nehmen wir an deine starße befindet sich bei folgenden punkten:
20(x),10(y),100(w),100(h) dürfte eine komische starße werden naja....
jetzt musst du das auto auf die straße setzten:
10,15,10,10(die werte ensprechen wie von oben nur andere zahlen)
am besten zeichnest du erstmal als rechteck(10,15,10,10) müste klappen.

jetzt musst du dies rechteck verschieben in einem z.b. timer:
5+10(x)
bei der breite bin ich mir nicht sicher ob du
x+breite machen musst oder nicht....

ich hoffe du versteht den weg....es die starße zu ende musst du prüfen was jetzt für ein starßen typ kommmt am besten verwaltest du alle starßen in ein array und defnierst einen eigenen record z.b.
TStrasse=record
r:Trect;// für die position und größe
typ:Integer;//für das bild was angezeigt werden soll....
end;

Auto:TStraße

so währes aufjedenfall am einfachsten ist zwar eine menge zu schreiben aber du hast auch was davon !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#10

Re: auto entlang einer linie fahren lassen

  Alt 17. Sep 2006, 14:52
Wie willst du denn mit diesem Ansatz eine Kurve fahren?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:55 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