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 Coord3DcreateCoordinate3D (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 DirectioncreateDirection (const Coord3D &ref_coord, const Vector3 vec)
 Creates a direction object.

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

virtual DirectioncreateDirection ()
 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 OrientationcreateOrientation (const Coord3D &ref_coord, const Matrix3x3 mat)
 Creates an orientation object.

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

virtual OrientationcreateOrientation (const Direction &dir1, const Direction &dir2, const Direction &dir3)
 Creates an orientation object.

virtual OrientationcreateOrientation ()
 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_3DgetNaturalSRFSetMember (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_3Doperator= (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