2 * This program is free software: you can redistribute it and/or modify
3 * it under the terms of the GNU Lesser General Public License as
4 * published by the Free Software Foundation, either version 3 of the
5 * License, or (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 * @author Kacper Pluta (\c kacper.pluta@esiee.fr )
20 * Laboratoire d'Informatique Gaspard-Monge - LIGM, A3SI, France
24 * Implementation of inline methods defined in Knot_4_3.h
26 * This file is part of the DGtal library.
29 ///////////////////////////////////////////////////////////////////////////////
30 // IMPLEMENTATION of inline methods.
31 ///////////////////////////////////////////////////////////////////////////////
33 //////////////////////////////////////////////////////////////////////////////
34 //////////////////////////////////////////////////////////////////////////////
38 ///////////////////////////////////////////////////////////////////////////////
39 // Implementation of inline methods //
43 DGtal::Knot_4_3<T>::Knot_4_3 ( long double scale_1, long double scale_2, long double scale_3 ) : scale {scale_1, scale_2, scale_3}
46 template < typename T>
48 typename DGtal::Knot_4_3<T>::RealPoint DGtal::Knot_4_3<T>::x ( const long double t ) const
50 return RealPoint ( scale[0] * std::cos ( 3. * t ) * ( 3. + std::cos ( 4. * t ) ),
51 scale[1] * std::sin ( 3. * t ) * ( 3. + std::cos ( 4. * t ) ),
52 scale[2] * std::sin( 4. * t )
56 template < typename T>
58 typename DGtal::Knot_4_3<T>::RealPoint DGtal::Knot_4_3<T>::xp ( const long double t ) const
60 return RealPoint ( scale[0] * -1. / 2. * ( std::sin ( t ) + 18. * std::sin ( 3. * t ) + 7. * std::sin ( 7. * t ) ),
61 scale[1] * 1. / 2. * ( -std::cos ( t ) + 18. * std::cos ( 3. * t ) + 7. * std::cos ( 7. * t ) ),
62 scale[2] * 4. * std::cos( 4. * t ) );
66 template < typename T>
68 double DGtal::Knot_4_3<T>::getPeriod()
73 template < typename T>
75 void DGtal::Knot_4_3<T>::selfDisplay ( std::ostream & out ) const
80 ///////////////////////////////////////////////////////////////////////////////
81 // Implementation of inline functions and external operators //
84 * Overloads 'operator<<' for displaying objects of class 'Knot_4_3'.
85 * @param out the output stream where the object is written.
86 * @param object the object of class 'Knot_4_3' to write.
87 * @return the output stream after the writing.
92 DGtal::operator<< ( std::ostream & out, const Knot_4_3<T> & object )
94 object.selfDisplay ( out );
99 ///////////////////////////////////////////////////////////////////////////////