Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

1

12.04.2012, 22:59

Matrix * Vektor

Ich würde gerne eine Rotationsmatrix mal einen Richtungsvektor nehmen. Leider weiß ich nicht so genau wie das funktionieren soll :thumbdown:
Also eine Matrix:

Quellcode

1
2
3
cos(a) | 0 | -sin(a)
0          | 1 | 0
sin(a) | 0 | cos(a)

mal

Quellcode

1
Vector3(0,1,0)

Wie mache ich das?
Danke im Voraus.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

2

12.04.2012, 23:03

Wie liegt die Matrix vor? Wenn bereits etwas vorliegt, dann gibt es bestimmt auch eine Operation dafür.

Falls nicht: Wie würdest du das von Hand machen? Schreibt die Schritte einfach mal mit Variablen aufs Blatt und du hast die Implementierung eigentlich bereits. ;)

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

3

12.04.2012, 23:05

Ich bin dabei so eine Implementierung zu schreiben :) Deswegen fragte ich. Leider finde ich in Google nicht das gewünschte, oder weil es schon so spät ist (höhö), suche ich nicht richtig.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

4

12.04.2012, 23:08

http://www.opengl-tutorial.org/beginners…ial-3-matrices/

Les dir auch insbesondere das über homogene Koordinaten durch, das ist wichtig.
Lieber dumm fragen, als dumm bleiben!

Toa

Alter Hase

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

5

12.04.2012, 23:25

Zeilen*Spaltenvektor... das tattoovier ich mir irgendwann :D Geht es darum wie das grundlegende Konzept funktioniert, oder wie du es Implementierst?
"Das ist ein Minkovski Raum, manche Menschen nennen ihn auch Weltraum" Prof. Dr. Jürgen Wambach, Theoretische Physik, TU Darmstadt | Meine Homepage

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

6

12.04.2012, 23:36

Also Matrixmultiplikation findest bei Wikipedia bei den ganz normalen Matrizen:
http://de.wikipedia.org/wiki/Matrix_(Mat…nmultiplikation

Bemerke, dass ein Vektor nichts anderes ist als eine Matrix mit nur einer Spalte (oder Zeile; je nach Betrachtungsweise)!

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

7

14.04.2012, 13:37

Danke hat geklappt. Ich poste einfach mal den Code wenn ihn jemand braucht :)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
Vector3 RotateDirectionVector( const Vector3& v, const Matrix& m )
{
    float x, y, z;
    x = m.m11 * v.x + m.m21 * v.y + m.m31 * v.z;
    y = m.m12 * v.x + m.m22 * v.y + m.m32 * v.z;
    z = m.m13 * v.x + m.m23 * v.y + m.m33 * v.z;
    return Vector3( x, y, z );
}

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

8

14.04.2012, 13:41

Warum nennst du die Funktion RotateDirectionVector? Hier wäre eher angebracht den Multiplikationsoperator zu überladen oder die Funktion mul, multiply o.ä. zu nennen. Denn das ist das, was sie macht. Mit Rotations hat sie nichts zu tun.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

9

14.04.2012, 14:24

Das war etwas dumm von mir stimmt :) Wird behoben.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

10

14.04.2012, 14:27

Die Funktion mag so funktionieren (hab nicht alle Indexe geprüft), aber du hast trotzdem ein Problem: Da du keine homogenen Koordinaten benutzt, unterstützt die Funktion keine Translationsmatrizen (Verschiebung). Ohne die kommt man aber nicht besonders weit, wenn man sich mit Computergraphik beschäftigt. Es hat schon seinen Grund,w arum grundsätzlich 4x4 Matrizen benutzt werden.
Details sind in meinem ersten Post verlinkt.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige