Main Page | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

srm::BaseSRF_3D Class Reference

The BaseSRF_3D abstract class is the base class for the 3D SRFs. More...

#include <BaseSRF.h>

Inheritance diagram for srm::BaseSRF_3D:

Inheritance graph
[legend]
Collaboration diagram for srm::BaseSRF_3D:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual bool isA (SRF_ClassType type) const
 Returns true if this SRF is of the given class type.

virtual Coord3D * createCoordinate3D (SRM_Long_Float coord_comp1, SRM_Long_Float coord_comp2, SRM_Long_Float coord_comp3)=0
 Creates a 3D coordinate object.

virtual void freeCoordinate3D (Coord3D *coord)
 Frees a 3D coordinate object.

virtual void getCoordinate3DValues (const Coord3D &coord, SRM_Long_Float &coord_comp1, SRM_Long_Float &coord_comp2, SRM_Long_Float &coord_comp3) const
 Retrieves the 3D coordinate component values.

virtual SRM_Coordinate_Valid_Region changeCoordinate3DSRF (const Coord3D &src_coord, Coord3D &des_coord)
 Changes a coordinate's values to this SRF.

virtual void changeCoordinate3DArraySRF (Coord3D **src_coord_array, SRM_Integer_Positive *index, Coord3D **des_coord_array, SRM_Coordinate_Valid_Region *region_array)
 Changes an array of coordinate values to this SRF using tranformation object.

virtual SRM_Coordinate_Valid_Region changeCoordinate3DSRFObject (const Coord3D &src_coord, const SRM_ORM_Transformation_3D_Parameters hst, Coord3D &des_coord)
 Changes a coordinate's values to this SRF using tranformation object.

virtual void changeCoordinate3DArraySRFObject (Coord3D **src_coord_array, const SRM_ORM_Transformation_3D_Parameters hst, SRM_Integer_Positive *index, Coord3D **des_coord_array, SRM_Coordinate_Valid_Region *region_array)
 Changes an array of coordinate values to this SRF using tranformation object.

virtual void setValidRegion (const SRM_Integer component, const SRM_Interval_Type type, const SRM_Long_Float lower, const SRM_Long_Float upper)
 Set the Valid Region for this SRF.

virtual void setExtendedValidRegion (const SRM_Integer component, const SRM_Interval_Type type, const SRM_Long_Float extended_lower, const SRM_Long_Float lower, const SRM_Long_Float upper, const SRM_Long_Float extended_upper)
 Set the Extended Valid Region for this SRF.

virtual void getValidRegion (const SRM_Integer component, SRM_Interval_Type &type, SRM_Long_Float &lower, SRM_Long_Float &upper)
 Get the Valid Region for this SRF.

virtual void getExtendedValidRegion (const SRM_Integer component, SRM_Interval_Type &type, SRM_Long_Float &extended_lower, SRM_Long_Float &lower, SRM_Long_Float &upper, SRM_Long_Float &extended_upper)
 Get the Extended Valid Region for this SRF.

virtual Direction * createDirection (const Coord3D &ref_coord, const Vector3 vec)
 Creates a direction object.

virtual Direction * createDirection (const Coord3D &ref_coord, const SRM_Long_Float vectorComp1, const SRM_Long_Float vectorComp2, const SRM_Long_Float vectorComp3)
 Creates a direction object.

virtual Direction * createDirection ()
 Creates a direction object.

virtual void freeDirection (Direction *direction)
 Frees a direction object.

virtual void getDirectionValues (const Direction &direction, Coord3D &ref_coord, Vector3 vec) const
 Retrieves the direction component values.

virtual SRM_Coordinate_Valid_Region changeDirectionSRF (const Direction &src_dir, Direction &des_dir)
 Changes a direction's values to this SRF.

void changeDirectionArraySRF (Direction **src_direction_array, SRM_Integer_Positive *index, Direction **des_direction_array, SRM_Coordinate_Valid_Region *region_array)
 Changes a direction's values to this SRF using tranformation object.

virtual SRM_Coordinate_Valid_Region changeDirectionSRFObject (const Direction &src_dir, const SRM_ORM_Transformation_3D_Parameters hst, Direction &des_dir)
 Changes a direction's values to this SRF using tranformation object.

void changeDirectionArraySRFObject (Direction **src_direction_array, const SRM_ORM_Transformation_3D_Parameters hst, SRM_Integer_Positive *index, Direction **des_direction_array, SRM_Coordinate_Valid_Region *region_array)
 Changes a direction's values to this SRF using tranformation object.

virtual SRM_Coordinate_Valid_Region checkDirection (const Direction &direction)
 Check a direction in this SRF.

virtual Orientation * createOrientation (const Coord3D &ref_coord, const Matrix3x3 mat)
 Creates an orientation object.

virtual Orientation * createOrientation (const Coord3D &ref_coord, const Vector3 vec1, const Vector3 vec2, const Vector3 vec3)
 Creates an orientation object.

virtual Orientation * createOrientation (const Direction &dir1, const Direction &dir2, const Direction &dir3)
 Creates an orientation object.

virtual Orientation * createOrientation ()
 Creates an orientation object.

virtual void freeOrientation (Orientation *orientation)
 Frees an orientation object.

virtual void getOrientationValues (const Orientation &orientation, Coord3D &ref_coord, Matrix3x3 mat) const
 Retrieves the orientation component values.

virtual SRM_Coordinate_Valid_Region checkOrientation (const Orientation &orientation)
 Check an orientation in this SRF.

virtual SRM_Coordinate_Valid_Region changeOrientationSRF (const Orientation &src_orient, Orientation &des_orient)
 Changes an orientation's values to this SRF.

virtual void instanceAbstractSpaceCoordinate (const Coord3D &src_coord, const Orientation &orientation, Coord3D &des_coord)
 Instances a 3D source coordinate and orientation into this SRF.


Static Public Member Functions

SRM_SRFS_Code_Info getNaturalSRFSetMemberCode (const Coord3D &src_coord, SRM_ORM_Code orm_dst, SRM_RT_Code rt_dst, SRM_SRFS_Code tgt_srfs)
 Computes the natural SRF Set member code (region) where the 3D coordinate is located in the target SRF Set.

BaseSRF_3D * getNaturalSRFSetMember (Coord3D &src_coord, SRM_ORM_Code orm_dst, SRM_RT_Code rt_dst, SRM_SRFS_Code tgt_srfs)
 Returns the natural SRF Set member instance that the 3D coordinate is located in the target SRF Set.

SRM_Long_Float calculateEuclideanDistance (const Coord3D &coord1, const Coord3D &coord2)
 Returns the euclidean distance (in metres) between two 3D coordinates.


Protected Member Functions

 BaseSRF_3D (void *impl)
 No stack allocation.

BaseSRF_3D & operator= (const BaseSRF &)
 No copy constructor.

virtual ~BaseSRF_3D ()
 Use release().


Detailed Description

The BaseSRF_3D abstract class is the base class for the 3D SRFs.

SRFs are allocated by the API, and when no longer needed they should be released by calling the release() method.

Author:
Warren Macchi, David Shen
See also:
BaseSRF, BaseSRF_2D

Definition at line 528 of file BaseSRF.h.


Member Function Documentation

SRM_Long_Float srm::BaseSRF_3D::calculateEuclideanDistance (  const Coord3D &  coord1,
const Coord3D &  coord2
)  [static]
 

Returns the euclidean distance (in metres) between two 3D coordinates.

Note:
The input coordinates can be created from any SRF.
Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::changeCoordinate3DArraySRF (  Coord3D **  src_coord_array,
SRM_Integer_Positive *  index,
Coord3D **  des_coord_array,
SRM_Coordinate_Valid_Region *  region_array
)  [virtual]
 

Changes an array of coordinate values to this SRF using tranformation object.

Note:
The destination coordinates must have been created using this SRF.

The source and destination arrays must be of same size.

All the coordinates in an array must be associated with the same SRF.

When an exception is raised, the index parameter is set to the offending coordinate.

Parameters:
src_coord_array in: the array of source coordinates in some other SRF
index in/out: (in) the array length/ (out) the array index of the offending coordinate
des_coord_array out: the array of destination coordinate in this SRF
region_array out: the array of valid regions associated with the destination coordinate
Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::changeCoordinate3DArraySRFObject (  Coord3D **  src_coord_array,
const SRM_ORM_Transformation_3D_Parameters  hst,
SRM_Integer_Positive *  index,
Coord3D **  des_coord_array,
SRM_Coordinate_Valid_Region *  region_array
)  [virtual]
 

Changes an array of coordinate values to this SRF using tranformation object.

Note:
The destination coordinates must have been created using this SRF.

The source and destination arrays must be of same size.

All the coordinates in an array must be associated with the same SRF.

When an exception is raised, the index parameter is set to the offending coordinate.

Parameters:
src_coord_array in: the array of source coordinates in some other SRF
hst in: the ORM 3D transformation
index in/out: (in) the array length/ (out) the array index of the offending coordinate
des_coord_array out: the array of destination coordinate in this SRF
region_array out: the array of valid regions associated with the destination coordinate
Exceptions:
This method throws srm::Exception

virtual SRM_Coordinate_Valid_Region srm::BaseSRF_3D::changeCoordinate3DSRF (  const Coord3D &  src_coord,
Coord3D &  des_coord
)  [virtual]
 

Changes a coordinate's values to this SRF.

Note:
The destination coordinate must have been created using this SRF.
Parameters:
src_coord in: the source coordinate in some other SRF
des_coord in/out: the destination coordinate in this SRF
Returns:
validity code for the destination coordinate
Exceptions:
This method throws srm::Exception

virtual SRM_Coordinate_Valid_Region srm::BaseSRF_3D::changeCoordinate3DSRFObject (  const Coord3D &  src_coord,
const SRM_ORM_Transformation_3D_Parameters  hst,
Coord3D &  des_coord
)  [virtual]
 

Changes a coordinate's values to this SRF using tranformation object.

Note:
The destination coordinate must have been created using this SRF.

The value of omega_1, omega_2 and omega_3 for hst must be within the range ( -2_PI, 2_PI ).

The value of delta_s for hst must be stricly greater than -1.0.

Parameters:
src_coord in: the source coordinate in some other SRF
hst in: the ORM 3D transformation
des_coord out: the destination coordinate in this SRF
Returns:
validity code for the destination coordinate
Exceptions:
This method throws srm::Exception

void srm::BaseSRF_3D::changeDirectionArraySRF (  Direction **  src_direction_array,
SRM_Integer_Positive *  index,
Direction **  des_direction_array,
SRM_Coordinate_Valid_Region *  region_array
) 
 

Changes a direction's values to this SRF using tranformation object.

Note:
The destination directions must have been created using this SRF.

The source and destination arrays must be of same size.

All the directions in an array must be associated with the same SRF.

When an exception is raised, the index parameter is set to the offending direction.

Parameters:
src_direction_array in: the array of source direction in some other SRF
index in/out: (in) the array length/ (out) the array index of the offending direction
des_direction_array out: the array of destination direction in this SRF
region_array out: the array of valid regions associated with the destination direction
Exceptions:
This method throws srm::Exception

void srm::BaseSRF_3D::changeDirectionArraySRFObject (  Direction **  src_direction_array,
const SRM_ORM_Transformation_3D_Parameters  hst,
SRM_Integer_Positive *  index,
Direction **  des_direction_array,
SRM_Coordinate_Valid_Region *  region_array
) 
 

Changes a direction's values to this SRF using tranformation object.

Note:
The destination directions must have been created using this SRF.

The source and destination arrays must be of same size.

All the directions in an array must be associated with the same SRF.

The value of omega_1, omega_2 and omega_3 for hst must be within the range ( -2_PI, 2_PI ).

The value of delta_s for hst must be stricly greater than -1.0.

When an exception is raised, the index parameter is set to the offending direction.

Parameters:
src_direction_array in: the array of source direction in some other SRF
hst in: the ORM 3D transformation
index in/out: (in) the array length/ (out) the array index of the offending direction
des_direction_array out: the array of destination direction in this SRF
region_array out: the array of valid regions associated with the destination direction
Exceptions:
This method throws srm::Exception

virtual SRM_Coordinate_Valid_Region srm::BaseSRF_3D::changeDirectionSRF (  const Direction &  src_dir,
Direction &  des_dir
)  [virtual]
 

Changes a direction's values to this SRF.

Note:
The destination direction must have been created using this SRF.
Parameters:
src_dir in: the source direction in some other SRF
des_dir out: the destination direction in this SRF
Returns:
valid region category for the reference location associated with the destination direction
Exceptions:
This method throws srm::Exception

virtual SRM_Coordinate_Valid_Region srm::BaseSRF_3D::changeDirectionSRFObject (  const Direction &  src_dir,
const SRM_ORM_Transformation_3D_Parameters  hst,
Direction &  des_dir
)  [virtual]
 

Changes a direction's values to this SRF using tranformation object.

Note:
The destination direction must have been created using this SRF.

The value of omega_1, omega_2 and omega_3 for hst must be within the range ( -2_PI, 2_PI ).

The value of delta_s for hst must be stricly greater than -1.0.

Parameters:
src_dir in: the source direction in some other SRF
hst in: the ORM 3D transformation
des_dir out: the destination direction in this SRF
Returns:
valid region category for the reference location associated with the destination direction
Exceptions:
This method throws srm::Exception

virtual SRM_Coordinate_Valid_Region srm::BaseSRF_3D::changeOrientationSRF (  const Orientation &  src_orient,
Orientation &  des_orient
)  [virtual]
 

Changes an orientation's values to this SRF.

Note:
The destination orientation must have been created using this SRF.
Parameters:
src_orient in: the source orientation in some other SRF
des_orient in/out: the destination orientation in this SRF
Returns:
valid region category for the reference location associated with the destination orientation
Exceptions:
This method throws srm::Exception

virtual SRM_Coordinate_Valid_Region srm::BaseSRF_3D::checkOrientation (  const Orientation &  orientation  )  [virtual]
 

Check an orientation in this SRF.

Exceptions:
This method throws srm::Exception

virtual Coord3D* srm::BaseSRF_3D::createCoordinate3D (  SRM_Long_Float  coord_comp1,
SRM_Long_Float  coord_comp2,
SRM_Long_Float  coord_comp3
)  [pure virtual]
 

Creates a 3D coordinate object.

See also:
freeCoordinate3D()
Returns:
a 3D coordinate object
Exceptions:
This method throws srm::Exception

Implemented in srm::SRF_Celestiocentric, srm::SRF_Celestiodetic, srm::SRF_Celestiomagnetic, srm::SRF_EquatorialInertial, srm::SRF_EquidistantCylindrical, srm::SRF_HeliosphericAriesEcliptic, srm::SRF_HeliosphericEarthEcliptic, srm::SRF_HeliosphericEarthEquatorial, srm::SRF_LambertConformalConic, srm::SRF_LocalSpaceRectangular3D, srm::SRF_LocalTangentSpaceAzimuthalSpherical, srm::SRF_LocalTangentSpaceCylindrical, srm::SRF_LocalTangentSpaceEuclidean, srm::SRF_Mercator, srm::SRF_Planetodetic, srm::SRF_PolarStereographic, srm::SRF_SolarEcliptic, srm::SRF_SolarEquatorial, srm::SRF_SolarMagneticEcliptic, srm::SRF_SolarMagneticDipole, srm::SRF_TransverseMercator, srm::SRF_ObliqueMercatorSpherical, and srm::SRF_LococentricEuclidean3D.

virtual Direction* srm::BaseSRF_3D::createDirection (   )  [virtual]
 

Creates a direction object.

Returns:
a direction object
Exceptions:
This method throws srm::Exception
Note:
The returned "default" Direction object is intended to be used as the destination direction for the changeDirectionSRF method. The "default" reference location values cannot be changed except through that method.

virtual Direction* srm::BaseSRF_3D::createDirection (  const Coord3D &  ref_coord,
const SRM_Long_Float  vectorComp1,
const SRM_Long_Float  vectorComp2,
const SRM_Long_Float  vectorComp3
)  [virtual]
 

Creates a direction object.

Returns:
a direction object
Exceptions:
This method throws srm::Exception

virtual Direction* srm::BaseSRF_3D::createDirection (  const Coord3D &  ref_coord,
const Vector3  vec
)  [virtual]
 

Creates a direction object.

Returns:
a direction object
Exceptions:
This method throws srm::Exception

virtual Orientation* srm::BaseSRF_3D::createOrientation (   )  [virtual]
 

Creates an orientation object.

Returns:
an orientation object
Exceptions:
This method throws srm::Exception
Note:
The returned "default" Orientation object is intended to be used as a output argument for the changeOrientationSRF method. The "default" reference location values cannot be changed except through that method.

virtual Orientation* srm::BaseSRF_3D::createOrientation (  const Direction &  dir1,
const Direction &  dir2,
const Direction &  dir3
)  [virtual]
 

Creates an orientation object.

Parameters:
dir1 in: the first component Direction for the orientation matrix
dir2 in: the second component Direction for the orientation matrix
dir3 in: the third component Direction for the orientation matrix
Returns:
an orientation object
Exceptions:
This method throws srm::Exception
Note:
The reference location must be the same for three input Direction objects.

virtual Orientation* srm::BaseSRF_3D::createOrientation (  const Coord3D &  ref_coord,
const Vector3  vec1,
const Vector3  vec2,
const Vector3  vec3
)  [virtual]
 

Creates an orientation object.

Parameters:
ref_coord in: the reference location for the orientation
vec1 in: the first component vector for the orientation matrix
vec2 in: the second component vector for the orientation matrix
vec3 in: the third component vector for the orientation matrix
Returns:
an orientation object
Exceptions:
This method throws srm::Exception

virtual Orientation* srm::BaseSRF_3D::createOrientation (  const Coord3D &  ref_coord,
const Matrix3x3  mat
)  [virtual]
 

Creates an orientation object.

Parameters:
ref_coord in: the reference location for the orientation
mat in: the orientation matrix
Returns:
an orientation object
Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::freeCoordinate3D (  Coord3D *  coord  )  [virtual]
 

Frees a 3D coordinate object.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::freeDirection (  Direction *  direction  )  [virtual]
 

Frees a direction object.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::freeOrientation (  Orientation *  orientation  )  [virtual]
 

Frees an orientation object.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::getCoordinate3DValues (  const Coord3D &  coord,
SRM_Long_Float &  coord_comp1,
SRM_Long_Float &  coord_comp2,
SRM_Long_Float &  coord_comp3
)  const [virtual]
 

Retrieves the 3D coordinate component values.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::getDirectionValues (  const Direction &  direction,
Coord3D &  ref_coord,
Vector3  vec
)  const [virtual]
 

Retrieves the direction component values.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::getExtendedValidRegion (  const SRM_Integer  component,
SRM_Interval_Type &  type,
SRM_Long_Float &  extended_lower,
SRM_Long_Float &  lower,
SRM_Long_Float &  upper,
SRM_Long_Float &  extended_upper
)  [virtual]
 

Get the Extended Valid Region for this SRF.

Note:
Given a coordinate component, the last invocation of this method or the setValidRegion method determines the valid and extended valid intervals of the coordinate component values.
Parameters:
component in: the coordinate component (1, 2, or 3)
type out: the type of interval
extended_lower out: the extended lower value of the interval
lower out: the lower value of the interval
upper out: the upper value of the interval
extended_upper out: the extended_upper value of the interval
Exceptions:
This method throws srm::Exception

BaseSRF_3D* srm::BaseSRF_3D::getNaturalSRFSetMember (  Coord3D &  src_coord,
SRM_ORM_Code  orm_dst,
SRM_RT_Code  rt_dst,
SRM_SRFS_Code  tgt_srfs
)  [static]
 

Returns the natural SRF Set member instance that the 3D coordinate is located in the target SRF Set.

Parameters:
src_coord in : the source 3D coordinate in an SRF
orm_dst in : the ORM for the destination SRF Set
rt_dst in : the RT for the destination SRF Set
tgt_srfs in : the destination SRF Set Code
Returns:
the SRF Set Member instance for the destination SRF Set
Exceptions:
This method throws srm::Exception

SRM_SRFS_Code_Info srm::BaseSRF_3D::getNaturalSRFSetMemberCode (  const Coord3D &  src_coord,
SRM_ORM_Code  orm_dst,
SRM_RT_Code  rt_dst,
SRM_SRFS_Code  tgt_srfs
)  [static]
 

Computes the natural SRF Set member code (region) where the 3D coordinate is located in the target SRF Set.

Parameters:
src_coord in : the source 3D coordinate in an SRF
orm_dst in : the ORM for the destination SRF Set
rt_dst in : the RT for the destination SRF Set
tgt_srfs in : the destination SRF Set Code
Returns:
the SRF Set Member code for the destination SRF Set
Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::getOrientationValues (  const Orientation &  orientation,
Coord3D &  ref_coord,
Matrix3x3  mat
)  const [virtual]
 

Retrieves the orientation component values.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::getValidRegion (  const SRM_Integer  component,
SRM_Interval_Type &  type,
SRM_Long_Float &  lower,
SRM_Long_Float &  upper
)  [virtual]
 

Get the Valid Region for this SRF.

Note:
Given a coordinate component, the last invocation of this method or the setExtendedValidRegion method determines the valid and extended valid intervals of the coordinate component values.
Parameters:
component in: the coordinate component (1, 2, or 3)
type out: the type of interval
lower out: the lower value of the interval
upper out: the upper value of the interval
Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::instanceAbstractSpaceCoordinate (  const Coord3D &  src_coord,
const Orientation &  orientation,
Coord3D &  des_coord
)  [virtual]
 

Instances a 3D source coordinate and orientation into this SRF.

Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::setExtendedValidRegion (  const SRM_Integer  component,
const SRM_Interval_Type  type,
const SRM_Long_Float  extended_lower,
const SRM_Long_Float  lower,
const SRM_Long_Float  upper,
const SRM_Long_Float  extended_upper
)  [virtual]
 

Set the Extended Valid Region for this SRF.

Note:
Given a coordinate component, the last invocation of this method or the setValidRegion method determines the valid and extended valid intervals of the coordinate component values.

Upper or Lower value is ignored if the interval is a semi-interval or unbounded.

The Lower value must be strictly less than the Upper value.

The Extended_Lower value must be strictly greater than the Lower value and the Extended_Upper value must be strictly smaller than the Lower value.

Parameters:
component in: the coordinate component (1, 2, or 3)
type in: the type of interval
extended_lower in: the extended lower value of the interval
lower in: the lower value of the interval
upper in: the upper value of the interval
extended_upper in: the extended_upper value of the interval
Exceptions:
This method throws srm::Exception

virtual void srm::BaseSRF_3D::setValidRegion (  const SRM_Integer  component,
const SRM_Interval_Type  type,
const SRM_Long_Float  lower,
const SRM_Long_Float  upper
)  [virtual]
 

Set the Valid Region for this SRF.

Note:
Given a coordinate component, the last invocation of this method or the setExtendedValidRegion method determines the valid and extended valid intervals of the coordinate component values.

Upper or Lower value is ignored if the interval is a semi-interval or unbounded.

The Lower value must be strictly less than the Upper value.

Parameters:
component in: the coordinate component (1, 2, or 3)
type in: the type of interval
lower in: the lower value of the interval
upper in: the upper value of the interval
Exceptions:
This method throws srm::Exception


The documentation for this class was generated from the following file:
Spatial Reference Model C++ API Version 4.1 - 26 Jun 2006
Copyright © 2006 SEDRIS™ Docs by Doxygen 1.3.2