\hypertarget{classACG_1_1BSplineCurveT}{}\section{A\+CG\+:\+:B\+Spline\+CurveT$<$ PointT $>$ Class Template Reference}
\label{classACG_1_1BSplineCurveT}\index{A\+C\+G\+::\+B\+Spline\+Curve\+T$<$ Point\+T $>$@{A\+C\+G\+::\+B\+Spline\+Curve\+T$<$ Point\+T $>$}}


{\ttfamily \#include $<$AC$>$}

\subsection*{Public Types}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a3015085f47381c6079e999eb941e0f6d}\label{classACG_1_1BSplineCurveT_a3015085f47381c6079e999eb941e0f6d}} 
typedef PointT {\bfseries Point}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ab9436e1392cc3c935ad58a693d861fed}\label{classACG_1_1BSplineCurveT_ab9436e1392cc3c935ad58a693d861fed}} 
typedef Point\+::value\+\_\+type {\bfseries Scalar}
\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a5276a7963260d10e607897b323e05acf}\label{classACG_1_1BSplineCurveT_a5276a7963260d10e607897b323e05acf}} 
\hyperlink{classACG_1_1BSplineCurveT_a5276a7963260d10e607897b323e05acf}{B\+Spline\+CurveT} (unsigned int \+\_\+degree=3)
\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a66718e323b9e44b5084c3ca190099ad0}\label{classACG_1_1BSplineCurveT_a66718e323b9e44b5084c3ca190099ad0}} 
\hyperlink{classACG_1_1BSplineCurveT_a66718e323b9e44b5084c3ca190099ad0}{B\+Spline\+CurveT} (const \hyperlink{classACG_1_1BSplineCurveT}{B\+Spline\+CurveT} \&\+\_\+curve)
\begin{DoxyCompactList}\small\item\em Copy Constructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a7a1bf4640d8ed71efd22f161ae5e71ae}\label{classACG_1_1BSplineCurveT_a7a1bf4640d8ed71efd22f161ae5e71ae}} 
\hyperlink{classACG_1_1BSplineCurveT_a7a1bf4640d8ed71efd22f161ae5e71ae}{$\sim$\+B\+Spline\+CurveT} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ae88ce193d90e6f9ec6c0b201bd15850b}\label{classACG_1_1BSplineCurveT_ae88ce193d90e6f9ec6c0b201bd15850b}} 
std\+::vector$<$ Scalar $>$ \& \hyperlink{classACG_1_1BSplineCurveT_ae88ce193d90e6f9ec6c0b201bd15850b}{get\+\_\+knots} ()
\begin{DoxyCompactList}\small\item\em get the knotvector of the bspline curve \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a56125a41fd49eb3498499d562c80696f}\label{classACG_1_1BSplineCurveT_a56125a41fd49eb3498499d562c80696f}} 
void \hyperlink{classACG_1_1BSplineCurveT_a56125a41fd49eb3498499d562c80696f}{set\+\_\+knots} (std\+::vector$<$ Scalar $>$ \+\_\+knots)
\begin{DoxyCompactList}\small\item\em set the knotvector of the bspline curve \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a4077bb5256b3c0d126d0b905e343b4f1}\label{classACG_1_1BSplineCurveT_a4077bb5256b3c0d126d0b905e343b4f1}} 
\hyperlink{classACG_1_1KnotvectorT}{Knotvector} $\ast$ \hyperlink{classACG_1_1BSplineCurveT_a4077bb5256b3c0d126d0b905e343b4f1}{get\+\_\+knotvector\+\_\+ref} ()
\begin{DoxyCompactList}\small\item\em get a reference to the knotvector \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a26cca569876dc782a8e2cbdc28871531}\label{classACG_1_1BSplineCurveT_a26cca569876dc782a8e2cbdc28871531}} 
void \hyperlink{classACG_1_1BSplineCurveT_a26cca569876dc782a8e2cbdc28871531}{set\+\_\+knotvector\+\_\+type} (Knotvector\+::\+Knotvector\+Type \+\_\+type)
\begin{DoxyCompactList}\small\item\em set type of knotvector \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a9cedab0a5c7cf566b27513d1086f77b1}\label{classACG_1_1BSplineCurveT_a9cedab0a5c7cf566b27513d1086f77b1}} 
Scalar \hyperlink{classACG_1_1BSplineCurveT_a9cedab0a5c7cf566b27513d1086f77b1}{get\+\_\+knot} (int \+\_\+i)
\begin{DoxyCompactList}\small\item\em get knot i \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ac1d4cf2de1de6f0cc2988ed4836ac765}\label{classACG_1_1BSplineCurveT_ac1d4cf2de1de6f0cc2988ed4836ac765}} 
Point \& \hyperlink{classACG_1_1BSplineCurveT_ac1d4cf2de1de6f0cc2988ed4836ac765}{get\+\_\+control\+\_\+point} (int \+\_\+i)
\begin{DoxyCompactList}\small\item\em get control point i \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a3dbc2b3de2aa1b84c1775cc8ccd8f891}\label{classACG_1_1BSplineCurveT_a3dbc2b3de2aa1b84c1775cc8ccd8f891}} 
void \hyperlink{classACG_1_1BSplineCurveT_a3dbc2b3de2aa1b84c1775cc8ccd8f891}{add\+\_\+control\+\_\+point} (const Point \&\+\_\+cp)
\begin{DoxyCompactList}\small\item\em add a control point \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_aad64e278e5f04a9d7a4e0c7100cfdd3b}\label{classACG_1_1BSplineCurveT_aad64e278e5f04a9d7a4e0c7100cfdd3b}} 
void \hyperlink{classACG_1_1BSplineCurveT_aad64e278e5f04a9d7a4e0c7100cfdd3b}{insert\+\_\+control\+\_\+point} (int \+\_\+idx, const Point \&\+\_\+cp)
\begin{DoxyCompactList}\small\item\em insert a control point at given index \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a74f255d05b4121ebb2b6713e7b703df3}\label{classACG_1_1BSplineCurveT_a74f255d05b4121ebb2b6713e7b703df3}} 
void \hyperlink{classACG_1_1BSplineCurveT_a74f255d05b4121ebb2b6713e7b703df3}{delete\+\_\+control\+\_\+point} (int \+\_\+idx)
\begin{DoxyCompactList}\small\item\em delete control point at given index \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ab3def9c46c443bf10e7e1e5f14c62ef1}\label{classACG_1_1BSplineCurveT_ab3def9c46c443bf10e7e1e5f14c62ef1}} 
void \hyperlink{classACG_1_1BSplineCurveT_ab3def9c46c443bf10e7e1e5f14c62ef1}{set\+\_\+control\+\_\+point} (int \+\_\+idx, const Point \&\+\_\+cp)
\begin{DoxyCompactList}\small\item\em reset a control point \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ac15da84f6d200206955450b313a90077}\label{classACG_1_1BSplineCurveT_ac15da84f6d200206955450b313a90077}} 
void \hyperlink{classACG_1_1BSplineCurveT_ac15da84f6d200206955450b313a90077}{set\+\_\+control\+\_\+polygon} (std\+::vector$<$ Point $>$ \&\+\_\+control\+\_\+polygon)
\begin{DoxyCompactList}\small\item\em set whole control polygon \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_af773cbf4d3cd7509a5e0930feea5ce95}\label{classACG_1_1BSplineCurveT_af773cbf4d3cd7509a5e0930feea5ce95}} 
void \hyperlink{classACG_1_1BSplineCurveT_af773cbf4d3cd7509a5e0930feea5ce95}{reset\+\_\+control\+\_\+polygon} ()
\begin{DoxyCompactList}\small\item\em Clears the control polygon. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a467ef1984f4b251ab348f4091b99623d}\label{classACG_1_1BSplineCurveT_a467ef1984f4b251ab348f4091b99623d}} 
void \hyperlink{classACG_1_1BSplineCurveT_a467ef1984f4b251ab348f4091b99623d}{print} () const
\begin{DoxyCompactList}\small\item\em print information string \end{DoxyCompactList}\item 
Point \hyperlink{classACG_1_1BSplineCurveT_abf519780ac56f1c241ec963a2cb6bb46}{curve\+Point} (Scalar \+\_\+u)
\item 
Point \hyperlink{classACG_1_1BSplineCurveT_ac5880caa553e7b5f1c2a97229f0f9ed0}{derivative\+Curve\+Point} (Scalar \+\_\+u, unsigned int \+\_\+der)
\item 
std\+::vector$<$ Point $>$ \hyperlink{classACG_1_1BSplineCurveT_a7b523c6154ecc27283979b542e89ed08}{de\+Boor\+Algorithm} (double \+\_\+u)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ab0b96354dc3059cc38082d0e5cb36426}\label{classACG_1_1BSplineCurveT_ab0b96354dc3059cc38082d0e5cb36426}} 
void \hyperlink{classACG_1_1BSplineCurveT_ab0b96354dc3059cc38082d0e5cb36426}{insert\+Knot} (double \+\_\+u)
\begin{DoxyCompactList}\small\item\em Inserts a new knot at parameter u. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a7106d063439cd87fa7c91cd649854909}\label{classACG_1_1BSplineCurveT_a7106d063439cd87fa7c91cd649854909}} 
unsigned int \hyperlink{classACG_1_1BSplineCurveT_a7106d063439cd87fa7c91cd649854909}{n\+\_\+control\+\_\+points} () const
\begin{DoxyCompactList}\small\item\em Returns the number of control points. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ac95e2c4d0c3f4636d0f9fbb73a02eae2}\label{classACG_1_1BSplineCurveT_ac95e2c4d0c3f4636d0f9fbb73a02eae2}} 
unsigned int \hyperlink{classACG_1_1BSplineCurveT_ac95e2c4d0c3f4636d0f9fbb73a02eae2}{n\+\_\+knots} () const
\begin{DoxyCompactList}\small\item\em Returns the number of knots. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ad06a7c937f818f78c3c89a26c7129c7e}\label{classACG_1_1BSplineCurveT_ad06a7c937f818f78c3c89a26c7129c7e}} 
unsigned int \hyperlink{classACG_1_1BSplineCurveT_ad06a7c937f818f78c3c89a26c7129c7e}{degree} () const
\begin{DoxyCompactList}\small\item\em Returns the spline degree. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a607219e6c78a77df1e259a4289cb9548}\label{classACG_1_1BSplineCurveT_a607219e6c78a77df1e259a4289cb9548}} 
void \hyperlink{classACG_1_1BSplineCurveT_a607219e6c78a77df1e259a4289cb9548}{set\+\_\+degree} (unsigned int \+\_\+degree)
\begin{DoxyCompactList}\small\item\em Sets the spline degree. \end{DoxyCompactList}\item 
\hyperlink{namespaceACG_a72710dc6f55cd56f968f22bca0178e8c}{A\+C\+G\+::\+Vec2i} \hyperlink{classACG_1_1BSplineCurveT_a75eeb9e14eb31ea4a81fdfaa7fb28073}{span} (double \+\_\+t)
\item 
\hyperlink{namespaceACG_a72710dc6f55cd56f968f22bca0178e8c}{A\+C\+G\+::\+Vec2i} \hyperlink{classACG_1_1BSplineCurveT_a752f3ce70682f41baccd8dbb9339a585}{interval} (double \+\_\+t)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ab8bcfeb91f06fdc582a00296771db9f6}\label{classACG_1_1BSplineCurveT_ab8bcfeb91f06fdc582a00296771db9f6}} 
void {\bfseries autocompute\+\_\+knotvector} (bool \+\_\+auto)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ab08923cf506ce4b65e13a13bd81abc80}\label{classACG_1_1BSplineCurveT_ab08923cf506ce4b65e13a13bd81abc80}} 
void {\bfseries fix\+Number\+Of\+Control\+Points} (bool \+\_\+fix)
\item 
bool \hyperlink{classACG_1_1BSplineCurveT_a29b1ce7b72cbf137522222ab27b961ca}{projected} ()
\begin{DoxyCompactList}\small\item\em projected \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a7afc7aef87f5a11b8d4de70d6c096775}\label{classACG_1_1BSplineCurveT_a7afc7aef87f5a11b8d4de70d6c096775}} 
void \hyperlink{classACG_1_1BSplineCurveT_a7afc7aef87f5a11b8d4de70d6c096775}{reverse} ()
\begin{DoxyCompactList}\small\item\em Reverses the curve. \end{DoxyCompactList}\item 
Scalar \hyperlink{classACG_1_1BSplineCurveT_ad723ac106cd1beb2f9f3414d08975a8c}{basis\+Function} (int \+\_\+i, int \+\_\+n, Scalar \+\_\+t)
\item 
Scalar \hyperlink{classACG_1_1BSplineCurveT_a72d3801f04b04fabd962da59c1160851}{derivative\+Basis\+Function} (int \+\_\+i, int \+\_\+n, Scalar \+\_\+t, int \+\_\+der)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a9d4b913726b0788977b57a7ccc6f5fdb}\label{classACG_1_1BSplineCurveT_a9d4b913726b0788977b57a7ccc6f5fdb}} 
Scalar \hyperlink{classACG_1_1BSplineCurveT_a9d4b913726b0788977b57a7ccc6f5fdb}{lower} () const
\begin{DoxyCompactList}\small\item\em Returns the lower parameter. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ab12dd43920cbc8c2c521ddbbb23a9983}\label{classACG_1_1BSplineCurveT_ab12dd43920cbc8c2c521ddbbb23a9983}} 
Scalar \hyperlink{classACG_1_1BSplineCurveT_ab12dd43920cbc8c2c521ddbbb23a9983}{upper} () const
\begin{DoxyCompactList}\small\item\em Returns the upper parameter. \end{DoxyCompactList}\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a1222fe5ca8b5dc317f55c866f2c14722}\label{classACG_1_1BSplineCurveT_a1222fe5ca8b5dc317f55c866f2c14722}} 
void {\bfseries request\+\_\+controlpoint\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a6d6cf6a7a974ce35dd54e2be850e6c6e}\label{classACG_1_1BSplineCurveT_a6d6cf6a7a974ce35dd54e2be850e6c6e}} 
void {\bfseries request\+\_\+edge\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_aa539434fc7a2d4e93fa6dc1b4a23bd39}\label{classACG_1_1BSplineCurveT_aa539434fc7a2d4e93fa6dc1b4a23bd39}} 
void {\bfseries release\+\_\+controlpoint\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a345a381656364c38c49ee42a0bc94481}\label{classACG_1_1BSplineCurveT_a345a381656364c38c49ee42a0bc94481}} 
void {\bfseries release\+\_\+edge\+\_\+selections} ()
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a8fce40cc03ecce354f35df085e50ca02}\label{classACG_1_1BSplineCurveT_a8fce40cc03ecce354f35df085e50ca02}} 
bool {\bfseries controlpoint\+\_\+selections\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_afe42dbfc7e90ad286a0bef464aff0042}\label{classACG_1_1BSplineCurveT_afe42dbfc7e90ad286a0bef464aff0042}} 
bool {\bfseries edge\+\_\+selections\+\_\+available} () const
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a6f404e21981badd81cd324ab262a291d}\label{classACG_1_1BSplineCurveT_a6f404e21981badd81cd324ab262a291d}} 
unsigned char \& {\bfseries controlpoint\+\_\+selection} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a2c426cc80a0cd4e67564a341274d1c22}\label{classACG_1_1BSplineCurveT_a2c426cc80a0cd4e67564a341274d1c22}} 
const unsigned char \& {\bfseries controlpoint\+\_\+selection} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a2ab5d517d42c81255d709d586f94271c}\label{classACG_1_1BSplineCurveT_a2ab5d517d42c81255d709d586f94271c}} 
unsigned char \& {\bfseries edge\+\_\+selection} (unsigned int \+\_\+i)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a7b8f530b6a405a6ec521c687deb56ce3}\label{classACG_1_1BSplineCurveT_a7b8f530b6a405a6ec521c687deb56ce3}} 
const unsigned char \& {\bfseries edge\+\_\+selection} (unsigned int \+\_\+i) const
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a62af3cee82830fa8ae090d50a0955b52}\label{classACG_1_1BSplineCurveT_a62af3cee82830fa8ae090d50a0955b52}} 
void {\bfseries select\+\_\+controlpoint} (unsigned int \+\_\+p\+Idx)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a24073a9d73bd1482a9fa7ff178eb4515}\label{classACG_1_1BSplineCurveT_a24073a9d73bd1482a9fa7ff178eb4515}} 
void {\bfseries deselect\+\_\+controlpoint} (unsigned int \+\_\+p\+Idx)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a71661779fad471ef3ccfa9abdfeb17a4}\label{classACG_1_1BSplineCurveT_a71661779fad471ef3ccfa9abdfeb17a4}} 
bool {\bfseries controlpoint\+\_\+selected} (unsigned int \+\_\+p\+Idx) const
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a3f2b7d7c15cc3c0123c2425b6f765edc}\label{classACG_1_1BSplineCurveT_a3f2b7d7c15cc3c0123c2425b6f765edc}} 
void {\bfseries select\+\_\+edge} (unsigned int \+\_\+p\+Idx)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_acdc8bc45be5eab3a89e1dfc6c512c3f2}\label{classACG_1_1BSplineCurveT_acdc8bc45be5eab3a89e1dfc6c512c3f2}} 
void {\bfseries deselect\+\_\+edge} (unsigned int \+\_\+p\+Idx)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a6a9d14fb6687ada13081b1311776a0da}\label{classACG_1_1BSplineCurveT_a6a9d14fb6687ada13081b1311776a0da}} 
bool {\bfseries edge\+\_\+selected} (unsigned int \+\_\+p\+Idx) const
\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a5bff70d004ebe99727bba55486f114b2}\label{classACG_1_1BSplineCurveT_a5bff70d004ebe99727bba55486f114b2}} 
{\footnotesize template$<$class PropT $>$ }\\void {\bfseries request\+\_\+prop} (unsigned int \&\+\_\+ref\+\_\+count, PropT \&\+\_\+prop)
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a6ce6bc9b101a9b393f8436ac51cd5c37}\label{classACG_1_1BSplineCurveT_a6ce6bc9b101a9b393f8436ac51cd5c37}} 
{\footnotesize template$<$class PropT $>$ }\\void {\bfseries release\+\_\+prop} (unsigned int \&\+\_\+ref\+\_\+count, PropT \&\+\_\+prop)
\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_aa4396a94c2cbf08d0f0f3d55f2ee083b}\label{classACG_1_1BSplineCurveT_aa4396a94c2cbf08d0f0f3d55f2ee083b}} 
std\+::vector$<$ Point $>$ {\bfseries control\+\_\+polygon\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ac5cabb8e6591882bc744495fab8565cc}\label{classACG_1_1BSplineCurveT_ac5cabb8e6591882bc744495fab8565cc}} 
\hyperlink{classACG_1_1KnotvectorT}{Knotvector} {\bfseries knotvector\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a30a867f418d0c1f45d7ab14d8175bbc9}\label{classACG_1_1BSplineCurveT_a30a867f418d0c1f45d7ab14d8175bbc9}} 
unsigned int {\bfseries degree\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_aff6c704c0071c56fe9d1cdfe687253a2}\label{classACG_1_1BSplineCurveT_aff6c704c0071c56fe9d1cdfe687253a2}} 
bool {\bfseries autocompute\+\_\+knotvector\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a8e1ae5c573703cc6adb3d9e7981bb631}\label{classACG_1_1BSplineCurveT_a8e1ae5c573703cc6adb3d9e7981bb631}} 
bool {\bfseries fix\+\_\+number\+\_\+control\+\_\+points\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a2d7998a53ad39266ed8ec853c7c85f45}\label{classACG_1_1BSplineCurveT_a2d7998a53ad39266ed8ec853c7c85f45}} 
std\+::vector$<$ unsigned char $>$ {\bfseries cpselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ae4ce14571f69d2051c36ab1c43952497}\label{classACG_1_1BSplineCurveT_ae4ce14571f69d2051c36ab1c43952497}} 
std\+::vector$<$ unsigned char $>$ {\bfseries eselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a6657c7d0ef42afe88b4e9173b56ddca2}\label{classACG_1_1BSplineCurveT_a6657c7d0ef42afe88b4e9173b56ddca2}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+cpselections\+\_\+}
\item 
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ad3f734d7269420797323c251055c15df}\label{classACG_1_1BSplineCurveT_ad3f734d7269420797323c251055c15df}} 
unsigned int {\bfseries ref\+\_\+count\+\_\+eselections\+\_\+}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$class PointT$>$\newline
class A\+C\+G\+::\+B\+Spline\+Curve\+T$<$ Point\+T $>$}

/.../\+B\+Spline\+CurveT.hh$>$

Brief Description.

A more elaborate description follows. 

Definition at line 82 of file B\+Spline\+Curve\+T.\+hh.



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ad723ac106cd1beb2f9f3414d08975a8c}\label{classACG_1_1BSplineCurveT_ad723ac106cd1beb2f9f3414d08975a8c}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!basis\+Function@{basis\+Function}}
\index{basis\+Function@{basis\+Function}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{basis\+Function()}{basisFunction()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{classACG_1_1BSplineCurveT}{B\+Spline\+CurveT}$<$ PointT $>$\+::Scalar \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::basis\+Function (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i,  }\item[{int}]{\+\_\+n,  }\item[{Scalar}]{\+\_\+t }\end{DoxyParamCaption})}

A Spline Basis Function 
\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & the i\textquotesingle{}th basis function \\
\hline
{\em \+\_\+n} & the spline degree \\
\hline
{\em \+\_\+t} & the parameter Returns N\+\_\+i$^\wedge$p(\+\_\+u) \\
\hline
\end{DoxyParams}


Definition at line 335 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_abf519780ac56f1c241ec963a2cb6bb46}\label{classACG_1_1BSplineCurveT_abf519780ac56f1c241ec963a2cb6bb46}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!curve\+Point@{curve\+Point}}
\index{curve\+Point@{curve\+Point}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{curve\+Point()}{curvePoint()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
PointT \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::curve\+Point (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+u }\end{DoxyParamCaption})}

Evaluates a spline curve at parameter \+\_\+u 
\begin{DoxyParams}{Parameters}
{\em \+\_\+u} & the parameter \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the curve point 
\end{DoxyReturn}


Definition at line 280 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a7b523c6154ecc27283979b542e89ed08}\label{classACG_1_1BSplineCurveT_a7b523c6154ecc27283979b542e89ed08}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!de\+Boor\+Algorithm@{de\+Boor\+Algorithm}}
\index{de\+Boor\+Algorithm@{de\+Boor\+Algorithm}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{de\+Boor\+Algorithm()}{deBoorAlgorithm()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
std\+::vector$<$ PointT $>$ \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::de\+Boor\+Algorithm (\begin{DoxyParamCaption}\item[{double}]{\+\_\+u }\end{DoxyParamCaption})}

Evaluates the curve at parameter u using de\+Boor algorithm. 
\begin{DoxyParams}{Parameters}
{\em \+\_\+u} & the parameter \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
triangular array of control points 
\end{DoxyReturn}


Definition at line 401 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a72d3801f04b04fabd962da59c1160851}\label{classACG_1_1BSplineCurveT_a72d3801f04b04fabd962da59c1160851}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!derivative\+Basis\+Function@{derivative\+Basis\+Function}}
\index{derivative\+Basis\+Function@{derivative\+Basis\+Function}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{derivative\+Basis\+Function()}{derivativeBasisFunction()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{classACG_1_1BSplineCurveT}{B\+Spline\+CurveT}$<$ PointT $>$\+::Scalar \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::derivative\+Basis\+Function (\begin{DoxyParamCaption}\item[{int}]{\+\_\+i,  }\item[{int}]{\+\_\+n,  }\item[{Scalar}]{\+\_\+t,  }\item[{int}]{\+\_\+der }\end{DoxyParamCaption})}

Derivative of a Spline Basis Function 
\begin{DoxyParams}{Parameters}
{\em \+\_\+i} & the i\textquotesingle{}th basis function \\
\hline
{\em \+\_\+n} & the spline degree \\
\hline
{\em \+\_\+t} & the parameter \\
\hline
{\em \+\_\+der} & the \+\_\+der\textquotesingle{}th derivative \\
\hline
\end{DoxyParams}


Definition at line 374 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_ac5880caa553e7b5f1c2a97229f0f9ed0}\label{classACG_1_1BSplineCurveT_ac5880caa553e7b5f1c2a97229f0f9ed0}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!derivative\+Curve\+Point@{derivative\+Curve\+Point}}
\index{derivative\+Curve\+Point@{derivative\+Curve\+Point}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{derivative\+Curve\+Point()}{derivativeCurvePoint()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
PointT \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::derivative\+Curve\+Point (\begin{DoxyParamCaption}\item[{Scalar}]{\+\_\+u,  }\item[{unsigned int}]{\+\_\+der }\end{DoxyParamCaption})}

Returns the \+\_\+derm\textquotesingle{}th derivative of a spline curve 
\begin{DoxyParams}{Parameters}
{\em \+\_\+u} & the parameter \\
\hline
{\em \+\_\+der} & the \+\_\+derm\textquotesingle{}th derivative \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
the derivative 
\end{DoxyReturn}


Definition at line 310 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a752f3ce70682f41baccd8dbb9339a585}\label{classACG_1_1BSplineCurveT_a752f3ce70682f41baccd8dbb9339a585}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!interval@{interval}}
\index{interval@{interval}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{interval()}{interval()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{namespaceACG_a72710dc6f55cd56f968f22bca0178e8c}{A\+C\+G\+::\+Vec2i} \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::interval (\begin{DoxyParamCaption}\item[{double}]{\+\_\+t }\end{DoxyParamCaption})}

returns the index of the knots u and u+1 such that t in \mbox{[}u, u+1) 
\begin{DoxyParams}{Parameters}
{\em \+\_\+t} & the parameter \\
\hline
\end{DoxyParams}


Definition at line 487 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a29b1ce7b72cbf137522222ab27b961ca}\label{classACG_1_1BSplineCurveT_a29b1ce7b72cbf137522222ab27b961ca}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!projected@{projected}}
\index{projected@{projected}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{projected()}{projected()}}
{\footnotesize\ttfamily template$<$class PointT$>$ \\
bool \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::projected (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



projected 

\begin{DoxyRefDesc}{Todo}
\item[\hyperlink{todo__todo000044}{Todo}]This is a hack actually. review \end{DoxyRefDesc}


Definition at line 195 of file B\+Spline\+Curve\+T.\+hh.

\mbox{\Hypertarget{classACG_1_1BSplineCurveT_a75eeb9e14eb31ea4a81fdfaa7fb28073}\label{classACG_1_1BSplineCurveT_a75eeb9e14eb31ea4a81fdfaa7fb28073}} 
\index{A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}!span@{span}}
\index{span@{span}!A\+C\+G\+::\+B\+Spline\+CurveT@{A\+C\+G\+::\+B\+Spline\+CurveT}}
\subsubsection{\texorpdfstring{span()}{span()}}
{\footnotesize\ttfamily template$<$class PointT $>$ \\
\hyperlink{namespaceACG_a72710dc6f55cd56f968f22bca0178e8c}{A\+C\+G\+::\+Vec2i} \hyperlink{classACG_1_1BSplineCurveT}{A\+C\+G\+::\+B\+Spline\+CurveT}$<$ PointT $>$\+::span (\begin{DoxyParamCaption}\item[{double}]{\+\_\+t }\end{DoxyParamCaption})}

returns the basis functions which are unequal to zero at parameter t 
\begin{DoxyParams}{Parameters}
{\em \+\_\+t} & the parameter \\
\hline
\end{DoxyParams}


Definition at line 468 of file B\+Spline\+Curve\+T\+\_\+impl.\+hh.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Type-\/\+B\+Spline/\+Object\+Types/\+B\+Spline\+Curve/B\+Spline\+Curve\+T.\+hh\item 
Type-\/\+B\+Spline/\+Object\+Types/\+B\+Spline\+Curve/B\+Spline\+Curve\+T\+\_\+impl.\+hh\end{DoxyCompactItemize}
