CPP/Eigen/Homogeneous
From ProgrammingExamples
< CPP
Homogeneous.cpp
#include <iostream> #include <Eigen/Geometry> #include <Eigen/Dense> // for Vector void CreateHomeogeneous(); void ConvertToHomeogeneous(); void ConvertFromHomeogeneous(); int main(int argc, char *argv[]) { //CreateHomeogeneous(); ConvertToHomeogeneous(); ConvertFromHomeogeneous(); return 0; } void CreateHomeogeneous() { /* Eigen::Homogeneous<Eigen::Vector3d, Eigen::Vertical> h; h(0,0) = 3; h(1,0) = 2.5; std::cout << h << std::endl; */ } void ConvertToHomeogeneous() { std::cout << "ConvertToHomeogeneous()" << std::endl; // Create a 3D vector Eigen::Vector3d v; v(0) = 0; v(1) = 1; v(2) = 2; std::cout << "Original 3D vector: " << v << std::endl; // Get the homogeneous version of the vector Eigen::Vector4d h = v.homogeneous(); std::cout << "Homogeneous version (4D): " << h << std::endl; } void ConvertFromHomeogeneous() { std::cout << "ConvertFromHomeogeneous()" << std::endl; // Create a 4D vector Eigen::Vector4d v; v(0) = 0; v(1) = 1; v(2) = 2; v(3) = .5; std::cout << "Original 4D homogeneous vector: " << v << std::endl; // Divide the vector by the last entry Eigen::Vector3d unhomog = v.hnormalized(); std::cout << "Un-homogeneous vector: " << unhomog << std::endl; }
CMakeLists.txt
cmake_minimum_required(VERSION 2.6) PROJECT(Homogeneous) # must set EIGEN3_INCLUDE_DIR to ~/src/Eigen (or where ever Eigen lives) #set(EIGEN3_INCLUDE_DIR ~/src/eigen) #SET(CMAKE_MODULE_PATH /media/portable/src/Eigen/cmake) #SET(CMAKE_MODULE_PATH .) set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR} ${CMAKE_MODULE_PATH}) #set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}) FIND_PACKAGE(Eigen3 REQUIRED) INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR}) ADD_EXECUTABLE(Homogeneous Homogeneous.cpp )