\hypertarget{group__CGAL__util}{}\section{C\+G\+A\+L Utilities}
\label{group__CGAL__util}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}


C\+G\+A\+L utilities.  


\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classSPL_1_1Arcball}{S\+P\+L\+::\+Arcball$<$ T $>$}
\begin{DoxyCompactList}\small\item\em \hyperlink{classSPL_1_1Arcball}{Arcball}. \end{DoxyCompactList}\item 
struct \hyperlink{structSPL_1_1Rotation__3}{S\+P\+L\+::\+Rotation\+\_\+3$<$ T $>$}
\begin{DoxyCompactList}\small\item\em A 3-\/\+D rotation. \end{DoxyCompactList}\item 
struct \hyperlink{structSPL_1_1Quaternion}{S\+P\+L\+::\+Quaternion$<$ T $>$}
\begin{DoxyCompactList}\small\item\em A quaternion represented in terms of its scalar and vector parts. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$class T $>$ }\\T\+::\+Point\+\_\+3 \hyperlink{group__CGAL__util_gacc6f180500ac35bb2fa79ed4ede59153}{S\+P\+L\+::closest\+Point\+On\+Ray} (const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&ray\+Origin, const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&ray\+Dir, const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&point)
\begin{DoxyCompactList}\small\item\em Compute the closest point on a ray to the specified point. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\std\+::pair$<$ bool, typename T\+::\+Point\+\_\+3 $>$ \hyperlink{group__CGAL__util_ga011a50aba27469ec4787aabf131b4a50}{S\+P\+L\+::find\+Ray\+Sphere\+Intersection} (const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&sphere\+Center, typename T\+::\+F\+T sphere\+Radius, const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&ray\+Origin, const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&ray\+Dir)
\begin{DoxyCompactList}\small\item\em Compute the intersection of a ray and a sphere. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\std\+::pair$<$ bool, typename T\+::\+Point\+\_\+3 $>$ \hyperlink{group__CGAL__util_ga52869c0e34d84d15370ae5754f1ce349}{S\+P\+L\+::find\+Ray\+Plane\+Intersection} (const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&plane\+Point, const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&plane\+Normal, const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&ray\+Origin, const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&ray\+Dir)
\begin{DoxyCompactList}\small\item\em Compute the intersection of a ray and a plane. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\T\+::\+F\+T \hyperlink{group__CGAL__util_ga07bcbe101812e4dbe50476d7e89abf62}{S\+P\+L\+::norm} (const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&v)
\begin{DoxyCompactList}\small\item\em Compute the norm of a vector. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\T\+::\+Vector\+\_\+3 \hyperlink{group__CGAL__util_ga23d8f1c6bba443c103070a2b3bd56511}{S\+P\+L\+::normalize} (const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&v)
\begin{DoxyCompactList}\small\item\em Compute a unit vector. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\T\+::\+F\+T \hyperlink{group__CGAL__util_ga926726cf1d9a5949774cf184c11e9475}{S\+P\+L\+::angle\+Between\+Vectors} (const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&u, const C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&v)
\begin{DoxyCompactList}\small\item\em Compute the angle between two vectors. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\Quaternion$<$ T $>$ \hyperlink{group__CGAL__util_ga32f48b24be03a37dd2bf8cd25a52046f}{S\+P\+L\+::operator$\ast$} (const Quaternion$<$ T $>$ \&q, const Quaternion$<$ T $>$ \&r)
\begin{DoxyCompactList}\small\item\em Compute the product of two quaternions. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\Quaternion$<$ T $>$ \hyperlink{group__CGAL__util_gaad03b015bc0c414fad680595c6825e6e}{S\+P\+L\+::operator/} (const Quaternion$<$ T $>$ \&q, const Quaternion$<$ T $>$ \&r)
\begin{DoxyCompactList}\small\item\em Compute the quotient of two quaternions. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\Quaternion$<$ T $>$ \hyperlink{group__CGAL__util_ga9cbf34a1ae47efc27552e8dd099bc61b}{S\+P\+L\+::rotation\+To\+Quaternion} (const Rotation\+\_\+3$<$ T $>$ \&rot)
\begin{DoxyCompactList}\small\item\em Convert a rotation into its corresponding quaternion. \end{DoxyCompactList}\item 
{\footnotesize template$<$class T $>$ }\\Rotation\+\_\+3$<$ T $>$ \hyperlink{group__CGAL__util_ga674cbb085071599c99b8bdef1ca943ec}{S\+P\+L\+::quaternion\+To\+Rotation} (const Quaternion$<$ T $>$ \&q)
\begin{DoxyCompactList}\small\item\em Convert a unit-\/norm quaternion into its corresponding rotation. \end{DoxyCompactList}\item 
\hyperlink{group__CGAL__util_ga1440ad4b0f6e8eee0a72fa82460efb5b}{S\+P\+L\+::\+Arcball$<$ T $>$\+::\+Arcball} ()
\begin{DoxyCompactList}\small\item\em Create an arcball. \end{DoxyCompactList}\item 
void \hyperlink{group__CGAL__util_gadec9c896b19e43b51223ecebb4cd6b78}{S\+P\+L\+::\+Arcball$<$ T $>$\+::initialize} (double arc\+Ball\+Radius, const Point \&eye\+Pos, const Vector \&eye\+Dir, const Vector \&eye\+Up, const Point \&scene\+Center)
\begin{DoxyCompactList}\small\item\em Initialize the state of an arcball. \end{DoxyCompactList}\item 
void \hyperlink{group__CGAL__util_gac45dc9bb6f739457e3abe0944a8cefad}{S\+P\+L\+::\+Arcball$<$ T $>$\+::set\+Mode} (int mode)
\begin{DoxyCompactList}\small\item\em Set the arcball rotation mode. \end{DoxyCompactList}\item 
void \hyperlink{group__CGAL__util_gaac0d2093eb7c01fb56a2d2d82503d143}{S\+P\+L\+::\+Arcball$<$ T $>$\+::start} (const Point \&pos)
\begin{DoxyCompactList}\small\item\em Set the starting position for arcball movement. \end{DoxyCompactList}\item 
void \hyperlink{group__CGAL__util_ga67558a947ef7b30a0a70cfca1e1c3de5}{S\+P\+L\+::\+Arcball$<$ T $>$\+::move} (const Point \&pos)
\begin{DoxyCompactList}\small\item\em Set the current position for arcball movement. \end{DoxyCompactList}\item 
void \hyperlink{group__CGAL__util_gabdb11894d5b964d3e721ad2bd9b3f761}{S\+P\+L\+::\+Arcball$<$ T $>$\+::clear} ()
\begin{DoxyCompactList}\small\item\em Clear the starting and current positions for the arcball. \end{DoxyCompactList}\item 
Rotation \hyperlink{group__CGAL__util_ga9647c7bb875295418a3c8894f7fac434}{S\+P\+L\+::\+Arcball$<$ T $>$\+::get\+Rotation} () const 
\begin{DoxyCompactList}\small\item\em Get the rotation required to turn the arcball from the starting position to the current position. \end{DoxyCompactList}\item 
static Rotation \hyperlink{group__CGAL__util_gaeaf0d948dd902f398c4da3b4cd4fe313}{S\+P\+L\+::\+Arcball$<$ T $>$\+::combine\+Rotations} (const Rotation \&, const Rotation \&)
\begin{DoxyCompactList}\small\item\em Combine two rotations. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
C\+G\+A\+L utilities. 



\subsection{Function Documentation}
\hypertarget{group__CGAL__util_ga926726cf1d9a5949774cf184c11e9475}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!angle\+Between\+Vectors@{angle\+Between\+Vectors}}
\index{angle\+Between\+Vectors@{angle\+Between\+Vectors}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{angle\+Between\+Vectors}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ T\+::\+F\+T S\+P\+L\+::angle\+Between\+Vectors (
\begin{DoxyParamCaption}
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{u, }
\item[{const C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{v}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{group__CGAL__util_ga926726cf1d9a5949774cf184c11e9475}


Compute the angle between two vectors. 

\hypertarget{group__CGAL__util_ga1440ad4b0f6e8eee0a72fa82460efb5b}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!Arcball@{Arcball}}
\index{Arcball@{Arcball}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{Arcball}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::Arcball (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga1440ad4b0f6e8eee0a72fa82460efb5b}


Create an arcball. 

\hypertarget{group__CGAL__util_gabdb11894d5b964d3e721ad2bd9b3f761}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!clear@{clear}}
\index{clear@{clear}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{clear}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ void {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::clear (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_gabdb11894d5b964d3e721ad2bd9b3f761}


Clear the starting and current positions for the arcball. 

\hypertarget{group__CGAL__util_gacc6f180500ac35bb2fa79ed4ede59153}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!closest\+Point\+On\+Ray@{closest\+Point\+On\+Ray}}
\index{closest\+Point\+On\+Ray@{closest\+Point\+On\+Ray}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{closest\+Point\+On\+Ray}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ T\+::\+Point\+\_\+3 S\+P\+L\+::closest\+Point\+On\+Ray (
\begin{DoxyParamCaption}
\item[{const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&}]{ray\+Origin, }
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{ray\+Dir, }
\item[{const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&}]{point}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_gacc6f180500ac35bb2fa79ed4ede59153}


Compute the closest point on a ray to the specified point. 

\hypertarget{group__CGAL__util_gaeaf0d948dd902f398c4da3b4cd4fe313}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!combine\+Rotations@{combine\+Rotations}}
\index{combine\+Rotations@{combine\+Rotations}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{combine\+Rotations}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T$>$ Arcball$<$ T $>$\+::Rotation {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::combine\+Rotations (
\begin{DoxyParamCaption}
\item[{const {\bf Rotation} \&}]{, }
\item[{const {\bf Rotation} \&}]{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [static]}}\label{group__CGAL__util_gaeaf0d948dd902f398c4da3b4cd4fe313}


Combine two rotations. 

\hypertarget{group__CGAL__util_ga52869c0e34d84d15370ae5754f1ce349}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!find\+Ray\+Plane\+Intersection@{find\+Ray\+Plane\+Intersection}}
\index{find\+Ray\+Plane\+Intersection@{find\+Ray\+Plane\+Intersection}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{find\+Ray\+Plane\+Intersection}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ std\+::pair$<$bool, typename T\+::\+Point\+\_\+3$>$ S\+P\+L\+::find\+Ray\+Plane\+Intersection (
\begin{DoxyParamCaption}
\item[{const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&}]{plane\+Point, }
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{plane\+Normal, }
\item[{const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&}]{ray\+Origin, }
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{ray\+Dir}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga52869c0e34d84d15370ae5754f1ce349}


Compute the intersection of a ray and a plane. 

Compute the intersection of a ray and a plane. The return value is a pair. The first element of the pair is a boolean. This value is true if an intersection point was found, and is false otherwise. The second element in the pair is the intersection point closest to the ray\textquotesingle{}s origin. If no intersection point was found, the ray\textquotesingle{}s origin is returned. \hypertarget{group__CGAL__util_ga011a50aba27469ec4787aabf131b4a50}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!find\+Ray\+Sphere\+Intersection@{find\+Ray\+Sphere\+Intersection}}
\index{find\+Ray\+Sphere\+Intersection@{find\+Ray\+Sphere\+Intersection}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{find\+Ray\+Sphere\+Intersection}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ std\+::pair$<$bool, typename T\+::\+Point\+\_\+3$>$ S\+P\+L\+::find\+Ray\+Sphere\+Intersection (
\begin{DoxyParamCaption}
\item[{const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&}]{sphere\+Center, }
\item[{typename T\+::\+F\+T}]{sphere\+Radius, }
\item[{const typename C\+G\+A\+L\+::\+Point\+\_\+3$<$ T $>$ \&}]{ray\+Origin, }
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{ray\+Dir}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga011a50aba27469ec4787aabf131b4a50}


Compute the intersection of a ray and a sphere. 

Compute the intersection of a ray and a sphere. The return value is a pair. The first element in the pair is a boolean value. This value is true if an intersection point was found, and is false otherwise. The second element in the pair is the intersection point closest to the ray\textquotesingle{}s origin. If no intersection was found, the point on the sphere that is closest to the ray is returned. \hypertarget{group__CGAL__util_ga9647c7bb875295418a3c8894f7fac434}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!get\+Rotation@{get\+Rotation}}
\index{get\+Rotation@{get\+Rotation}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{get\+Rotation}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ Arcball$<$ T $>$\+::Rotation {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::get\+Rotation (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const}\label{group__CGAL__util_ga9647c7bb875295418a3c8894f7fac434}


Get the rotation required to turn the arcball from the starting position to the current position. 

\hypertarget{group__CGAL__util_gadec9c896b19e43b51223ecebb4cd6b78}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!initialize@{initialize}}
\index{initialize@{initialize}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{initialize}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T$>$ void {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::initialize (
\begin{DoxyParamCaption}
\item[{double}]{arc\+Ball\+Radius, }
\item[{const {\bf Point} \&}]{eye\+Pos, }
\item[{const {\bf Vector} \&}]{eye\+Dir, }
\item[{const {\bf Vector} \&}]{eye\+Up, }
\item[{const {\bf Point} \&}]{scene\+Center}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_gadec9c896b19e43b51223ecebb4cd6b78}


Initialize the state of an arcball. 

\hypertarget{group__CGAL__util_ga67558a947ef7b30a0a70cfca1e1c3de5}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!move@{move}}
\index{move@{move}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{move}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T$>$ void {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::move (
\begin{DoxyParamCaption}
\item[{const {\bf Point} \&}]{pos}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga67558a947ef7b30a0a70cfca1e1c3de5}


Set the current position for arcball movement. 

\hypertarget{group__CGAL__util_ga07bcbe101812e4dbe50476d7e89abf62}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!norm@{norm}}
\index{norm@{norm}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{norm}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ T\+::\+F\+T S\+P\+L\+::norm (
\begin{DoxyParamCaption}
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{v}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{group__CGAL__util_ga07bcbe101812e4dbe50476d7e89abf62}


Compute the norm of a vector. 

\hypertarget{group__CGAL__util_ga23d8f1c6bba443c103070a2b3bd56511}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!normalize@{normalize}}
\index{normalize@{normalize}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{normalize}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ T\+::\+Vector\+\_\+3 S\+P\+L\+::normalize (
\begin{DoxyParamCaption}
\item[{const typename C\+G\+A\+L\+::\+Vector\+\_\+3$<$ T $>$ \&}]{v}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [inline]}}\label{group__CGAL__util_ga23d8f1c6bba443c103070a2b3bd56511}


Compute a unit vector. 

Compute a unit vector in the direction of the given vector. If the zero vector is given, the zero vector is returned. \hypertarget{group__CGAL__util_ga32f48b24be03a37dd2bf8cd25a52046f}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!operator$\ast$@{operator$\ast$}}
\index{operator$\ast$@{operator$\ast$}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{operator$\ast$}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ Quaternion$<$T$>$ S\+P\+L\+::operator$\ast$ (
\begin{DoxyParamCaption}
\item[{const {\bf Quaternion}$<$ T $>$ \&}]{q, }
\item[{const {\bf Quaternion}$<$ T $>$ \&}]{r}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga32f48b24be03a37dd2bf8cd25a52046f}


Compute the product of two quaternions. 

\hypertarget{group__CGAL__util_gaad03b015bc0c414fad680595c6825e6e}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!operator/@{operator/}}
\index{operator/@{operator/}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{operator/}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ Quaternion$<$T$>$ S\+P\+L\+::operator/ (
\begin{DoxyParamCaption}
\item[{const {\bf Quaternion}$<$ T $>$ \&}]{q, }
\item[{const {\bf Quaternion}$<$ T $>$ \&}]{r}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_gaad03b015bc0c414fad680595c6825e6e}


Compute the quotient of two quaternions. 

\hypertarget{group__CGAL__util_ga674cbb085071599c99b8bdef1ca943ec}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!quaternion\+To\+Rotation@{quaternion\+To\+Rotation}}
\index{quaternion\+To\+Rotation@{quaternion\+To\+Rotation}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{quaternion\+To\+Rotation}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ Rotation\+\_\+3$<$T$>$ S\+P\+L\+::quaternion\+To\+Rotation (
\begin{DoxyParamCaption}
\item[{const {\bf Quaternion}$<$ T $>$ \&}]{q}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga674cbb085071599c99b8bdef1ca943ec}


Convert a unit-\/norm quaternion into its corresponding rotation. 

\hypertarget{group__CGAL__util_ga9cbf34a1ae47efc27552e8dd099bc61b}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!rotation\+To\+Quaternion@{rotation\+To\+Quaternion}}
\index{rotation\+To\+Quaternion@{rotation\+To\+Quaternion}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{rotation\+To\+Quaternion}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ Quaternion$<$T$>$ S\+P\+L\+::rotation\+To\+Quaternion (
\begin{DoxyParamCaption}
\item[{const {\bf Rotation\+\_\+3}$<$ T $>$ \&}]{rot}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_ga9cbf34a1ae47efc27552e8dd099bc61b}


Convert a rotation into its corresponding quaternion. 

\hypertarget{group__CGAL__util_gac45dc9bb6f739457e3abe0944a8cefad}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!set\+Mode@{set\+Mode}}
\index{set\+Mode@{set\+Mode}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{set\+Mode}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T $>$ void {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::set\+Mode (
\begin{DoxyParamCaption}
\item[{int}]{mode}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_gac45dc9bb6f739457e3abe0944a8cefad}


Set the arcball rotation mode. 

\hypertarget{group__CGAL__util_gaac0d2093eb7c01fb56a2d2d82503d143}{}\index{C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}!start@{start}}
\index{start@{start}!C\+G\+A\+L Utilities@{C\+G\+A\+L Utilities}}
\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}template$<$class T$>$ void {\bf S\+P\+L\+::\+Arcball}$<$ T $>$\+::start (
\begin{DoxyParamCaption}
\item[{const {\bf Point} \&}]{pos}
\end{DoxyParamCaption}
)}\label{group__CGAL__util_gaac0d2093eb7c01fb56a2d2d82503d143}


Set the starting position for arcball movement. 

