AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi First Person - In 3 Dimensionen bewegen
Thema durchsuchen
Ansicht
Themen-Optionen

First Person - In 3 Dimensionen bewegen

Ein Thema von ISAS · begonnen am 30. Jul 2006 · letzter Beitrag vom 30. Jul 2006
Antwort Antwort
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#1

First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 16:55
Hallo!

Ich arbeite mich gerade in OpenGL ein. Geht auch recht gut, aber stehe nun vor einem Problem, dass eher allgemein ist. Will mich wie bei einem 3D Programm frei in der Welt bewegen können. Wie ein Raumschiff: Rauf, runter, links, rechts, drehenrauf, drehenrunter, drehenlinks, drehenrechts. Sprich vogelfrei. Ich glaube, ihr wisst, was ich meine

Auf 2 Dimensionen hab ich es auch schon geschafft mich zu bewegen, aber irgendwie happerts an der 3...

Ich habe 2 Winkel (eine um die z-Achse und die andre um die y-Achse) und eine Weglänge (oder auch radius). Jetzt möchte ich, wenn ich mich in einem bestimmen Winkel (sagen wir mal 45° von x weg und 45° hinauf) den Punkt errechnen, der vom 0Punkt genau diese Winkel entfernt ist mit einer bestimmten Weglänge.

Kurz gesagt, ich schaue gerade rechts rauf und will mit betätigen einer Taste auch dorthin.
Ich brauch also die Formel(n), die man benötigt, um diesen Punkt zu berrechnen.

Danke

PS: Falls ich mich schlecht ausgedrückt habe und ihr nicht wisst, was ich will, dann versuche ich es irgendwie anders nochmal. Aber Stichwort vogelfrei bzw Kammera wie in einem 3D Bearbeitungs-Programm müsste eigentlich alles erklären!
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 17:11
In Kugelkoordinaten wird sowas nicht allzu schön. Ich würde daher vorschlagen in kartesische Koordinaten umzusteigen, die Vektoraddition auszufühen und dann wieder in KK zurückzugehen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#3

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 18:05
hmm, was du mit Kugelkoordinaten meinst, weis ich jetzt nicht so recht.
ich hab versucht mit x² + y² + z² = r² zu rechnen, aber ich komm einfach auf keine Formel...
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 18:18
Im Wikipedia-Artikel über Kugelkoordinaten findest du die Formel zur Umrechnung ins karthesische Koordinatensystem.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 18:34
Schreib doch mal genau, in welchem System du deine Koordinaten hast und wie du rechnen wolltest, bzw. wie deine Winkel definiert sind.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#6

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 18:47
Rotate.y = 80.0;
Rotate.z = 10.0;

Jetzt habe ich einen Kreis (r = 1 ( <- "eins")) mit der X und Z achse Angenommen und mit dem Winkel dann beide Punkte berechnet

P.x = r * cos(Rotate.z);
P.z = r * sin(Rotate.z);

k, das funktioniert bei 2D. Wenn ich nun versuche irgendwie die y-Koordinate hinzuzufügen, dann geht das irgendwie nicht. Da x und z ja auch von y abhängen. P.y = r * sin(Rotate.y); wurde mir dann y ergeben, aber dieser Wert hat nichts mit x und z zu tun. Sprich ich schaff es immer nur 2 Werte zu errechnen und den 3ten leider nicht.

PS: Aber es muss ja nicht ein Punkt sein, es reicht schon ein Vektor, der vom 0-Punkt aus durch diesen Punkt führt, weil ich diesen einfach auf 1 zurückstutzen kann bzw. auf die gewünschte länge...
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 18:51
Und was bitte gefällt dir nun nicht an jenem Wikipedia-Eintrag?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

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

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 18:56
Wie sind deine Winkel definiert? Wertebereich, zwischen Welchen Geraden/Ebenen...

Was ist jetzt eigentlich dein Problem?
Stehst du im Origo deines Kugelkoordinatensystems und hast einen Vektor in Kugelkoordinaten und willst den in kartesischen Koordinaten darstellen, oder stehst du irgendwo in deinem KKSystem und hast einen weiteren KKSystem-Vektor und willst diese addieren und das Ergebniss dann in kartesischen/Kugel-Koordinaten?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von ISAS
ISAS

Registriert seit: 24. Sep 2003
Ort: Vietnam
205 Beiträge
 
Delphi 4 Standard
 
#9

Re: First Person - In 3 Dimensionen bewegen

  Alt 30. Jul 2006, 19:25
... arbeite mich gerade in die Kugelkoordinaten ein...

danke mal für den Vorschlag. Das scheint es zu sein, aber ich muss das erstmal richtig verstehen.

//Edit:: habe die Winkel auf der xz-Achse und xy achse.

hmm, Also eigentlich hab ich beide Winkel, die ich brauche... richtig?

Nehmen wir an:
Winkel auf der xy-Achse = a = 45°
Winkel auf der xz-Achse = b = 45°
Radius r = 1 und somit nich zu beachten.

x = sin(a) * sin(b) = 0.5 //falsch. Müsste 0.577 sein

Welcher Winkel passt nicht?
Signatur wurde auf Wunsch geändert. Deswegen einfach hier drauf klicken-> www.geggi.at.gg
  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 18:25 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