EntityPitch,EntityRoll,EntityYaw und PointEntity manuell
Übersicht

BB-FanBetreff: EntityPitch,EntityRoll,EntityYaw und PointEntity manuell |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das topic sagt schon alles.
Wie kann man obige Werte für die Rückgabewerte von EntityPitch, EntityRoll und EntityYaw manuell ausrechnen? Bzw. den Winkel zweier im Raum befindlicher Objekte. Und ganz wichtig, das PointEntity. Wie richtet man manuell ein Objekt auf ein anderes aus? Interessant wäre da auch AlignToVector. Ich hatte es in der Schule vor 10 Jahren nicht so mit Winkeln usw. Kann mir da jemand helfen, wäre echt lieb. |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm, sin und cos, kennste noch?
wenn ja, dann berechne es, indem du jeweils 1ne Achse weglässt. noch ein wenig tüfteln, und du hast es. |
||
between angels and insects |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich kann mich dunkel dran erinnern, ich hasse solche berechnungen.
war irgendwie ach keine ahnung, mal schauen ob ich es rausfinde. |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
hat das irgend einen Besonderen Grund? | ||
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, ich möchte etwas von hand berechnen, und brauch das dazu.
wenn ich wüßte wie. also prinzipiell will ich entity a) nach koordinaten von b) xyz ausrichten, schon wie pointentity bzw. aligntovertex. nur um es zu veranschaulichen, ich brauche eben nur die funktionen dazu, wie man sowas macht, bzw. wie so ein pointentity funktioniert. |
||
![]() |
Xaron |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geht's Dir um eine Art zielsuchende Rakete? Ich hab sowas für meine U-Boot-Simulation - Lenktorpedos. ![]() Ich verwender allerdings DeltaPitch und DeltaYaw und berechne daraus den nötigen Rollwinkel + Pitch, um das Ziel zu treffen. Code: [AUSKLAPPEN] deltaPitch# = DeltaPitch( torpedo\entity, torpedo\target\entity ) deltaYaw# = DeltaYaw( torpedo\entity, torpedo\target\entity ) torqueX# = 0.0 torqueY# = 0.0 torqueZ# = 0.0 If( Abs( deltaPitch ) > 10.0 Or Abs( deltaYaw ) > 10.0 ) ;Korrektur für Rollwinkel bestimmen TFormPoint( EntityX( torpedo\target\entity, 1 ), EntityY( torpedo\target\entity, 1 ), EntityZ( torpedo\target\entity, 1 ), 0, torpedo\entity ) ;Rollwinkel zwischen den lokalen Torpedokoordinaten und dem Ziel berechnen dRoll# = ATan2( TFormedY(), TFormedX() ) dRoll = dRoll - 90 deltaX# = -Cos( dRoll ) torqueX# = deltaX * WEAPON_TORPEDO_PITCH_FACTOR torqueY# = 0.0 torqueZ# = dRoll * WEAPON_TORPEDO_ROLL_FACTOR End If TFormVector( torqueX, torqueY, torqueZ, torpedo\entity, 0 ) TOKRB_SetTorque( torpedo\tokHandle, TFormedX#(), TFormedY#(), TFormedZ#() ) Den Winkel zwischen 2 Vektoren kannst Du über das Skalarprodukt bestimmen: http://www.mathe-online.at/mat...ktoren.htm Gruß - Xaron |
||
Cerberus X - Monkey X Reloaded! |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
mmmm ganz schön kompliziert.
sagen wir mal so, es ist schon fast wie pointentity. also stell dir vor, ich habe nur die koordinaten von der kamera und ein zielobjekt. und möchte die kamera nun immer darauf ausrichten. entityx, y, z kann ich jeweils haben. nur keine winkel. geht das auch ohne winkel zu haben? habe nur positionskoordinaten. von ziel und quelle |
||
![]() |
peacemaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
DeltaYaw, DeltaPitch liefert immer den Winkel zurück, der nötig ist, um auf das Objekt zuzurichten. Der Code von Xaron ist halt vlt etwas komplex für dich, weil er da Dinge macht, die du nicht brauchst, bzw. Tokamak benutzt.
Schau dir einfach DeltaYaw ![]() ![]() mfG |
||
~Tehadon~
www.tehadon.de http://www.blitzforum.de/worklogs/14/ |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und kann man deltayaw und deltapitch auch manuell ausrechnen?
jaja, hört sich kompliziert an, ist es wohl auch, aber ich brauchs halt so basic wie möglich, manuelle berechnung. |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Manuell wird es etwas komplizierter, aber mit ein wenig Vektorgeometrie geht das schon.
Angenommen, du hast den Vektor von Kamera zu Zielobjekt gegeben, dann kann man den Winkel berechnen, indem man ihn auf zwei Ebenen projiziert und so zwei einfache rechtwinklige Dreiecke erhält. Man brechnet EntityPitch wie folgt: Code: [AUSKLAPPEN] Pitch# = ATan2( VectorY#, Sqr( VectorX#*VectorX# + VectorZ#*VectorZ# ) )
EntityYaw ist dann etwas einfacher: Code: [AUSKLAPPEN] Yaw# = ATan2( -VectorZ#, -VectorX# ) - 90
Geht auch einfacher, indem du zuerst einen Vektor von der Kamera zum Zielobjekt hin bildest und dann die Kamera per AlignToVector daran ausrichtest. Code: [AUSKLAPPEN] AlignToVector Cam, TargetX# - CamX#, TargetY# - CamY#, TargetZ# - CamZ#, 3
|
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
dumme frage, aber Code: [AUSKLAPPEN] Angenommen, du hast den Vektor von Kamera zu Zielobjekt gegeben wie ist das gemeint, wo bekomm ich jetzt diese vektordaten her?
kurz gesagt, wenn ich pointentity(start, zielobjekt) nachmachen würde wollen, und nur die jeweilgen koordinaten habe, was müsste ich tun? oder eben einfach eine entität deren koordinaten bekannt sind auf x,y,z irgendwo im raum ausrichten. ohne winkel kennen, oder per delta.... herausfinden zu können. für mich ist das einfach zu harter tobak, aber ich brauchs in der form und will es verstehen lernen. |
||
- Zuletzt bearbeitet von BB-Fan am Mi, Jun 11, 2008 17:16, insgesamt 2-mal bearbeitet
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Vektor zwischen zwei Objekten wird gebildet durch die Koordinaten des Ziels minus die Koordinaten des Startpunktes.
Wie beim AlignToVector gezeigt, sieht das so aus: Code: [AUSKLAPPEN] VectorX# = TargetX# - CamX#
VectorY# = TargetY# - CamY# VectorZ# = TargetZ# - CamZ# Das gehört nun aber zu den Grundlagen der Vektorgeometrie. Ich kann dir nur empfehlen, auf Blitzinterne Funktionen zuzugreifen, weil diese ungleich schneller sind, da sich so etwas sehr einfach durch eine Matrizenrechnung machen lässt, während hier ein anderer Weg gemacht werden muss. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
BadDeath |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
BB-Fan hat Folgendes geschrieben: kurz gesagt, wenn ich pointentity(start, zielobjekt) nachmachen würde wollen, und nur die jeweilgen koordinaten habe, was müsste ich tun?
oder eben einfach eine entität deren koordinaten bekannt sind auf x,y,z irgendwo im raum ausrichten. ohne winkel kennen, oder per delta.... herausfinden zu können. für mich ist das einfach zu harter tobak, aber ich brauchs in der form und will es verstehen lernen. erstelle doch einen pivot und positioniere ihn an die stelle. dann kannst du auch pointentity verwenden, da der pivot ein normales entity ist, nur unsichtbar, da er keinen mesh besitzt. |
||
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
will weder pointentity noch alignto..... oder deltay............. benutzen.
sozusagen was müsste ich tun um pointentity oder alignto.... selber als funktion schreiben zu können. nur mit der voraussetzung xyz koordinaten von start- und zielentity zu haben. deltapitch und deltayaw sollen nicht verwendet werden, alles von hand halt, bis auf entityX, entityY und entityZ. ist das möglich, und kann mir das jemand erklären? |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Genau das habe ich dir oben ja doch beschrieben.
RotateEntity mit den Werten müsstest du ja noch hinbekommen ![]() |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich habe dann sozusagen 3 vektorkoordinaten, soweit habe ich das verstanden.
obwohl, nein ich glaub doch noch nicht ganz. ich kapiers net ganz, es umzusetzen.schei.... vektoren/winkel puuuhhhh, muss mich da noch tiefer einarbeiten, sonst raff ich das nie. |
||
BB-Fan |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
okay ich habs, aber was mach ich bei rotate und dem z wert.
bei mir dreht es sich um eine achse im kreis.ich glaub es ist sogar die z achse, die hab ich auf 0 gesetzt... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group