<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.programmingexamples.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.programmingexamples.net/w/index.php?action=history&amp;feed=atom&amp;title=CPP%2FEigen%2FProjectPoints</id>
		<title>CPP/Eigen/ProjectPoints - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.programmingexamples.net/w/index.php?action=history&amp;feed=atom&amp;title=CPP%2FEigen%2FProjectPoints"/>
		<link rel="alternate" type="text/html" href="http://www.programmingexamples.net/w/index.php?title=CPP/Eigen/ProjectPoints&amp;action=history"/>
		<updated>2026-06-15T14:16:13Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>http://www.programmingexamples.net/w/index.php?title=CPP/Eigen/ProjectPoints&amp;diff=4727&amp;oldid=prev</id>
		<title>Daviddoria: Created page with '==ProjectPoints.cpp== &lt;source lang=&quot;cpp&quot;&gt; #include &lt;iostream&gt; #include &lt;vector&gt;  #include &lt;Eigen/Geometry&gt; #include &lt;Eigen/Dense&gt; // for Vector #include &lt;Eigen/StdVector&gt; // Requ…'</title>
		<link rel="alternate" type="text/html" href="http://www.programmingexamples.net/w/index.php?title=CPP/Eigen/ProjectPoints&amp;diff=4727&amp;oldid=prev"/>
				<updated>2011-08-15T16:13:03Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;#039;==ProjectPoints.cpp== &amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; #include &amp;lt;iostream&amp;gt; #include &amp;lt;vector&amp;gt;  #include &amp;lt;Eigen/Geometry&amp;gt; #include &amp;lt;Eigen/Dense&amp;gt; // for Vector #include &amp;lt;Eigen/StdVector&amp;gt; // Requ…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==ProjectPoints.cpp==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Eigen/Geometry&amp;gt;&lt;br /&gt;
#include &amp;lt;Eigen/Dense&amp;gt; // for Vector&lt;br /&gt;
#include &amp;lt;Eigen/StdVector&amp;gt; // Required (http://eigen.tuxfamily.org/dox-devel/TopicStlContainers.html)&lt;br /&gt;
&lt;br /&gt;
typedef std::vector&amp;lt;Eigen::Vector2d,Eigen::aligned_allocator&amp;lt;Eigen::Vector2d&amp;gt; &amp;gt; Point2DVector;&lt;br /&gt;
typedef std::vector&amp;lt;Eigen::Vector3d,Eigen::aligned_allocator&amp;lt;Eigen::Vector3d&amp;gt; &amp;gt; Point3DVector;&lt;br /&gt;
&lt;br /&gt;
Point2DVector Generate2DPoints();&lt;br /&gt;
Point3DVector Generate3DPoints();&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
  // Create the known projection matrix&lt;br /&gt;
  Eigen::MatrixXd P(3,4);&lt;br /&gt;
  P(0,0) = -2.8058e-01;&lt;br /&gt;
  P(1,0) = -6.8326e-02;&lt;br /&gt;
  P(2,0) = 5.1458e-07;&lt;br /&gt;
&lt;br /&gt;
  P(0,1) = 2.0045e-02;&lt;br /&gt;
  P(1,1) = -3.1718e-01;&lt;br /&gt;
  P(2,1) = 4.5840e-06;&lt;br /&gt;
&lt;br /&gt;
  P(0,2) = 1.8102e-01;&lt;br /&gt;
  P(1,2) = -7.2974e-02;&lt;br /&gt;
  P(2,2) = 2.6699e-06;&lt;br /&gt;
&lt;br /&gt;
  P(0,3) = 6.6062e-01;&lt;br /&gt;
  P(1,3) = 5.8402e-01;&lt;br /&gt;
  P(2,3) = 1.5590e-03;&lt;br /&gt;
&lt;br /&gt;
  Point2DVector Points2D = Generate2DPoints();&lt;br /&gt;
  Point3DVector Points3D = Generate3DPoints();&lt;br /&gt;
  &lt;br /&gt;
  for(unsigned int i = 0; i &amp;lt; Points3D.size(); ++i)&lt;br /&gt;
  {&lt;br /&gt;
    Eigen::Vector3d projected = P * Points3D[i].homogeneous();&lt;br /&gt;
    std::cout &amp;lt;&amp;lt; &amp;quot;Projected: &amp;quot; &amp;lt;&amp;lt; projected.hnormalized() &amp;lt;&amp;lt; &amp;quot; actual: &amp;quot; &amp;lt;&amp;lt; Points2D[i] &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
    //std::cout &amp;lt;&amp;lt; &amp;quot;Projected: &amp;quot; &amp;lt;&amp;lt; (P * Points3D[i].homogeneous()).hnormalized() &amp;lt;&amp;lt; &amp;quot; actual: &amp;quot; &amp;lt;&amp;lt; Points2D[i] &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Point2DVector Generate2DPoints()&lt;br /&gt;
{&lt;br /&gt;
  Point2DVector points;&lt;br /&gt;
&lt;br /&gt;
  float x,y;&lt;br /&gt;
&lt;br /&gt;
  x=282;y=274;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  x=397;y=227;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  x=577;y=271;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  x=462;y=318;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  x=270;y=479;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  x=450;y=523;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  x=566;y=475;&lt;br /&gt;
  points.push_back(Eigen::Vector2d(x,y));&lt;br /&gt;
&lt;br /&gt;
  return points;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Point3DVector Generate3DPoints()&lt;br /&gt;
{&lt;br /&gt;
  Point3DVector points;&lt;br /&gt;
&lt;br /&gt;
  float x,y,z;&lt;br /&gt;
&lt;br /&gt;
  x=.5;y=.5;z=-.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  x=.5;y=.5;z=.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  x=-.5;y=.5;z=.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  x=-.5;y=.5;z=-.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  x=.5;y=-.5;z=-.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  x=-.5;y=-.5;z=-.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  x=-.5;y=-.5;z=.5;&lt;br /&gt;
  points.push_back(Eigen::Vector3d(x,y,z));&lt;br /&gt;
&lt;br /&gt;
  return points;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMakeLists.txt==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 2.6)&lt;br /&gt;
&lt;br /&gt;
PROJECT(ProjectPoint)&lt;br /&gt;
&lt;br /&gt;
# must set EIGEN3_INCLUDE_DIR to ~/src/Eigen (or where ever Eigen lives)&lt;br /&gt;
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR} ${CMAKE_MODULE_PATH})&lt;br /&gt;
&lt;br /&gt;
FIND_PACKAGE(Eigen3 REQUIRED)&lt;br /&gt;
INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})&lt;br /&gt;
&lt;br /&gt;
ADD_EXECUTABLE(ProjectPoint ProjectPoint.cpp )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daviddoria</name></author>	</entry>

	</feed>