[Top][All Lists]
[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;
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Toon-members] TooN helpers.h test/un_project.cc,
Gerhard Reitmayr <=