AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Kollision zweier Images?

Kollision zweier Images?

Ein Thema von Angel4585 · begonnen am 25. Nov 2005 · letzter Beitrag vom 28. Nov 2005
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Kollision zweier Images?

  Alt 25. Nov 2005, 13:00
Hallo zusammen.

Ich hab im EDH diese Funktion, für die Kollision zweier Objekte gefunden:
Delphi-Quellcode:
function IsCollision (Rec1, Rec2 : Trect): Boolean;
begin
  Result := (Rec1.Right > Rec2.Left) and
            (Rec2.Right > Rec1.Left) and
            (Rec1.Bottom > Rec2.Top ) and
            (Rec2.Bottom > Rec1.Top );
end;
Es funktioniert auch perfekt soweit.

Meine Frage:

Angenommen ich habe zwei Timer, die jeder für sich eine Image Komponente bewegen.

Jetzt möchte ich aber nicht die Funktion oben verwenden und abfragen ob die zwei Images miteinander kollidieren, sondern ich möchte wissen, ob Image1 an der Position an der es gerade ist mit irgendetwas kollidiert. Weis jemand wie ich das hinbekommen könnte?

Danke schonmal

Angel4585
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Kollision zweier Images?

  Alt 25. Nov 2005, 13:10
Zitat von Angel4585:
Jetzt möchte ich aber nicht die Funktion oben verwenden und abfragen ob die zwei Images miteinander kollidieren, sondern ich möchte wissen, ob Image1 an der Position an der es gerade ist mit irgendetwas kollidiert.
Definiere bitte "irgendetwas". Ein anderes Control? Ein Image mit Alphakanal? Eine Fliege auf deinem Bildschirm ?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Kollision zweier Images?

  Alt 25. Nov 2005, 13:13
ein anderes Image, Also wenn ich zum Bleistift 100 Images habe und wissen will ob das bestimmt mit einem der anderen kollidiert.

Also ich muss ermitteln ob sich in dem Bereich von dem Image noch ein zweites befindet.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Kollision zweier Images?

  Alt 25. Nov 2005, 13:23
hmhmhm....

wäre machbar in einer schleife. aber das würde eventuell die performance niederzwingen^^
wieso willst du das denn überprüfen? falls du ein spiel o.ä. programmierst, würde ich dir dinge wie DirectX oder OpenGL ans herz legen

aenogym
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Kollision zweier Images?

  Alt 25. Nov 2005, 13:26
Ich hatte in Kunst ne vier, Grafik ist nicht gerade mein stärkstes Gebiet.

Aber um auf OpenGL zurück zu kommen. Angenommen ich habe zwei Threads mit X/Y Werten, kann ich dann direkt aus dem Thread ein Objekt auf ne Paintbox oder so anzeigen lassen, ohne das es da Konflikte gibt?

Und gibt es vielleicht sogar eine Art OpenGL Klasse, die ich z.B. mit

ogl.kugel(durchmesser,position);

ansprechen kann?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Kollision zweier Images?

  Alt 25. Nov 2005, 13:27
Ich denke, dass die Zeit der Schleife nicht ins Gewicht fällt. Wenn du dann noch Rechteck B nicht mehr mit A vergleichst, wenn A schon mit B verglichen wurde, ist die Routine noch einmal doppelt so schnell.
Allerdings ist der Ansatz mit vielen sich bewegenden TImages nicht wirklich das Wahre, auch wenn du nicht mit einer der beiden großen Engines arbeiten willst.
Zitat von Khabarakh (zu faul zum sich Wiederholen):
Du benutzt die Komponente TImage zum Anzeigen - diese ist aber einfach nicht zum Verschieben gedacht und entwickelt. Die Lösung ist, die Unterobjekte auf eine gemeinsame, in der Größe feste Canvas zu bringen, z.B. die der Form. Die Unterobjekte (bzw. ihr Bitmap) speicherst du in der Klasse TBitmap (der Name legt es schon nahe). Im OnPaint der Form kopierst du nun jedes Bitmap per TCanvas.Draw auf deren Canvas. Zusammen mit DoubleBuffered sollte es kein Flimmern mehr geben, Bitmapteile außerhalb der Form-Canvas werden einfach abgeschnitten.

=> Hier im Forum suchenOffScreenBitmap
[edit]
Da ist noch ein Post dazwischengrückt ^^ .


Zitat von Angel4585:
Ich hatte in Kunst ne vier, Grafik ist nicht gerade mein stärkstes Gebiet.
Was hat das mit dem Thema zu tun ? Für die Grafikprogrammierung benötigst du nur Mathematik, die Sprites lädst du dir irgendwo aus dem Internet .

Zitat:
Aber um auf OpenGL zurück zu kommen. Angenommen ich habe zwei Threads mit X/Y Werten, kann ich dann direkt aus dem Thread ein Objekt auf ne Paintbox oder so anzeigen lassen, ohne das es da Konflikte gibt?
Wofür willst du Threads benutzen? Bislang benutzen nicht einmal die "richtigen" Spiele mehrere Threads.

Zitat:
Und gibt es vielleicht sogar eine Art OpenGL Klasse, die ich z.B. mit

ogl.kugel(durchmesser,position);

ansprechen kann?
Da könntest du dir mal GLScene anschauen.

[/edit]
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Kollision zweier Images?

  Alt 28. Nov 2005, 07:14
Also:

GLscene bringt bei mir irgendwelche Fehler, das irgenweine Datei nicht vorhanden ist, obwohl ich Such- und Bib.pfad eingestellt hab.

Ich habs für die Kugeln jetzt mit der Schleife gelöst, für die Panzer werd ich das dann denk ich auch machen.

Darstellung erfolgt mit Bitmaps aus zwei Imagelisten, eine mit 8x8 Pixel bmp's für Kugeln und eine mit 20x20 Pixel bmp's für Panzer, funz au super, allerdings habe ich bei den Panzern das Problem das sie sich drehen können sollten. Und eine Funktion dafür hab ich noch nirgends gefunden(Will keine extra Kompo).

Mal schauen was die Zukunft noch so bringt.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
godman

Registriert seit: 25. Mai 2003
25 Beiträge
 
#8

Re: Kollision zweier Images?

  Alt 28. Nov 2005, 09:04
Falls du ein 2D Spiel programmierst rate ich dir die Komponenten von Turbosprite ....


Turbosprite
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf