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

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

1

07.01.2014, 04:23

Brauche Rotationswinkel für glRotate3f();

Hallo, ich habe folgendes Problem:
Gegeben ist eine Ebene, durch drei Punkte definiert, 1 Ist-Richtungsvektor v0 und 1 Soll-Richtungsvektor v1
Ich möchte nun alle Objekte in der Ebene so drehen, dass v0 die gleiche Richtung hat wie v1.

Quellcode

1
2
glPushMatrix();glRotate3f(PhiX,1.0,0.0,0.0);glRotate3f(PhiY,1.0,1.0,0.0);
glCallList(list);glPopMatrix();



Ich habe keine Ahnung, wie ich die Winkel berechnen kann !


Für Eure Hilfe danke ich im voraus.


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

07.01.2014, 06:24

Vergiss lieber glRotate. Diese Euler-Winkel sind nicht besonders toll.
Bau dir die Matrix lieber selbst und benutze glMultMatrix.
Wie du die Matrix bauen kannst, findest du im Netz, z.B. hier: http://stackoverflow.com/questions/10161…-another-vector

PS: Willkommen im Forum! :)

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

07.01.2014, 12:43

Klick

Unter rotate() kannst du sehen was OpenGL eigentlich macht...

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

4

07.01.2014, 18:38

Danke für eure Anteilnahme.

Zitat

Unter rotate() kannst du sehen was OpenGL eigentlich macht...
Ich hab' das file (+ Matrix.h) in mein Projekt eingefügt und bekomme Fehlermeldungen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
namespace bb
{
    
    mat4::mat4() //  -> C++ requires a type specifier for all declarations  ->Use of undeclared identifier 'mat4'  -> Use of undeclared identifier 'values'
    {
        for(unsigned int i = 0; i < 16; i++){
            values[i] = 0;
        }
    }...}



Was ging schief ?

Ich arbeite mit Xcode 5, OS X 10.8, und programmiere in Objective C, kenne C++ nicht wirklich.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »VanceRegnet« (07.01.2014, 18:48)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

5

07.01.2014, 19:45

Du brauchst beides, header und cpp Datei.

Konkret:

Matrix.h
Matrix.cpp

Achte darauf das es Abhängigkeiten zu vec2/vec3/vec4 geben kann. Die musst du entweder rausnehmen (ganze Funktion weg) oder eben Vector.h und Vector.cpp mit kopieren.

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

6

07.01.2014, 19:51

Hallo David,
ich habe etwas nicht verstanden:

Quellcode

1
(|V1| |V2|);

Was bedeutet das, wie sollen die Vektorbeträge verknüpft werden ?

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

7

07.01.2014, 20:18



Du brauchst beides, header und cpp Datei.

Konkret:

Matrix.h
Matrix.cpp

Achte darauf das es Abhängigkeiten zu vec2/vec3/vec4 geben kann. Die musst du entweder rausnehmen (ganze Funktion weg) oder eben Vector.h und Vector.cpp mit kopieren.
Ich habe nun 2 Matrix.cpp im Netz gefunden und beide haben so viele Fehler, dass der Compiler abgebrochen hat.
Kannst du mir nicht den link zu den richtigen zeigen ?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

8

07.01.2014, 20:20

Hallo David,
ich habe etwas nicht verstanden:

Quellcode

1
(|V1| |V2|);

Was bedeutet das, wie sollen die Vektorbeträge verknüpft werden ?

Durch Multiplikation.
Wenn man "ab" schreibt, meint man ja auch "a * b".

VanceRegnet

Frischling

  • »VanceRegnet« ist der Autor dieses Themas

Beiträge: 13

Wohnort: München

Beruf: CAD-Zeichner i.R.

  • Private Nachricht senden

9

07.01.2014, 21:13

Durch Multiplikation.
Wenn man "ab" schreibt, meint man ja auch "a * b".
Danke, ab und zu fühle ich mich wie ein Fisch an Land ;)

C-/C++-Quelltext

1
2
3
4
5
6
void product(float v0[3], float v1[3], float result)
{
    for (unsigned ii=0; ii<3; ii++) { v0[ii] = fabsf(v0[ii]);}
    result = 0.0;
    for (unsigned ii=0; ii<3; ii++) {result += v0[ii] * v1[ii];}
}

Ich habe nun einen Winkel und ein normalisiertes Kreuzprodukt.

Zitat

Now you can build a quaternion with angle and A_n.

Quellcode

1
 q = (A_n.x i + A_n.y j + A_n.z k)*sin(angle/2) + cos(angle/2);


Hier muss ich passen. Ich habe noch nie mit komplexen Zahlen zu tun gehabt.
Hast du nicht den code in C, der die Matrix für glMultmatrix() liefert ?

Zitat

And use these formulas to get your euler angles.
Euler angles ???

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »VanceRegnet« (07.01.2014, 22:00)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

07.01.2014, 23:12

https://github.com/DeKugelschieber/Burni…urningByte/math

Gesamter Ordner und es sollte laufen.

Werbeanzeige

Ähnliche Themen