toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN helpers.h test/un_project.cc


From: Gerhard Reitmayr
Subject: [Toon-members] TooN helpers.h test/un_project.cc
Date: Fri, 03 Apr 2009 16:14:53 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Gerhard Reitmayr <gerhard>      09/04/03 16:14:53

Modified files:
        .              : helpers.h 
Added files:
        test           : un_project.cc 

Log message:
        added project and unproject functions

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/helpers.h?cvsroot=toon&r1=1.40&r2=1.41
http://cvs.savannah.gnu.org/viewcvs/TooN/test/un_project.cc?cvsroot=toon&rev=1.1

Patches:
Index: helpers.h
===================================================================
RCS file: /cvsroot/toon/TooN/helpers.h,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -b -r1.40 -r1.41
--- helpers.h   3 Apr 2009 14:30:31 -0000       1.40
+++ helpers.h   3 Apr 2009 16:14:51 -0000       1.41
@@ -45,6 +45,28 @@
                        return v/sqrt(v*v);
                }
 
+       template<int Size, typename Precision, typename Base> inline 
Vector<Size-1, Precision> project( const Vector<Size, Precision, Base> & v){
+               return v.template slice<0,Size-1>() / v[Size-1];
+       }
+       
+       template<typename Precision, typename Base> inline Vector<-1, 
Precision> project( const Vector<-1, Precision, Base> & v){
+               return v.slice(0,v.size()-1) / v[v.size()-1];
+       }
+       
+       template<int Size, typename Precision, typename Base> inline 
Vector<Size+1, Precision> unproject( const Vector<Size, Precision, Base> & v){
+               Vector<Size+1, Precision> result;
+               result.template slice<0,Size>() = v;
+               result[Size] = 1;
+               return result;
+       }
+       
+       template<typename Precision, typename Base> inline Vector<-1, 
Precision> unproject( const Vector<-1, Precision, Base> & v){
+               Vector<-1, Precision> result(v.size()+1);
+               result.slice(0,v.size()) = v;
+               result[v.size()] = 1;
+               return result;
+       }
+
        namespace Internal{
                struct Copy
                {

Index: test/un_project.cc
===================================================================
RCS file: test/un_project.cc
diff -N test/un_project.cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ test/un_project.cc  3 Apr 2009 16:14:53 -0000       1.1
@@ -0,0 +1,15 @@
+#include <TooN/helpers.h>
+
+#include <iostream>
+
+using namespace std;
+
+int main(int, char **) {
+    TooN::Vector<3> t = TooN::makeVector(0,1,2);
+    TooN::Vector<> t2 = TooN::makeVector(0,1,2);    
+    
+    cout << t << "\t" << TooN::project(t) << "\t" << TooN::unproject(t) << 
endl;
+    cout << t2 << "\t" << TooN::project(t2) << "\t" << TooN::unproject(t2) << 
endl;
+    
+    return 0;
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]