Autor Beitrag
alexschultze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: Fr 21.02.03 18:15 
Hi,

ich habe hier ein kleines Problem.
Es geht um eine Kollisionsabfrage und die Prüfung, ob sich ein Objekt in einem bestimmten Bereich befindet.

Bevorzugen würde ich es das selber zu programmieren. Geht hauptsächlich um die Berechnung. Auf einer Image sollen ein paar kleine Schifflein rumhupfen, und man soll die halt selektieren können, und da ist die Frage welche der Schiffe in einem gezogenen Bereich sind (wie bei Spielen eben) und markiert diese.

Weiterhin geht es darum das die Schiffe einen speziellen Bereich sichtbar machen sollen (um das Schiff herum).

Wie berechne ich sowas?
Oder würdet ihr mir für sowas direkt DelphiX oder was ähnliches empfehlen?

Alex

_________________
Von allen Dingen die ich verloren habe trauere ich meinem Verstand am meisten nach.
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Mo 24.02.03 15:57 
Hallo.

Ich nehme ann jedes deiner schiffe hat schon ein Rect: Mit der funktion IntersectRect(rect) prüfst du für jedes schiff ob 'true' bei raus kommt und markierst es dann!

mfg mx
alexschultze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: Mo 24.02.03 16:13 
das klingt nach Delphi X.
Noch benutze ich das ja gar nicht :)

_________________
Von allen Dingen die ich verloren habe trauere ich meinem Verstand am meisten nach.
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: Mo 24.02.03 16:18 
wenn du es ganz elemetar haben willst:
onmousedown: Koords merken
onmouseup: -koordsmerken
-schauen ob dein Objekt (teilweise) mit in dem Rechteck liegt
(wenn das nicht klar ist, dann noch mal fragen...)
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Di 25.02.03 11:13 
Zitat:
das klingt nach Delphi X.
Noch benutze ich das ja gar nicht

...hä! Das hat absolut nichts mit delphiX zu tun. Irgendwie kannst du wohl ein rect (rectangle = rechteck) für dein schiff erstellen, wenn du keins hast! IntersectRect ist ein standart delphi befehl!

muku.
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: So 09.03.03 01:08 
Tja, und sollte das noch nicht ausreichen, dann kannst du das ganze system noch etwas optimieren ...

Mit einer einfachen Entfernungs-abfrage (für die es übrigens auch ein verdammt schnelles Annäherungsverfahren gibt das ohne Wurzel-Operation auskommt) überprüfst du zuerst ob es sich überhaupt "auszahlt" eine genauere Überprüfung vorzunehmen ... ab einer bestimmten Entfernung kannst Du ja dann auf überschneidende Rechtecke überprüfen ... wenn Dir das noch zu ungenau ist dann musst Du halt auf bitmask-vergleiche zurückgreifen (d.h. pixelweise Überprüfung der Objekte ... damit kannst Du verhindern dass 2 Schiffe (zum Beispiel!) kollidieren weil sich zwar ihre Rechtecke überschneiden, die Schiffe aber keine Rechtecks-form haben und sich eigentlich gar nicht berühren würden ...)

Hoffe ich hab damit eine kleine Anregung gegeben, "wie man's auch machen kann" :wink:

_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---