AGB  ·  Datenschutz  ·  Impressum  







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

Vektoriales Rechnen

Ein Thema von Maurooon · begonnen am 12. Mai 2017 · letzter Beitrag vom 16. Mai 2017
Antwort Antwort
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#1

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 13:49
Pathfinding ist glaube ich nicht der richtige Begriff. Der dient dazu, einen Weg (mit Kurven) von A nach B zu finden.
Um zu erkennen, ob ein Hindernis zwischen zwei Punkten A und B ist, kann man die Strecke von A nach B nehmen und prüfen, ob diese Linie eines der Hindernisse durchquert.
Dies kann man damit berechnen, indem man prüft ob die Strecke AB eine der Grenzlininen eines der Hindernisse durchquert. Bspw. wenn ein Hindernis durch Punkte V-W-X-Y-Z definiert ist, prüft man ob die Strecke AB eine der Strecken VW, WX, XY, YZ, ZV schneidet. Wenn ja, würde das Projektil auf das Hindernis treffen. (Vllt. hat Shapes dafür bereits eine Funktion).
Damit hast du das Problem auf das Berechnen des Schnittpunkts zweier Strecken reduziert, das sollte einfach genug sein.
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#2

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 16:11
Pathfinding ist glaube ich nicht der richtige Begriff. Der dient dazu, einen Weg (mit Kurven) von A nach B zu finden.
Um zu erkennen, ob ein Hindernis zwischen zwei Punkten A und B ist, kann man die Strecke von A nach B nehmen und prüfen, ob diese Linie eines der Hindernisse durchquert.
Dies kann man damit berechnen, indem man prüft ob die Strecke AB eine der Grenzlininen eines der Hindernisse durchquert. Bspw. wenn ein Hindernis durch Punkte V-W-X-Y-Z definiert ist, prüft man ob die Strecke AB eine der Strecken VW, WX, XY, YZ, ZV schneidet. Wenn ja, würde das Projektil auf das Hindernis treffen. (Vllt. hat Shapes dafür bereits eine Funktion).
Damit hast du das Problem auf das Berechnen des Schnittpunkts zweier Strecken reduziert, das sollte einfach genug sein.
wie frage ich denn ab, ob eine Strecke einer der Grenzlinien eines der Hindernisse durchquert?
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.073 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 16:18
wie frage ich denn ab, ob eine Strecke einer der Grenzlinien eines der Hindernisse durchquert?
Kannst du denn die Strecke zwischen dir und dem Gegner bestimmen? Hast du diese Information schon?
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#4

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 16:23
hätte jetzt gesagt dass ich irgendwie einen Vektor mache indem ich einfach die beiden Koordinaten voneinander abziehe... aber diese Idee ist noch nicht ganz ausgereift... jemand eine Idee dafür?
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#5

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 16:26
oder ich zeichne mit canvas eine Linie von den beiden Punkten... nur wie frage ich ab ob die durch die Shapes geht?
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
BrightAngel

Registriert seit: 13. Mär 2007
130 Beiträge
 
#6

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 17:24
Hey

Ich glaube, es wäre auch noch ganz interessant, wie deine Datenstruktur intern aussieht: Also wie sind Objekte und Hindernisse repräsentiert?

Beispiel: Man kann zum Beispiel intern ein zweidimensionales Array vorhalten, welche das Spielfeld repräsentieren. Kann man zum Beispiel in einem Schachspiel verwenden, weil da nur eine Figur pro "Zelle" erlaubt ist.
Du merkst dir intern nur für die Figuren die Positionen?

Auch die "Art wie Bewegung" implementiert ist, wäre vmtl. noch informativ: Wie findest du denn bisher heraus, ob deine Figur gegen eine Wand läuft. Im Prinzip ist das eventuell fast das selbe: Ob ein Projektil oder ein Männchen die Wand durchkreuzt, kann je nach Implementierung/Datenhaltung signifikante Unterschiede machen.

Wenn ich jetzt raten müsste, dann könnte ich mir vorstellen, dass du die Hindernisse in einer Art "Liste" (oder listenähnlich) gespeichert hast. Die "naive" Vorgehensweise ist einfach alle durchzutesten. Bei kleinen Szenenaufbauten funktioniert das mit moderner Hardware im Allgemeinen ganz gut. Und 2D spielt auch noch in deine Karten

Brighty
Do you have the email of god??? --- I have to tell him that I'm happy to be born!
  Mit Zitat antworten Zitat
Maurooon

Registriert seit: 7. Dez 2016
70 Beiträge
 
#7

AW: Vektoriales Rechnen

  Alt 12. Mai 2017, 17:33
Hey

Ich glaube, es wäre auch noch ganz interessant, wie deine Datenstruktur intern aussieht: Also wie sind Objekte und Hindernisse repräsentiert?

Beispiel: Man kann zum Beispiel intern ein zweidimensionales Array vorhalten, welche das Spielfeld repräsentieren. Kann man zum Beispiel in einem Schachspiel verwenden, weil da nur eine Figur pro "Zelle" erlaubt ist.
Du merkst dir intern nur für die Figuren die Positionen?

Auch die "Art wie Bewegung" implementiert ist, wäre vmtl. noch informativ: Wie findest du denn bisher heraus, ob deine Figur gegen eine Wand läuft. Im Prinzip ist das eventuell fast das selbe: Ob ein Projektil oder ein Männchen die Wand durchkreuzt, kann je nach Implementierung/Datenhaltung signifikante Unterschiede machen.

Wenn ich jetzt raten müsste, dann könnte ich mir vorstellen, dass du die Hindernisse in einer Art "Liste" (oder listenähnlich) gespeichert hast. Die "naive" Vorgehensweise ist einfach alle durchzutesten. Bei kleinen Szenenaufbauten funktioniert das mit moderner Hardware im Allgemeinen ganz gut. Und 2D spielt auch noch in deine Karten

Brighty
Also Die Figuren sind Images und die Hindernisse Shapes. Wenn die Koordinaten der Figuren mit den Shapes übereinstimmen, dann ist die Bewegung in diese Richtung gesperrt. Frage also alles durch einfache if-Anweisungen ab... eine Liste habe ich nicht, nein Und im Nachhinein noch ein Array auf mein Spielfeld zu verlegen wollte ich eigentlich vermeiden... gibt es keine Funktion die überprüft ob sich zwei gezeichnete Linien kreuzen? Ich könnte ja die Hindernisse sowie eben die Linie zwischen Spieler und KI jeweils zeichnen über Canvas und dann abfragen ob sie sich kreuzen... ist das nicht möglich?
"One of the basic rules of the universe is that nothing is perfect. Perfection simply doesn't exist... Without imperfection, neither you nor I would exist." - Stephen Hawking
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:32 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