Koordinaten "lokalisieren / globalisieren"?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

PacMani

Betreff: Koordinaten "lokalisieren / globalisieren"?

BeitragDo, Apr 22, 2010 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Also entweder habe ich den "Global"-Parameter bei EntityX() etc. Befehlen nicht ganz verstanden, oder ich bin einfach zu doof (meist zweites).

Ich habe hier das Problem, dass ich hinter einem Objekt eine Wand erstellen möchte. Das würde bei Vogelperspektive ungefähr so aussehen:
Code: [AUSKLAPPEN]
  ^
-----

Wobei ^ das nach oben zeigende Objekt ist und ----- die zu erstellende Wand.

Nun benötige ich die Start- und Endkoordinaten dieser Wand.
Da dachte ich mir folgendes: Wenn ich doch das Koordinatensystem des Objekts verwenden kann, könnten doch folgende Anweisungen ausreichen, entsprechende Punkte zu erhalten? (pseudocode)
X1 = EntityX(Objekt)-1
Z1 = EntityZ(Objekt)-1
X2 = EntityX(Objekt)+1
Z1 = EntityZ(Objekt)
Aber wie kann ich EntityX und Z jetzt anweisen, das lokale Koordinatensystem des Objekts zu nutzen (damit ja auch die Drehung beachtet wird)? Kann man verstehen was ich eben geschrieben habe?
Und wie kann ich die errechneten Koordinaten dann in Globale wieder umwandeln?
Sonst müsste ich das ganze anders angehen, hätte auch schon eine Idee, aber das hier wäre mir lieber.

Xeres

Moderator

BeitragDo, Apr 22, 2010 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Global-Parameter macht ja nur Sinn, wenn das Entity ein Parent hat, zu dem es eine relative Position einnehmen kann.
Dein Problem kann man mit sin/cos oder Vektoren lösen; du musst nur den/die Winkel bestimmen der bei dem Objekt "Hinten" angibt.
Was soll das für eine Wand sein? Ein Cube, mehrere, ein Mesh?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

PacMani

BeitragDo, Apr 22, 2010 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, an dass mit Sin/Cos habe ich auch schon gedacht, wr derzeit nur zu Faul zur Umsetzung Wink

Müsste doch so gehen oder? Das hier hatte ich mir gedacht:
user posted image

Die Wand würde aus zwei Seiten bestehen (da sie ganz platt ist wie ein Blatt Papier).

Xeres

Moderator

BeitragDo, Apr 22, 2010 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha! Also:
Du erstellst ein Quad, dann positionierst du es auf den Koordinaten vom Objekt, gibst ihm die gleiche Rotation und verschiebst es in Richtung -z um den gewünschten Abstand hinter das Objekt. So käme man sogar um Berechnungen herum - oder gibt es sonst noch Bedingungen?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

PacMani

BeitragDo, Apr 22, 2010 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich brauche globale XZ-Start und Endkoordinaten Wink

Silver_Knee

BeitragDo, Apr 22, 2010 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Eventuelle kannst du mit TFormPoint was reißen. Der Kann Koordinaten von einem System ins andere umrechnen

Xeres

Moderator

BeitragDo, Apr 22, 2010 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Mitte der Wand ist dann (nach obiger verschiebe-Aktion) EntityX/Z, die Eckkoordinaten ergeben sich durch den Drehwinkel, Größe der Wand und etwas sin/cos - also alles bekannte Größen.
Für ein Beispiel fehlt es mir aber gerade leider an Zeit...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Silver_Knee

BeitragDo, Apr 22, 2010 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
TFormPoint wäre da nicht nur einfacher, weil du die eckpunkte aus Sicht des ^-Objekts ja kennst, sondern auch schneller, weil es intern EntityX,Y,Z,Pitch,Yaw,Roll,sin und cos ausführen kann ohne Programmsprünge zu machen. Wie enorm das schneller sein kann, als das von Hand zu berechnen zeigt dasda, wo ich versucht habe EntityDistance von Hand zu berechnen.
 

PacMani

BeitragFr, Apr 23, 2010 8:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Genial! TFormPoint ist genau das, was ich gesucht habe. Und klappt auch gleich beim ersten Anlauf Wink
Habe es jetzt so gelöst, für die, die es interessiert:
Code: [AUSKLAPPEN]
TFormPoint -1, 0, -1, Car\Entity, 0 ;Globalisierung der Start-Koordinate
Local X1# = TFormedX()
Local Z1# = TFormedZ()
TFormPoint  1, 0, -1, Car\Entity, 0 ;Globalisierung der End-Koordinate
Local X2# = TFormedX()
Local Z2# = TFormedZ()

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group