1 ) La clase base de todas las coordenadas
es bicotiCoordinate, con lo que una nueva clase de
coordenada
deberá ser una especialización de ella o de alguna de sus
hijas.
Por ejemplo,
si se desea agregar una especialización 4D, es bastante claro que
el arbol de herencia
debería
quedar como se indica en la figura 1.2.
figura 1.2
2 ) El tipo de las componentes siempre debe ser el template
CoordComponentType, es decir que hay que
dejar la flexibilidad de parametrizar
el tipo de las componentes. Sin embargo pueden agregarse
nuevos templates, como se hace
en bicotiCoordinateVectorialStatic ( se agrega el template dim ).
3 ) Las coordenadas deben tener un conjunto de funciones
y operadores definidos para ser una
coordenada. Lo que las une es
esta interfáz común.
Por lo tanto, si quiero agragar
una especialización bicotiCoordinateND por ejemplo, debo definir
:
class bicotiCoordinateND< class CoordComponentType >
bicotiCoordinateND
( )
Constructor por defecto, sin parámetros.
bicotiCoordinateND
(
const bicotiCoordinateND<CoordComponentType>
&
)
Constructor de copia.
CoordComponentType&
operator ( ) ( int
)
Acceso estandar a las componentes.
unsigned
GetDimension
( )
Devuelve la dimensión.
void
operator = ( const bicotiCoordinateND
<CoordComponentType> &
)
Operador de asignación.
bool
operator == ( const bicotiCoordinateND<CoordComponentType>&
)
Operador booleano de igualdad.
bicotiCoordinateND<CoordComponentType>operator
+ ( double )
void operator +=
( double )
Suma con un doble.
bicotiCoordinateND<CoordComponentType>operator
- ( double )
void operator -=
( double )
Resta con un doble.
bicotiCoordinateND<CoordComponentType>operator
* ( double )
void operator *=
( double )
Producto por un doble.
bicotiCoordinateND<CoordComponentType>operator
/ ( double )
void operator /=
( double )
División por un doble.
bicotiCoordinateND<CoordComponentType>operator
+ (const bicotiCoordinateND<CoordComponentType>&)
void operator +=
( const bicotiCoordinateND<CoordComponentType>
& )
Suma.
bicotiCoordinateND<CoordComponentType>operator
- (const bicotiCoordinateND<CoordComponentType>&
)
void operator -=
( const bicotiCoordinateND<CoordComponentType>
& )
Resta.
bicotiCoordinateND<CoordComponentType>operator
* (const bicotiCoordinateND<CoordComponentType>&)
void operator *=
( const bicotiCoordinateND<CoordComponentType>
& )
Producto.
bicotiCoordinateND<CoordComponentType>operator
/ (const bicotiCoordinateND<CoordComponentType>&)
void operator /=
( const bicotiCoordinateND<CoordComponentType>
& )
División.
REAL ScalarProduct
( const bicotiCoordinateND<CoordComponentType>
& )
Producto escalar.
REAL Norm
( )
Norma.
bicotiCoordinateND<CoordComponentType>operator
^ ( int )
Potencia.
operator bicotiCoordinateND< INTEGER >
( )
Casting de las componentes a entero.
operator bicotiCoordinateND< REAL > ( )
Casting de las componentes a real.