-/*\r
-Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
-For a list of contributors, see the accompanying CONTRIBUTORS file.\r
-\r
-This file is part of GtkRadiant.\r
-\r
-GtkRadiant is free software; you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published by\r
-the Free Software Foundation; either version 2 of the License, or\r
-(at your option) any later version.\r
-\r
-GtkRadiant is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License\r
-along with GtkRadiant; if not, write to the Free Software\r
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\r
-*/\r
-\r
-#include "math_quaternion.h"\r
-#include "math_matrix.h"\r
-\r
-void toQuat( idVec3 &src, quat_t &dst ) {\r
- dst.x = src.x;\r
- dst.y = src.y;\r
- dst.z = src.z;\r
- dst.w = 0.0f;\r
-}\r
-\r
-void toQuat( angles_t &src, quat_t &dst ) {\r
- mat3_t temp;\r
-\r
- toMatrix( src, temp );\r
- toQuat( temp, dst );\r
-}\r
-\r
-void toQuat( mat3_t &src, quat_t &dst ) {\r
- float trace;\r
- float s;\r
- int i;\r
- int j;\r
- int k;\r
-\r
- static int next[ 3 ] = { 1, 2, 0 };\r
-\r
- trace = src[ 0 ][ 0 ] + src[ 1 ][ 1 ] + src[ 2 ][ 2 ];\r
- if ( trace > 0.0f ) {\r
- s = ( float )sqrt( trace + 1.0f );\r
- dst.w = s * 0.5f;\r
- s = 0.5f / s;\r
- \r
- dst.x = ( src[ 2 ][ 1 ] - src[ 1 ][ 2 ] ) * s;\r
- dst.y = ( src[ 0 ][ 2 ] - src[ 2 ][ 0 ] ) * s;\r
- dst.z = ( src[ 1 ][ 0 ] - src[ 0 ][ 1 ] ) * s;\r
- } else {\r
- i = 0;\r
- if ( src[ 1 ][ 1 ] > src[ 0 ][ 0 ] ) {\r
- i = 1;\r
- }\r
- if ( src[ 2 ][ 2 ] > src[ i ][ i ] ) {\r
- i = 2;\r
- }\r
-\r
- j = next[ i ]; \r
- k = next[ j ];\r
- \r
- s = ( float )sqrt( ( src[ i ][ i ] - ( src[ j ][ j ] + src[ k ][ k ] ) ) + 1.0f );\r
- dst[ i ] = s * 0.5f;\r
- \r
- s = 0.5f / s;\r
- \r
- dst.w = ( src[ k ][ j ] - src[ j ][ k ] ) * s;\r
- dst[ j ] = ( src[ j ][ i ] + src[ i ][ j ] ) * s;\r
- dst[ k ] = ( src[ k ][ i ] + src[ i ][ k ] ) * s;\r
- }\r
-}\r
+/*
+Copyright (C) 1999-2007 id Software, Inc. and contributors.
+For a list of contributors, see the accompanying CONTRIBUTORS file.
+
+This file is part of GtkRadiant.
+
+GtkRadiant is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+GtkRadiant is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GtkRadiant; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+
+#include "math_quaternion.h"
+#include "math_matrix.h"
+
+void toQuat( idVec3 &src, quat_t &dst ) {
+ dst.x = src.x;
+ dst.y = src.y;
+ dst.z = src.z;
+ dst.w = 0.0f;
+}
+
+void toQuat( angles_t &src, quat_t &dst ) {
+ mat3_t temp;
+
+ toMatrix( src, temp );
+ toQuat( temp, dst );
+}
+
+void toQuat( mat3_t &src, quat_t &dst ) {
+ float trace;
+ float s;
+ int i;
+ int j;
+ int k;
+
+ static int next[ 3 ] = { 1, 2, 0 };
+
+ trace = src[ 0 ][ 0 ] + src[ 1 ][ 1 ] + src[ 2 ][ 2 ];
+ if ( trace > 0.0f ) {
+ s = ( float )sqrt( trace + 1.0f );
+ dst.w = s * 0.5f;
+ s = 0.5f / s;
+
+ dst.x = ( src[ 2 ][ 1 ] - src[ 1 ][ 2 ] ) * s;
+ dst.y = ( src[ 0 ][ 2 ] - src[ 2 ][ 0 ] ) * s;
+ dst.z = ( src[ 1 ][ 0 ] - src[ 0 ][ 1 ] ) * s;
+ } else {
+ i = 0;
+ if ( src[ 1 ][ 1 ] > src[ 0 ][ 0 ] ) {
+ i = 1;
+ }
+ if ( src[ 2 ][ 2 ] > src[ i ][ i ] ) {
+ i = 2;
+ }
+
+ j = next[ i ];
+ k = next[ j ];
+
+ s = ( float )sqrt( ( src[ i ][ i ] - ( src[ j ][ j ] + src[ k ][ k ] ) ) + 1.0f );
+ dst[ i ] = s * 0.5f;
+
+ s = 0.5f / s;
+
+ dst.w = ( src[ k ][ j ] - src[ j ][ k ] ) * s;
+ dst[ j ] = ( src[ j ][ i ] + src[ i ][ j ] ) * s;
+ dst[ k ] = ( src[ k ][ i ] + src[ i ][ k ] ) * s;
+ }
+}