+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+# pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+# This software is governed by the CeCILL-B license under French law and
+# abiding by the rules of distribution of free software. You can use,
+# modify and/ or redistribute the software under the terms of the CeCILL-B
+# license as circulated by CEA, CNRS and INRIA at the following URL
+# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+# or in the file LICENSE.txt.
+#
+# As a counterpart to the access to the source code and rights to copy,
+# modify and redistribute granted by the license, users are provided only
+# with a limited warranty and the software's author, the holder of the
+# economic rights, and the successive licensors have only limited
+# liability.
+#
+# The fact that you are presently reading this means that you have had
+# knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
/*=========================================================================
Program: wxMaracas
Module: $RCSfile: curve.cxx,v $
Language: C++
- Date: $Date: 2009/05/14 13:55:07 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2012/11/15 14:15:31 $
+ Version: $Revision: 1.4 $
Copyright: (c) 2002, 2003
License:
}
// -------------------------------------------------------------------------
-uint kCurve::getClosestControlPoint( double* p )
+uint32_t kCurve::getClosestControlPoint( double* p )
{
int res;
// PS -> gslobj_vector vp( p, _dimension ), cp( _dimension ); //PS
void kCurve::getBinormal( double* b, double s )
{
// PS -> //gslobj_vector tg( _dimension ), n( _dimension ); //PS
- marVector tg( _dimension ), n( _dimension );
+ marVector tg( _dimension ), n( _dimension );
double t;
int i;
-
+
calculeSplineArguments( s, i, t );
derivative1( ( double* )tg, i, t );
derivative2( ( double* )n, i, t );
-
+
memcpy( b,
- ( double* )( tg.cross( n ).normalize( ) ),
- _dimension * sizeof( double ) );
+ ( double* )( tg.cross( n ).normalize( ) ),
+ _dimension * sizeof( double ) );
}
// -------------------------------------------------------------------------
memcpy( tmp, cp, _dimension * sizeof( double ) );
_controlPoints.push_back( tmp );
if( sp != NULL && _stateDim > 0 ) {
-
+
double *tmp1 = new double[ _stateDim ];
memcpy( tmp1, sp, _stateDim * sizeof( double ) );
_controlState.push_back( tmp1 );
-
+
} else
_controlState.push_back( NULL );
-
+
if( _controlPoints.size( ) == 1 ) {
_controlT.push_back( 0.0 );
_controlL.push_back( 0.0 );
-
+
} else {
// Here we maintain some extra info about the control points.
_controlT.push_back( 0.0 );
for( int i = 0; i < _controlT.size( ); i++ )
_controlT[ i ] = _controlL[ i ] / len;
-
}// fi
}
int it;
for( it = i; it < _controlT.size( ); it++ ) {
-
v1 = _controlPoints[ it ];
v0 = _controlPoints[ it - 1 ];
len = ( v1 - v0 ).norm2( ) + _controlL[ it - 1 ];
_controlL[ i ] = len;
-
} // rof
for( it = 0; it < _controlT.size( ); it++ )
_controlT[ it ] = _controlL[ it ] / len;
-
}// fi
}
marVector xpr( pr, 3 );
double sina, sinn, cosa, cosn, tha, thn;
double d, e, t, l, tca, tcn, lca, lcn;
- uint icp = getClosestControlPoint( pt );
+ uint32_t icp = getClosestControlPoint( pt );
getControlPoint( icp, ( double* )xpc, NULL );