AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Direct3D: relative 2D Koordinaten bestimmen (für Radar)
Thema durchsuchen
Ansicht
Themen-Optionen

Direct3D: relative 2D Koordinaten bestimmen (für Radar)

Ein Thema von Zacherl · begonnen am 6. Dez 2009 · letzter Beitrag vom 6. Dez 2009
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Direct3D: relative 2D Koordinaten bestimmen (für Radar)

  Alt 6. Dez 2009, 15:52
Hey,

ich versuche grade ein kleines Radar für ein DirectX Spiel zu programmieren. Ich habe die Koordinaten der Spieler, meine eigene Position und meinen View Vector. Leider kenne ich mich mit den ganzen DirectX Funktionen noch nicht wirklich gut aus und finde auch keinen Ansatz:

Die Map dreht sich so, dass meine Blickrichtung immer nach Norden zeigt. Zudem steht mein eigener Spieler immer in der Mitte der Radarkarte.

Wie kann ich nun die X, Y, Z Koordinaten Vektoren der anderen Spieler auf die 2 dimensionale Karte (Vogelperspektive) projizieren und dabei auch meinen eigenen Blickwinkel mit einbeziehen?

Viele Grüße
Zacherl
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Direct3D: relative 2D Koordinaten bestimmen (für Radar)

  Alt 6. Dez 2009, 23:39
Du hast also bereits deine Position in "Weltkoordinaten" (P0) und den Winkel zwischen der Blickrichtung und der "Welt-Z-Achse" (alpha), richtig?

Seien die Weltkoordinaten der anderen Spieler mal Pn, dann bekommst du deren Position relativ zu deiner einfach mit Pn-P0=Vp. Wenn die 2D-Koordinate C das Zentrum deiner Map ist, sind die anderen Spieler bei C+(Vp*z)=Sn einzuzeichnen, wobei z ein beliebiger Zoomfaktor wäre. Die Y-Koordinate von Vp ignorierst du einfach, und setzt an diese Stelle die Z-Koordinate ein, die (ungedreht) quasi der Y-Koordinate in 2D entspricht. Jetzt musst du nur noch alle Sn um Alpha um das Zentrum C drehen, und hast die Blickrichtung des Spielers dabei.
Das hat mit DirectX jetzt auch herzlich wenig zu tun, und ist erstmal einfach nur lineare Algebra
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 09:06 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