Program: wxMaracas
Module: $RCSfile: curve.cxx,v $
Language: C++
- Date: $Date: 2009/05/14 13:55:07 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2010/04/20 16:11:41 $
+ Version: $Revision: 1.3 $
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 );