X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Finclude%2Fvmfuncs.h;h=85366a52fc82ea7eb26512654e65d2c7d7ac6218;hb=HEAD;hp=976cd2ce70bb74ec31cfa5b58b29cd5eadf70fd1;hpb=c5feadbb145eecf6d73f793535b7e23eb18db2cb;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/include/vmfuncs.h b/lib/maracasVisuLib/include/vmfuncs.h index 976cd2c..85366a5 100644 --- a/lib/maracasVisuLib/include/vmfuncs.h +++ b/lib/maracasVisuLib/include/vmfuncs.h @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# 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. +# ------------------------------------------------------------------------ */ + //////////////////////////////////////////////////////////////////////////////// // vmfuncs.h // Creation : 02/02/2000 @@ -29,6 +54,8 @@ #include #include "mathdefs.h" +#include + using namespace std; namespace gtm @@ -47,14 +74,14 @@ namespace gtm */ template< class T > inline - void VectorPrint( std::ostream& o, T* v, uint n, bool col ) + void VectorPrint( std::ostream& o, T* v, uint32_t n, bool col ) { - uint i; + uint32_t i; o << n << ": ["; if( col ) o << endl; else o << " "; - for( uint i = 0; i < n; i++ ) { + for( uint32_t i = 0; i < n; i++ ) { o << v[ i ]; if( col ) o << endl; @@ -72,7 +99,7 @@ namespace gtm */ template< class T > inline - T* VectorAllocateMemory( uint n ) + T* VectorAllocateMemory( uint32_t n ) { T* v = new T[ n ]; @@ -103,7 +130,7 @@ namespace gtm */ template< class T > inline - void VectorAssignMemory( T* v, T* v_o, uint n ) + void VectorAssignMemory( T* v, T* v_o, uint32_t n ) { memcpy( v, v_o, sizeof( T ) * n ); @@ -117,7 +144,7 @@ namespace gtm */ template< class T > inline - T* VectorCopyMemory( T* v, uint n ) + T* VectorCopyMemory( T* v, uint32_t n ) { T* n_v = VectorAllocateMemory< T >( n ); VectorAssignMemory< T >( n_v, v, n ); @@ -134,9 +161,9 @@ namespace gtm */ template< class T > inline - void VectorAssignScalar( T* v, T s, uint n ) + void VectorAssignScalar( T* v, T s, uint32_t n ) { - uint i; + uint32_t i; for( i = 0; i < n; v[ i ] = s, i++ ); @@ -153,9 +180,9 @@ namespace gtm */ template< class T > inline - void VectorMatrixCast( T** ma, T* v, uint n, uint m, bool col ) + void VectorMatrixCast( T** ma, T* v, uint32_t n, uint32_t m, bool col ) { - uint i; + uint32_t i; for( i = 0; i < ( ( col )? m: n ); i++ ) ma[ ( col )? n: i ][ ( col )? i: m ] = v[ i ]; @@ -172,9 +199,9 @@ namespace gtm */ template< class T > inline - void VectorAdd( T* v, T* v_l, T* v_r, uint n ) + void VectorAdd( T* v, T* v_l, T* v_r, uint32_t n ) { - uint i; + uint32_t i; for( i = 0; i < n; v[ i ] = v_l[ i ] + v_r[ i ], i++ ); @@ -190,9 +217,9 @@ namespace gtm */ template< class T > inline - void VectorSubtract( T* v, T* v_l, T* v_r, uint n ) + void VectorSubtract( T* v, T* v_l, T* v_r, uint32_t n ) { - uint i; + uint32_t i; for( i = 0; i < n; v[ i ] = v_l[ i ] - v_r[ i ], i++ ); @@ -225,10 +252,10 @@ namespace gtm */ template< class T > inline - T VectorDotProduct( T* v_l, T* v_r, uint n ) + T VectorDotProduct( T* v_l, T* v_r, uint32_t n ) { T ret; - uint i; + uint32_t i; for( i = 0, ret = ( T )0; i < n; ret = ret + ( v_l[ i ] * v_r[ i ] ), i++ ); return( ret ); @@ -245,9 +272,9 @@ namespace gtm */ template< class T > inline - void VectorScalarProduct( T* v, T* v_l, T s, uint n ) + void VectorScalarProduct( T* v, T* v_l, T s, uint32_t n ) { - uint i; + uint32_t i; for( i = 0; i < n; v[ i ] = v_l[ i ] * s, i++ ); @@ -261,7 +288,7 @@ namespace gtm */ template< class T > inline - T VectorNorm( T* v, uint n ) + T VectorNorm( T* v, uint32_t n ) { return( ( T )( sqrt( ( double )( VectorDotProduct< T >( v, v, n ) ) ) ) ); @@ -276,9 +303,9 @@ namespace gtm */ template< class T > inline - void VectorNormalize( T* v, T* v_o, uint n ) + void VectorNormalize( T* v, T* v_o, uint32_t n ) { - uint i; + uint32_t i; T norm = VectorNorm< T >( v_o, n ); norm = ( norm == ( T )0 )? ( T )1: norm; @@ -300,9 +327,9 @@ namespace gtm */ template< class T > inline - void MatrixPrint( std::ostream& o, T** ma, uint n, uint m ) + void MatrixPrint( std::ostream& o, T** ma, uint32_t n, uint32_t m ) { - uint i, j; + uint32_t i, j; o << n << " x " << m << endl; for( j = 0; j < m; j++ ) { @@ -322,9 +349,9 @@ namespace gtm */ template< class T > inline - T** MatrixAllocateMemory( uint n, uint m ) + T** MatrixAllocateMemory( uint32_t n, uint32_t m ) { - uint i; + uint32_t i; T** ma = new T*[ n ]; for( i = 0; i < n; i++ ) { @@ -347,9 +374,9 @@ namespace gtm */ template< class T > inline - void MatrixAssignMemory( T** ma, T** ma_o, uint n, uint m ) + void MatrixAssignMemory( T** ma, T** ma_o, uint32_t n, uint32_t m ) { - uint i; + uint32_t i; for( i = 0; i < n; i++ ) memcpy( ma[ i ], ma_o[ i ], sizeof( T ) * m ); @@ -365,7 +392,7 @@ namespace gtm */ template< class T > inline - T** MatrixCopyMemory( T** ma, uint n, uint m ) + T** MatrixCopyMemory( T** ma, uint32_t n, uint32_t m ) { T** n_ma = MatrixAllocateMemory< T >( n, m ); MatrixAssignMemory< T >( n_ma, ma, n, m ); @@ -383,9 +410,9 @@ namespace gtm */ template< class T > inline - void MatrixAssignScalar( T** ma, T s, uint n, uint m ) + void MatrixAssignScalar( T** ma, T s, uint32_t n, uint32_t m ) { - uint i, j; + uint32_t i, j; for( i = 0; i < n; i++ ) for( j = 0; j < m; j++ ) @@ -404,9 +431,9 @@ namespace gtm */ template< class T > inline - void MatrixVectorCast( T* v, T** ma, uint n, uint m, bool col ) + void MatrixVectorCast( T* v, T** ma, uint32_t n, uint32_t m, bool col ) { - uint i; + uint32_t i; for( i = 0; i < ( ( col )? m: n ); i++ ) v[ i ] = ma[ ( col )? n: i ][ ( col )? i: m ]; @@ -421,9 +448,9 @@ namespace gtm */ template< class T > inline - void MatrixFreeMemory( T** ma, uint n ) + void MatrixFreeMemory( T** ma, uint32_t n ) { - uint i; + uint32_t i; if( ma ) { @@ -446,9 +473,9 @@ namespace gtm */ template< class T > inline - void MatrixAdd( T** ma, T** ma_l, T** ma_r, uint n, uint m ) + void MatrixAdd( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m ) { - uint i, j; + uint32_t i, j; for( i = 0; i < n; i++ ) for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] + ma_r[ i ][ j ], j++ ); @@ -466,9 +493,9 @@ namespace gtm */ template< class T > inline - void MatrixSubtract( T** ma, T** ma_l, T** ma_r, uint n, uint m ) + void MatrixSubtract( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m ) { - uint i, j; + uint32_t i, j; for( i = 0; i < n; i++ ) for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] - ma_r[ i ][ j ], j++ ); @@ -487,7 +514,7 @@ namespace gtm */ template< class T > inline - void MatrixProduct( T** ma, T** ma_l, T** ma_r, uint n, uint m, uint nr ) + void MatrixProduct( T** ma, T** ma_l, T** ma_r, uint32_t n, uint32_t m, uint32_t nr ) { unsigned i, j, k; @@ -512,9 +539,9 @@ namespace gtm */ template< class T > inline - void MatrixScalarProduct( T** ma, T** ma_l, T s, uint n, uint m ) + void MatrixScalarProduct( T** ma, T** ma_l, T s, uint32_t n, uint32_t m ) { - uint i, j; + uint32_t i, j; for( i = 0; i < n; i++ ) for( j = 0; j < m; ma[ i ][ j ] = ma_l[ i ][ j ] * s, j++ ); @@ -533,9 +560,9 @@ namespace gtm */ template< class T > inline - void MatrixCofactor( T** ma, T** ma_o, uint i, uint j, uint n, uint m ) + void MatrixCofactor( T** ma, T** ma_o, uint32_t i, uint32_t j, uint32_t n, uint32_t m ) { - uint k, l; + uint32_t k, l; for( k = 0; k < i; k++ ) { @@ -561,9 +588,9 @@ namespace gtm */ template< class T > inline - T MatrixDeterminant( T** ma, uint n ) + T MatrixDeterminant( T** ma, uint32_t n ) { - uint k; + uint32_t k; T** tmp = NULL; T ret = ( T )0, c; @@ -614,9 +641,9 @@ namespace gtm */ template< class T > inline - void MatrixInverseAdjoint( T** ma, T** ma_o, uint n ) + void MatrixInverseAdjoint( T** ma, T** ma_o, uint32_t n ) { - uint i, j; + uint32_t i, j; T** tmp; T c; @@ -649,9 +676,9 @@ namespace gtm */ template< class T > inline - void MatrixInverseGauss( T** ma, T** ma_o, uint n ) + void MatrixInverseGauss( T** ma, T** ma_o, uint32_t n ) { - uint i, j, k, n2 = 2 * n; + uint32_t i, j, k, n2 = 2 * n; T** ma_a = MatrixAllocateMemory< T >( n2, n ); T a, b; @@ -699,9 +726,9 @@ namespace gtm */ template< class T > inline - void MatrixTranspose( T** ma, T** ma_o, uint n, uint m ) + void MatrixTranspose( T** ma, T** ma_o, uint32_t n, uint32_t m ) { - uint i, j; + uint32_t i, j; for( i = 0; i < m; i++ ) for( j = 0; j < n; ma[ i ][ j ] = ma_o[ j ][ i ], j++ ); @@ -716,9 +743,9 @@ namespace gtm */ template< class T > inline - void MatrixLoadIdentity( T** ma, uint n ) + void MatrixLoadIdentity( T** ma, uint32_t n ) { - uint i, j; + uint32_t i, j; for( i = 0; i < n; i++ ) for( j = 0; j < n; ma[ i ][ j ] = ( i == j )? ( T )1: ( T )0, j++ );