From e8de360ed9476ac0b3aa3b60c795a0ffd1ac62f0 Mon Sep 17 00:00:00 2001 From: seba Date: Sat, 21 Jun 2008 20:31:11 +0200 Subject: [PATCH] neue rotationsfunktion --- emath_opengl.cpp | 21 +++++++++++++++++++++ emath_opengl.h | 1 + 2 files changed, 22 insertions(+) diff --git a/emath_opengl.cpp b/emath_opengl.cpp index d888d02..a79c158 100644 --- a/emath_opengl.cpp +++ b/emath_opengl.cpp @@ -50,3 +50,24 @@ void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d) { // rvec2.print("rvecdeg2"); } + +void rotvec2(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, float *dega, Punkt3D *veca, float *degb, Punkt3D *vecb) { + *dega = a.calcAngle(b); + if(*dega==180.0f) + *veca = a.getOrtographic(); + else if(*dega==0.0f) + veca->set(1.0f, 0.0f, 0.0f); + else + *veca = a.kreuzprodukt(b); + *degb = 0.0f; + vecb->set(1.0f, 0.0f, 0.0f); + c = Rotationsmatrix(*veca, *dega) * c; + + *degb = c.calcAngle(d); + if(*degb==180.0f) + *vecb = c.getOrtographic(); + else if(*degb==0.0f) + vecb->set(1.0f, 0.0f, 0.0f); + else + *vecb = c.kreuzprodukt(d); +} diff --git a/emath_opengl.h b/emath_opengl.h index dfcff71..24cfce2 100644 --- a/emath_opengl.h +++ b/emath_opengl.h @@ -9,4 +9,5 @@ void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, Punkt3D *, float *, Punkt3D *, float *); void rotFrom2VecTo2Vec(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d); +void rotvec2(Punkt3D a, Punkt3D b, Punkt3D c, Punkt3D d, float *dega, Punkt3D *veca, float *degb, Punkt3D *vecb); #endif