From 1b1796f4f3b85ca8fb805ceba4bf71fdac34a9d2 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Wed, 16 Nov 2011 16:09:56 +0000 Subject: [PATCH] add support for UnitVector<4> and Rotation<3> [[Imported from SVN: r8217]] --- harmonicmaps.cc | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/harmonicmaps.cc b/harmonicmaps.cc index d1cb80a7..70c397f3 100644 --- a/harmonicmaps.cc +++ b/harmonicmaps.cc @@ -6,7 +6,8 @@ //#define HARMONIC_ENERGY_FD_GRADIENT //#define UNITVECTOR2 -#define UNITVECTOR3 +//#define UNITVECTOR3 +#define UNITVECTOR4 //#define ROTATION2 //#define ROTATION3 //#define REALTUPLE1 @@ -50,6 +51,9 @@ typedef UnitVector<double,2> TargetSpace; #ifdef UNITVECTOR3 typedef UnitVector<double,3> TargetSpace; #endif +#ifdef UNITVECTOR4 +typedef UnitVector<double,4> TargetSpace; +#endif #ifdef REALTUPLE1 typedef RealTuple<double,1> TargetSpace; #endif @@ -155,6 +159,8 @@ int main (int argc, char *argv[]) try FieldVector<double,1> v; #elif defined UNITVECTOR3 FieldVector<double,3> v; +#elif defined UNITVECTOR4 || defined ROTATION3 + FieldVector<double,4> v; #else FieldVector<double,2> v; #endif @@ -174,6 +180,19 @@ int main (int argc, char *argv[]) try v[1] = 0; v[2] = std::cos(pos[0]*M_PI); #endif +#ifdef UNITVECTOR3 + v[0] = 1; + v[1] = 0; + v[2] = 0; +#endif +#if defined UNITVECTOR4 || defined ROTATION3 + FieldMatrix<double,3,3> rMat; + rotation.matrix(rMat); + v[0] = rMat[2][0]; + v[1] = rMat[2][1]; + v[2] = rMat[2][2]; + v[3] = 0; +#endif #ifdef UNITVECTOR2 v[0] = std::sin(pos[0]*M_PI); v[1] = std::cos(pos[0]*M_PI); @@ -182,22 +201,17 @@ int main (int argc, char *argv[]) try v[0] = pos[0]/*M_PI*/; #endif } else { -#ifdef UNITVECTOR2 +#if defined UNITVECTOR2 || defined UNITVECTOR3 || defined UNITVECTOR4 || defined ROTATION3 + v = 0; v[0] = 1; - v[1] = 0; -#endif -#ifdef UNITVECTOR3 - v[0] = 1; - v[1] = 0; - v[2] = 0; #endif #if defined ROTATION2 || defined REALTUPLE1 v[0] = 0.5*M_PI; #endif } -#if defined UNITVECTOR2 || defined UNITVECTOR3 || defined REALTUPLE1 - x[idx] = v; +#if defined UNITVECTOR2 || defined UNITVECTOR3 || defined UNITVECTOR4 || defined ROTATION3 || defined REALTUPLE1 + x[idx] = TargetSpace(v); #endif #if defined ROTATION2 x[idx] = v[0]; -- GitLab