\hypertarget{namespaceICP}{}\section{I\+CP Namespace Reference}
\label{namespaceICP}\index{I\+CP@{I\+CP}}


Namespace for \hyperlink{namespaceICP}{I\+CP}.  


\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename VectorT , typename QuaternionT $>$ }\\void \hyperlink{namespaceICP_a9fd460ef0fd1b316830ad9f7e1c897e6}{icp} (const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&\+\_\+points1, const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&\+\_\+points2, \hyperlink{classVectorT}{VectorT} \&\+\_\+cog1, \hyperlink{classVectorT}{VectorT} \&\+\_\+cog2, double \&\+\_\+scale1, double \&\+\_\+scale2, QuaternionT \&\+\_\+rotation)
\begin{DoxyCompactList}\small\item\em Compute rigid transformation from first point set to second point set. \end{DoxyCompactList}\item 
{\footnotesize template$<$typename VectorT , typename QuaternionT $>$ }\\void \hyperlink{namespaceICP_a63d680707792b751779468222df5c1c1}{icp} (const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&\+\_\+points1, const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&\+\_\+points2, \hyperlink{classVectorT}{VectorT} \&\+\_\+cog1, \hyperlink{classVectorT}{VectorT} \&\+\_\+cog2, QuaternionT \&\+\_\+rotation)
\begin{DoxyCompactList}\small\item\em Compute rigid transformation from first point set to second point set without scaling. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{namespaceICP_ad7b46903eb7a26466b1eed6b8efcff32}\label{namespaceICP_ad7b46903eb7a26466b1eed6b8efcff32}} 
{\footnotesize template$<$typename VectorT $>$ }\\\hyperlink{classVectorT}{VectorT} {\bfseries center\+\_\+of\+\_\+gravity} (const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&\+\_\+points)
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Namespace for \hyperlink{namespaceICP}{I\+CP}. 

\subsection{Function Documentation}
\mbox{\Hypertarget{namespaceICP_a9fd460ef0fd1b316830ad9f7e1c897e6}\label{namespaceICP_a9fd460ef0fd1b316830ad9f7e1c897e6}} 
\index{I\+CP@{I\+CP}!icp@{icp}}
\index{icp@{icp}!I\+CP@{I\+CP}}
\subsubsection{\texorpdfstring{icp()}{icp()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename VectorT , typename QuaternionT $>$ \\
void I\+C\+P\+::icp (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&}]{\+\_\+points1,  }\item[{const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&}]{\+\_\+points2,  }\item[{\hyperlink{classVectorT}{VectorT} \&}]{\+\_\+cog1,  }\item[{\hyperlink{classVectorT}{VectorT} \&}]{\+\_\+cog2,  }\item[{double \&}]{\+\_\+scale1,  }\item[{double \&}]{\+\_\+scale2,  }\item[{QuaternionT \&}]{\+\_\+rotation }\end{DoxyParamCaption})}



Compute rigid transformation from first point set to second point set. 

Compute \hyperlink{namespaceICP}{I\+CP} Parameters ( No iteration is done ) Points are unchanged, only parameters are computed.

To transform pointset 1 into pointset 2 do the folowing\+:~\newline

\begin{DoxyItemize}
\item substract cog1 from pointset 1 ~\newline

\item scale points with 1/scale1 ~\newline

\item rotate with given rotation ~\newline

\item scale with scale2 ~\newline

\item add cog2 ~\newline
 
\begin{DoxyParams}{Parameters}
{\em \+\_\+points1} & first set of points \\
\hline
{\em \+\_\+points2} & second set of points \\
\hline
{\em \+\_\+cog1} & center of gravity first point set \\
\hline
{\em \+\_\+cog2} & center of gravity second point set \\
\hline
{\em \+\_\+scale1} & scaling factor of first point set \\
\hline
{\em \+\_\+scale2} & scaling factor of second point set \\
\hline
{\em \+\_\+rotation} & Rotation between point sets ( rotation(\+\_\+points1) -\/$>$ \+\_\+points2 \\
\hline
\end{DoxyParams}

\end{DoxyItemize}

Definition at line 85 of file I\+C\+P\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{namespaceICP_a63d680707792b751779468222df5c1c1}\label{namespaceICP_a63d680707792b751779468222df5c1c1}} 
\index{I\+CP@{I\+CP}!icp@{icp}}
\index{icp@{icp}!I\+CP@{I\+CP}}
\subsubsection{\texorpdfstring{icp()}{icp()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename VectorT , typename QuaternionT $>$ \\
void I\+C\+P\+::icp (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&}]{\+\_\+points1,  }\item[{const std\+::vector$<$ \hyperlink{classVectorT}{VectorT} $>$ \&}]{\+\_\+points2,  }\item[{\hyperlink{classVectorT}{VectorT} \&}]{\+\_\+cog1,  }\item[{\hyperlink{classVectorT}{VectorT} \&}]{\+\_\+cog2,  }\item[{QuaternionT \&}]{\+\_\+rotation }\end{DoxyParamCaption})}



Compute rigid transformation from first point set to second point set without scaling. 

Compute \hyperlink{namespaceICP}{I\+CP} Parameters ( No iteration is done ) Points are unchanged, only parameters are computed.

To transform pointset 1 into pointset 2 do the folowing\+:~\newline

\begin{DoxyItemize}
\item substract cog1 from pointset 1 ~\newline

\item rotate with given rotation ~\newline

\item add cog2 ~\newline
 
\begin{DoxyParams}{Parameters}
{\em \+\_\+points1} & first set of points \\
\hline
{\em \+\_\+points2} & second set of points \\
\hline
{\em \+\_\+cog1} & center of gravity first point set \\
\hline
{\em \+\_\+cog2} & center of gravity second point set \\
\hline
{\em \+\_\+rotation} & Rotation between point sets ( rotation(\+\_\+points1) -\/$>$ \+\_\+points2 \\
\hline
\end{DoxyParams}

\end{DoxyItemize}

Definition at line 185 of file I\+C\+P\+T\+\_\+impl.\+hh.

