Part 4:  C

6 Object class definitions

6.1 Introduction

6.1.1 Topics

Table 6.1 lists the topics in this clause.

Table 6.1 — Topics

6 Object class definitions

6.1 Introduction

6.1.1 Topics

6.1.2 Notational conventions

6.2 SRM abstract object method signatures

6.2.1 Overview

6.2.2 LifeCycleObject

SRM_Create

SRM_Destroy

6.2.3 BaseSRF

SRM_GetCSCode

SRM_GetORMCodes

SRM_GetSRFCodes

6.2.4 BaseSRF2D

SRM_ChangeCoordinate2DArraySRF

SRM_ChangeCoordinate2DArraySRFObject

SRM_ChangeCoordinate2DSRF

SRM_ChangeCoordinate2DSRFObject

SRM_CreateCoordinate2D

SRM_EuclideanDistance2D

SRM_Generating2D

SRM_GetCoordinate2DValues

SRM_InverseGenerating2D

6.2.5 BaseSRF3D

SRM_ChangeCoordinate3DArraySRF

SRM_ChangeCoordinate3DArraySRFObject

SRM_ChangeCoordinate3DSRF

SRM_ChangeCoordinate3DSRFObject

SRM_ChangeDirectionArraySRF

SRM_ChangeDirectionArraySRFObject

SRM_ChangeDirectionSRF

SRM_ChangeDirectionSRFObject

SRM_CreateCoordinate3D

SRM_CreateDirection

SRM_EuclideanDistance3D

SRM_Generating3D

SRM_GetCoordinate3DValues

SRM_GetDirectionValues

SRM_GetExtendedValidRegion

SRM_GetValidRegion

SRM_InverseGenerating3D

SRM_SetExtendedValidRegion

SRM_SetValidRegion

6.2.6 BaseSRFwithTangentPlaneSurface

SRM_AssociateSurfaceCoordinateTPS

SRM_CreateSurfaceCoordinateTPS

SRM_EuclideanDistanceTPS

SRM_GetSurfaceCoordinateValuesTPS

SRM_PromoteSurfaceCoordinateTPS

6.2.7 BaseSRFwithEllipsoidalHeight

SRM_AssociateSurfaceCoordinateEH

SRM_CreateLocalTangentSpaceEuclideanSRF

SRM_CreateSurfaceCoordinateEH

SRM_EuclideanDistanceEH

SRM_GeodesicDistance

SRM_GetSurfaceCoordinateValuesEH

SRM_PromoteSurfaceCoordinateEH

SRM_VerticalOffset

6.2.8 BaseMapProjection

SRM_ConvergenceOfTheMeridian

SRM_GetExtendedValidGeodeticRegion

SRM_GetValidGeodeticRegion

SRM_MapAzimuth

SRM_PointDistortion

SRM_SetExtendedValidGeodeticRegion

SRM_SetValidGeodeticRegion

6.3 SRM concrete object classes

6.3.1 Overview

6.3.2 Celestiocentric

SRM_CC_Create

SRM_CC_Method_List

SRM_Celestiocentric

6.3.3 Celestiodetic

SRM_CD_Create

SRM_CD_Method_List

SRM_Celestiodetic

6.3.4 Celestiomagnetic

SRM_CM_Create

SRM_CM_Method_List

SRM_Celestiomagnetic

6.3.5 Coordinate2D

SRM_Coordinate2D_Method_List

SRM_Coordinate2D

6.3.6 Coordinate3D

SRM_Coordinate3D_Method_List

SRM_Coordinate3D

6.3.7 Direction

SRM_Direction_Method_List

SRM_Direction

6.3.8 EquatorialInertial

SRM_EI_Create

SRM_EI_Method_List

SRM_EI_EquatorialInertial

6.3.9 EquidistantCylindrical

SRM_EC_Create

SRM_EC_GetSRFParameters

SRM_EC_Method_List

SRM_EquidistantCylindrical

6.3.10 HeliosphericAriesEcliptic

SRM_HAEC_Create

SRM_HAEC_Method_List

SRM_HeliosphericAriesEcliptic

6.3.11 HeliosphericEarthEcliptic

SRM_HEEC_Create

SRM_HEEC_Method_List

SRM_HeliosphericEarthEcliptic

6.3.12 HeliosphericEarthEquatorial

SRM_HEEQ_Create

SRM_HEEQ_Method_List

SRM_HeliosphericEarthEquatorial

6.3.13 LambertConformalConic

SRM_LCC_Create

SRM_LCC_GetSRFParameters

SRM_LCC_Method_List

SRM_LambertConformalConic

6.3.14 LocalSpaceAzimuthal

SRM_LSA_Create

SRM_LSA_Method_List

SRM_SRM_LocalSpaceAzimuthal

6.3.15 LocalSpacePolar

SRM_LSP_Create

SRM_LSP_Method_List

SRM_LocalSpacePolar

6.3.16 LocalSpaceRectangular2D

SRM_LSR_2D_Create

SRM_LSR_2D_GetSRFParameters

SRM_LSR_2D_Method_List

SRM_LocalSpaceRectangular2D

6.3.17 LocalSpaceRectangular3D

SRM_LSR_3D_Create

SRM_LSR_3D_GetSRFParameters

SRM_LSR_3D_Method_List

SRM_LocalSpaceRectangular3D

6.3.18 LocalTangentSpaceAzimuthalSpherical

SRM_LTSAS_Create

SRM_LTSAS_GetSRFParameters

SRM_LTSAS_Method_List

SRM_LocalTangentSpaceAzimuthalSpherical

6.3.19 LocalTangentSpaceCylindrical

SRM_LTSC_Create

SRM_LTSC_GetSRFParameters

SRM_LTSC_Method_List

SRM_LocalTangentSpaceCylindrical

6.3.20 LocalTangentSpaceEuclidean

SRM_LTSE_Create

SRM_LTSE_GetSRFParameters

SRM_LTSE_Method_List

SRM_LocalTangentSpaceEuclidean

6.3.21 LococentricEuclidean3D

SRM_LCE_3D_Create

SRM_LCE_3D_GetSRFParameters

SRM_LCE_3D_Method_List

SRM_LococentricEuclidean3D

6.3.22 Mercator

SRM_M_Create

SRM_M_GetSRFParameters

SRM_M_Method_List

SRM_Mercator

6.3.23 ObliqueMercatorSpherical

SRM_OMS_Create

SRM_OMS_GetSRFParameters

SRM_OMS_Method_List

SRM_ObliqueMercatorSpherical

6.3.24 Planetodetic

SRM_PD_Create

SRM_PD_Method_List

SRM_Planetodetic

6.3.25 PolarStereographic

SRM_PS_Create

SRM_PS_GetSRFParameters

SRM_PS_Method_List

SRM_PolarStereographic

6.3.26 Position2D

SRM_Position2D_Method_List

SRM_Position2D

6.3.27 Position3D

SRM_Position3D_Method_List

SRM_Position3D

6.3.28 SolarEcliptic

SRM_SEC_Create

SRM_SEC_Method_List

SRM_SolarEcliptic

6.3.29 SolarEquatorial

SRM_SEQ_Create

SRM_SEQ_Method_List

SRM_SolarEquatorial

6.3.30 SolarMagneticDipole

SRM_SMD_Create

SRM_SMD_Method_List

SRM_SolarMagneticDipole

6.3.31 SolarMagneticEcliptic

SRM_SME_Create

SRM_SME_Method_List

SRM_SolarMagneticEcliptic

6.3.32 SurfaceCoordinate

SRM_SurfaceCoordinate_Method_List

SRM_SurfaceCoordinate

6.3.33 TransverseMercator

SRM_TM_Create

SRM_TM_GetSRFParameters

SRM_TM_Method_List

SRM_TransverseMercator

6.4 Creation function for standard SRFs

6.4.1 Overview

6.4.2 CreateSRFSetMember

SRM_CreateSRFSetMember

6.4.3 CreateStandardSRF

SRM_CreateStandardSRF

6.5 Query functions

6.5.1 Overview

6.5.2 QueryORMSupport

SRM_QueryORMSupport

6.5.3 QuerySRFTSupport

SRM_QuerySRFTSupport

6.1.2 Notational conventions

The binding of each SRM concrete object method signature is bound as depicted in the following template:

SRM_CBindingMethodName

Abstract SRM API object method:  AbstractMethodName

typedef ReturnValueDataType SRM_CBindingMethodName (

 

Parameter0DataType

parameter_0_name,

/* parameter_0_comment */

 

Parameter1DataType

parameter_1_name,

/* parameter_1_comment */

 

• • •

 

 

 

ParameterNDataType

parameter_N_name

/* parameter_N_comment */

};

The SRM C binding method name is formed by a sentinal “SRM_” followed by the name without spaces and with words capitalized. The SRM abstract method name is the name used in ISO/IEC 18026. Parameter 0 of a method is always a pointer to the associated object.

Independent functions (including all Create functions) are bound in a manner similar to that used by object methods except that Parameter 0 is not constrained to be a pointer to the current object. In most cases, the independent functions are producing an object instance.

The return value data type and parameter data types may be found in Clause 5 of this part of ISO/IEC 18042 or may be a standard C data type (e.g., void).

The parameter names are formed by using lower case words separated by underscores.

To the right of each parameter declaration is an optional C comment field. If the comment begins with “OUT”, it means the argument is used as an output parameter; the implementation returns data to the application through this argument. Arguments without “OUT” are input parameters.

Each SRM concrete object class is bound to a data type that is specified as a structure containing a pointer to its state and another pointer to its list of methods as depicted in the following template:

SRM_CBindingObjectClassName

Abstract SRM API object class:  AbstractObjectClassName

typedef struct {

void

*state;

Method_List_Data_Type

*methods;

} SRM_CBindingObjectClassName;

The state is an implementation-dependent private data type that is accessed solely through the methods in the method list.

Each method list for a SRM concrete object class is a data type that is specified as a structure containing a pointer to each method supported by the object class as depicted in the following template:

SRM_CBindingObjectClassNameMethodList

Abstract SRM API object class method list:  AbstractObjectClassName

typedef struct {

Method_0_Data_Type

*method_0_name;

Method_1_Data_Type

*method_1_name;

• • •

 

Method_N_Data_Type

*method_N_name;

} SRM_CBindingObjectClassNameMethodList;

NOTE  Instances of this data type are normally populated by the implementation during object creation.

6.2  SRM abstract object method signatures

6.2.1 Overview

Method signatures for SRM abstract objects are specified here for use when specifying concrete object classes (see 6.3 SRM concrete object classes).

6.2.2 LifeCycleObject

SRM_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_Create (

 

SRM_Object_Reference

new_object

/* OUT create object */

);

SRM_Destroy

Abstract SRM API object method:  Destroy

typedef SRM_Status_Code SRM_Destroy (

 

SRM_Object_Reference

this_object

/* object to destroy*/

);

6.2.3 BaseSRF

SRM_GetCSCode

Abstract SRM API object method:  GetCSCode

typedef SRM_Status_Code SRM_GetCSCode (

 

SRM_Object_Reference

this_object,

 

 

SRM_CS_Code

*cs_code

/* OUT cs code */

);

SRM_GetORMCodes

Abstract SRM API object method:  GetORMCodes

typedef SRM_Status_Code SRM_GetORMCodes (

 

SRM_Object_Reference

this_object,

 

 

SRM_ORM_Code

*orm_code,

/* OUT */

 

SRM_RT_Code

*rt_code

/* OUT */

);

SRM_GetSRFCodes

Abstract SRM API object method:  GetSRFCodes

typedef SRM_Status_Code SRM_GetSRFCodes (

 

SRM_Object_Reference

this_object,

 

 

SRM_SRFT_Code

*srft_code,

/* OUT srf template code */

 

SRM_SRF_Code

*srf_code,

/* OUT srf code */

 

SRM_SRFS_Code_Info

*srfs_code_info

/* OUT srf set code info */

);

6.2.4 BaseSRF2D

SRM_ChangeCoordinate2DArraySRF

Abstract SRM API object method:  ChangeCoordinate2DArraySRF

typedef SRM_Status_Code SRM_ChangeCoordinate2DArraySRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate2D_Array

*source_coordinate_array,

 

 

SRM_Coordinate2D_Array

*target_coordinate_array,

/* OUT */

 

SRM_Integer_Positive

*index

/* OUT */

);

SRM_ChangeCoordinate2DArraySRFObject

Abstract SRM API object method:  ChangeCoordinate2DArraySRFObject

typedef SRM_Status_Code SRM_ChangeCoordinate2DArraySRFObject (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate2D_Array

*source_coordinate_array,

 

const

SRM_ORM_Transformation_2D_Parameters

*h_st,

 

 

SRM_Coordinate2D_Array

*target_coordinate_array,

/* OUT */

 

SRM_Integer_Positive

*index

/* OUT */

);

SRM_ChangeCoordinate2DSRF

Abstract SRM API object method:  ChangeCoordinate2DSRF

typedef SRM_Status_Code SRM_ChangeCoordinate2DSRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate2D

*source_coordinate,

 

 

SRM_Coordinate2D

*target_coordinate

/* OUT */

);

SRM_ChangeCoordinate2DSRFObject

Abstract SRM API object method:  ChangeCoordinate2DSRFObject

typedef SRM_Status_Code SRM_ChangeCoordinate2DSRFObject (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate2D

*source_coordinate,

 

const

SRM_ORM_Transformation_2D_Parameters

*h_st,

 

 

SRM_Coordinate2D

*target_coordinate

/* OUT */

);

SRM_CreateCoordinate2D

Abstract SRM API object method:  CreateCoordinate2D

typedef SRM_Status_Code SRM_CreateCoordinate2D (

 

SRM_Object_Reference

this_object,

 

 

SRM_Long_Float

first_coordinate_component,

 

 

SRM_Long_Float

second_coordinate_component,

 

 

SRM_Coordinate2D

*new_coordinate

/* OUT */

);

SRM_EuclideanDistance2D

Abstract SRM API object method:  EuclideanDistance

typedef SRM_Status_Code SRM_EuclideanDistance2D (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate2D

*source_coordinate,

 

const

SRM_Coordinate2D

*target_coordinate

 

 

SRM_Long_Float

*distance

/* OUT */

);

SRM_Generating2D

Abstract SRM API object method:  Generating2D

typedef SRM_Status_Code SRM_Generating2D (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate2D

*coordinate,

 

 

SRM_Position2D

*position

/* OUT */

);

SRM_GetCoordinate2DValues

Abstract SRM API object method:  GetCoordinate2DValues

typedef SRM_Status_Code SRM_GetCoordinate2DValues (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate2D

*coordinate,

 

 

SRM_Long_Float

*first_coordinate_component,

/* OUT */

 

SRM_Long_Float

*second_coordinate_component

/* OUT */

);

SRM_InverseGenerating2D

Abstract SRM API object method:  InverseGenerating2D

typedef SRM_Status_Code SRM_InverseGenerating2D (

 

SRM_Object_Reference

this_object,

 

const

SRM_Position2D

*position,

 

 

SRM_Coordinate2D

*coordinate

/* OUT */

);

6.2.5 BaseSRF3D

SRM_ChangeCoordinate3DArraySRF

Abstract SRM API object method:  ChangeCoordinate3DArraySRF

typedef SRM_Status_Code SRM_ChangeCoordinate3DArraySRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate3D_Array

*source_coordinate_array,

 

 

SRM_Coordinate3D_Array

*target_coordinate_array,

/* OUT */

 

SRM_Integer_Positive

*index,

/* OUT */

 

SRM_Coordinate_Valid_Region_Array

*region_array

/* OUT */

);

SRM_ChangeCoordinate3DArraySRFObject

Abstract SRM API object method:  ChangeCoordinate3DArraySRFObject

typedef SRM_Status_Code SRM_ChangeCoordinate3DArraySRFObject (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate3D_Array

*source_coordinate_array,

 

const

SRM_ORM_Transformation_3D_Parameters

*h_st,

 

 

SRM_Coordinate3D_Array

*target_coordinate_array,

/* OUT */

 

SRM_Integer_Positive

*index,

/* OUT */

 

SRM_Coordinate_Valid_Region_Array

*region_array

/* OUT */

);

SRM_ChangeCoordinate3DSRF

Abstract SRM API object method:  ChangeCoordinate3DSRF

typedef SRM_Status_Code SRM_ChangeCoordinate3DSRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate3D

*source_coordinate,

 

 

SRM_Coordinate3D

*target_coordinate,

/* OUT */

 

SRM_Coordinate_Valid_Region

*region

/* OUT */

);

SRM_ChangeCoordinate3DSRFObject

Abstract SRM API object method:  ChangeCoordinate3DSRFObject

typedef SRM_Status_Code SRM_ChangeCoordinate3DSRFObject (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Coordinate3D

*source_coordinate,

 

const

SRM_ORM_Transformation_3D_Parameters

*h_st,

 

 

SRM_Coordinate3D

*target_coordinate,

/* OUT */

 

SRM_Coordinate_Valid_Region

*region

/* OUT */

);

SRM_ChangeDirectionArraySRF

Abstract SRM API object method:  ChangeDirectionArraySRF

typedef SRM_Status_Code SRM_ChangeDirectionArraySRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Direction_Array

*source_direction_array,

 

 

SRM_Direction_Array

*target_direction_array,

/* OUT */

 

SRM_Integer_Positive

*index,

/* OUT */

 

SRM_Coordinate_Valid_Region_Array

*ref_coord_region_array

/* OUT */

);

SRM_ChangeDirectionArraySRFObject

Abstract SRM API object method:  ChangeDirectionArraySRFObject

typedef SRM_Status_Code SRM_ChangeDirectionArraySRFObject (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Direction_Array

*source_direction_array,

 

const

SRM_ORM_Transformation_3D_Parameters

*h_st,

 

 

SRM_Direction_Array

*target_direction_array,

/* OUT */

 

SRM_Integer_Positive

*index,

/* OUT */

 

SRM_Coordinate_Valid_Region_Array

*ref_coord_region_array

/* OUT */

);

SRM_ChangeDirectionSRF

Abstract SRM API object method:  ChangeDirectionSRF

typedef SRM_Status_Code SRM_ChangeDirectionSRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Direction

*source_direction,

 

 

SRM_Direction

*target_direction,

/* OUT */

 

SRM_Coordinate_Valid_Region

*ref_coord_region

/* OUT */

);

SRM_ChangeDirectionSRFObject

Abstract SRM API object method:  ChangeDirectionSRFObject

typedef SRM_Status_Code SRM_ChangeDirectionSRFObject (

 

SRM_Object_Reference

this_object,

 

const

SRM_Object_Reference

source_srf,

 

const

SRM_Direction

*source_direction,

 

const

SRM_ORM_Transformation_3D_Parameters

*h_st,

 

 

SRM_Direction

*target_direction,

/* OUT */

 

SRM_Coordinate_Valid_Region

*ref_coord_region

/* OUT */

);

 

SRM_CreateCoordinate3D

Abstract SRM API object method:  CreateCoordinate3D

typedef SRM_Status_Code SRM_CreateCoordinate3D (

 

SRM_Object_Reference

this_object,

 

 

SRM_Long_Float

first_coordinate_component,

 

 

SRM_Long_Float

second_coordinate_component,

 

 

SRM_Long_Float

third_coordinate_component,

 

 

SRM_Coordinate3D

*new_coordinate

/* OUT */

);

SRM_CreateDirection

Abstract SRM API object method:  CreateDirection

typedef SRM_Status_Code SRM_CreateDirection (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate3D

*reference_coordinate,

 

 

SRM_Long_Float

first_direction_component,

 

 

SRM_Long_Float

second_direction_component,

 

 

SRM_Long_Float

third_direction_component,

 

 

SRM_Direction

*new_direction

/* OUT */

);

SRM_EuclideanDistance3D

Abstract SRM API object method:  EuclideanDistance

typedef SRM_Status_Code SRM_EuclideanDistance3D (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate3D

*point1_coordinate,

 

const

SRM_Coordinate3D

*point2_coordinate,

 

 

SRM_Long_Float

*distance

/* OUT */

);

SRM_Generating3D

Abstract SRM API object method:  Generating3D

typedef SRM_Status_Code SRM_Generating3D (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate3D

*coordinate,

 

 

SRM_Position3D

*position

/* OUT */

);

SRM_GetCoordinate3DValues

Abstract SRM API object method:  GetCoordinate3DValues

typedef SRM_Status_Code SRM_GetCoordinate3DValues (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate3D

*coordinate,

 

 

SRM_Long_Float

*first_coordinate_component,

/* OUT */

 

SRM_Long_Float

*second_coordinate_component,

/* OUT */

 

SRM_Long_Float

*third_coordinate_component

/* OUT */

);

SRM_GetDirectionValues

Abstract SRM API object method:  GetDirectionValues

typedef SRM_Status_Code SRM_GetDirectionValues (

 

SRM_Object_Reference

this_object,

 

const

SRM_Direction

*direction,

 

 

SRM_Coordinate3D

*reference_coordinate,

/* OUT */

 

SRM_Long_Float

*first_direction_component,

/* OUT */

 

SRM_Long_Float

*second_direction_component,

/* OUT */

 

SRM_Long_Float

*third_direction_component

/* OUT */

);

SRM_GetExtendedValidRegion

Abstract SRM API object method:  GetExtendedValidRegion

typedef SRM_Status_Code SRM_GetExtendedValidRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

*interval_type,

/* OUT */

 

SRM_Long_Float

*extended_lower_bound,

/* OUT */

 

SRM_Long_Float

*lower_bound,

/* OUT */

 

SRM_Long_Float

*upper_bound,

/* OUT */

 

SRM_Long_Float

*extended_upper_bound

/* OUT */

);

SRM_GetValidRegion

Abstract SRM API object method:  GetValidRegion

typedef SRM_Status_Code SRM_GetValidRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

*interval_type,

/* OUT */

 

SRM_Long_Float

*lower_bound,

/* OUT */

 

SRM_Long_Float

*upper_bound

/* OUT */

);

SRM_InverseGenerating3D

Abstract SRM API object method:  InverseGenerating3D

typedef SRM_Status_Code SRM_InverseGenerating3D (

 

SRM_Object_Reference

this_object,

 

const

SRM_Position3D

*position,

 

 

SRM_Coordinate3D

*coordinate,

/* OUT */

 

SRM_Coordinate_Valid_Region

*region

/* OUT */

);

SRM_SetExtendedValidRegion

Abstract SRM API object method:  SetExtendedValidRegion

typedef SRM_Status_Code SRM_SetExtendedValidRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

interval_type,

 

 

SRM_Long_Float

extended_lower_bound,

 

 

SRM_Long_Float

lower_bound,

 

 

SRM_Long_Float

upper_bound,

 

 

SRM_Long_Float

extended_upper_bound

 

);

SRM_SetValidRegion

Abstract SRM API object method:  SetValidRegion

typedef SRM_Status_Code SRM_SetValidRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identiifer,

 

 

SRM_Interval_Type

interval_type,

 

 

SRM_Long_Float

lower_bound,

 

 

SRM_Long_Float

upper_bound

 

);

6.2.6 BaseSRFwithTangentPlaneSurface

SRM_AssociateSurfaceCoordinateTPS

Abstract SRM API object method:  AssociateSurfaceCoordinate

typedef SRM_Status_Code SRM_AssociateSurfaceCoordinateTPS (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate3D

*coordinate,

 

 

SRM_SurfaceCoordinate

*on_surface_coordinate

/* OUT */

);

SRM_CreateSurfaceCoordinateTPS

Abstract SRM API object method:  CreateSurfaceCoordinate

typedef SRM_Status_Code SRM_CreateSurfaceCoordinateTPS (

 

SRM_Object_Reference

this_object,

 

 

SRM_Long_Float

first_coordinate_component,

 

 

SRM_Long_Float

second_coordinate_component,

 

 

SRM_SurfaceCoordinate

*new_coordinate

/* OUT */

);

SRM_EuclideanDistanceTPS

Abstract SRM API object method:  EuclideanDistance

typedef SRM_Status_Code SRM_EuclideanDistanceTPS (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*point1_coordinate,

 

const

SRM_SurfaceCoordinate

*point2_coordinate,

 

 

SRM_Long_Float

*distance

/* OUT */

);

SRM_GetSurfaceCoordinateValuesTPS

Abstract SRM API object method:  GetSurfaceCoordinateValues

typedef SRM_Status_Code SRM_GetSurfaceCoordinateValuesTPS (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*coordinate,

 

 

SRM_Long_Float

*first_coordinate_component,

/* OUT */

 

SRM_Long_Float

*second_coordinate_component

/* OUT */

);

SRM_PromoteSurfaceCoordinateTPS

Abstract SRM API object method:  PromoteSurfaceCoordinate

typedef SRM_Status_Code SRM_PromoteSurfaceCoordinateTPS (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*surface_coordinate,

 

 

SRM_Coordinate3D

*coordinate

/* OUT */

);

6.2.7 BaseSRFwithEllipsoidalHeight

SRM_AssociateSurfaceCoordinateEH

Abstract SRM API object method:  AssociateSurfaceCoordinate

typedef SRM_Status_Code SRM_AssociateSurfaceCoordinateEH (

 

SRM_Object_Reference

this_object,

 

const

SRM_Coordinate3D

*coordinate,

 

 

SRM_SurfaceCoordinate

*on_surface_coordinate

/* OUT */

);

SRM_CreateLocalTangentSpaceEuclideanSRF

Abstract SRM API object method:  CreateLocalTangentSpaceEuclideanSRF

typedef SRM_Status_Code SRM_CreateLocalTangentSpaceEuclideanSRF (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*surface_coordinate,

 

 

SRM_Long_Float

azimuth,

 

 

SRM_Long_Float

false_x_origin,

 

 

SRM_Long_Float

false_y_origin,

 

 

SRM_Long_Float

offset_height,

 

 

SRM_LocalTangentSpaceEuclidean

*local_tangent_Euclidean_srf

/* OUT */

);

SRM_CreateSurfaceCoordinateEH

Abstract SRM API object method:  CreateSurfaceCoordinate

typedef SRM_Status_Code SRM_CreateSurfaceCoordinateEH (

 

SRM_Object_Reference

this_object,

 

 

SRM_Long_Float

first_coordinate_component,

 

 

SRM_Long_Float

second_coordinate_component,

 

 

SRM_SurfaceCoordinate

*new_coordinate

/* OUT */

);

SRM_EuclideanDistanceEH

Abstract SRM API object method:  EuclideanDistance

typedef SRM_Status_Code SRM_EuclideanDistanceEH (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*point1_coordinate,

 

const

SRM_SurfaceCoordinate

*point2_coordinate,

 

 

SRM_Long_Float

*distance

/* OUT */

);

SRM_GeodesicDistance

Abstract SRM API object method:  GeodesicDistance

typedef SRM_Status_Code SRM_GeodesicDistance (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*point1_coordinate,

 

const

SRM_SurfaceCoordinate

*point2_coordinate,

 

 

SRM_Long_Float

*distance

/* OUT */

);

SRM_GetSurfaceCoordinateValuesEH

Abstract SRM API object method:  GetSurfaceCoordinateValues

typedef SRM_Status_Code SRM_GetSurfaceCoordinateValuesEH (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*coordinate,

 

 

SRM_Long_Float

*first_coordinate_component,

/* OUT */

 

SRM_Long_Float

*second_coordinate_component

/* OUT */

);

SRM_PromoteSurfaceCoordinateEH

Abstract SRM API object method:  PromoteSurfaceCoordinate

typedef SRM_Status_Code SRM_PromoteSurfaceCoordinateEH (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*surface_coordinate,

 

 

SRM_Coordinate3D

*coordinate

/* OUT */

);

SRM_VerticalOffset

Abstract SRM API object method:  VerticalOffset

typedef SRM_Status_Code SRM_VerticalOffset (

 

SRM_Object_Reference

this_object,

 

 

SRM_DSS_Code

dss_code,

 

const

SRM_SurfaceCoordinate

*surface_coordinate,

 

 

SRM_Long_Float

*separation

/* OUT */

);

6.2.8 BaseSRFMapProjection

SRM_ConvergenceOfTheMeridian

Abstract SRM API object method:  ConvergenceOfTheMeridian

typedef SRM_Status_Code SRM_ConvergenceOfTheMeridian (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*surface_coordinate,

 

 

SRM_Long_Float

*gamma

/* OUT */

);

SRM_GetExtendedValidGeodeticRegion

Abstract SRM API object method:  GetExtendedValidGeodeticRegion

typedef SRM_Status_Code SRM_GetExtendedValidGeodeticRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

*interval_type,

/* OUT */

 

SRM_Long_Float

*extended_lower_bound,

/* OUT */

 

SRM_Long_Float

*lower_bound,

/* OUT */

 

SRM_Long_Float

*upper_bound,

/* OUT */

 

SRM_Long_Float

*extended_upper_bound

/* OUT */

);

SRM_GetValidGeodeticRegion

Abstract SRM API object method:  GetValidGeodeticRegion

typedef SRM_Status_Code SRM_GetValidGeodeticRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

*interval_type,

/* OUT */

 

SRM_Long_Float

*lower_bound,

/* OUT */

 

SRM_Long_Float

*upper_bound

/* OUT */

);

SRM_MapAzimuth

Abstract SRM API object method:  MapAzimuth

typedef SRM_Status_Code SRM_MapAzimuth (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*point1_coordinate,

 

const

SRM_SurfaceCoordinate

*point2_coordinate,

 

 

SRM_Long_Float

*azimuth

/* OUT */

);

SRM_PointDistortion

Abstract SRM API object method:  PointDistortion

typedef SRM_Status_Code SRM_PointDistortion (

 

SRM_Object_Reference

this_object,

 

const

SRM_SurfaceCoordinate

*surface_coordinate,

 

 

SRM_Long_Float

*distortion

/* OUT */

);

SRM_SetExtendedValidGeodeticRegion

Abstract SRM API object method:  SetExtendedValidGeodeticRegion

typedef SRM_Status_Code SRM_SetExtendedValidGeodeticRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

interval_type,

 

 

SRM_Long_Float

extended_lower_bound,

 

 

SRM_Long_Float

lower_bound,

 

 

SRM_Long_Float

upper_bound,

 

 

SRM_Long_Float

extended_upper_bound

 

);

SRM_SetValidGeodeticRegion

Abstract SRM API object method:  SetValidGeodeticRegion

typedef SRM_Status_Code SRM_SetValidGeodeticRegion (

 

SRM_Object_Reference

this_object,

 

 

SRM_Integer

component_identifier,

 

 

SRM_Interval_Type

interval_type,

 

 

SRM_Long_Float

lower_bound,

 

 

SRM_Long_Float

upper_bound

 

);

6.3 SRM concrete object classes

6.3.1 Overview

Concrete SRM objects are defined by a combination of methods and functions defined for the abstract object classes as specified in 6.2 SRM Abstract object method signatures and new methods and data types specified for each concrete object class. Objects may be created by using the Create function that accompanies each object class. The Create function accepts parameters that specify the characteristics of an object and returns a pointer to the object that is created. Object classes not specifying a Create function use that specified in 6.2.2 LifeCycleObject.

6.3.2 Celestiocentric

The following function specifies the binding of the factory for the Celestiocentric object class:

SRM_CC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_CC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Celestiocentric

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the Celestiocentric object class:

SRM_CC_Method_List

Abstract SRM API object class:  Celestiocentric

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_CC_Method_List;

The following record type specifies the binding of the Celestocentric object class:

SRM_Celestiocentric

Abstract SRM API object class:  Celestiocentric

typedef struct {

void

*state;

SRM_CC_Method_List

*methods;

} SRM_Celestiocentric;

6.3.3 Celestiodetic

The following function specifies the binding of the factory for the Celestiodetric object class:

SRM_CD_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_CD_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Celestiodetic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the Celestiodetic object class:

SRM_CD_Method_List

Abstract SRM API object class:  Celestiodetic

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_CD_Method_List;

The following record type specifies the binding of the Celestiodetic object class:

SRM_Celestiodetic

Abstract SRM API object class:  Celestiodetic

typedef struct {

void

*state;

SRM_CD_Method_List

*methods;

} SRM_Celestiodetic;

6.3.4 Celestiomagnetic

The following function specifies the binding of the factory for the Celestiomagnetic object class:

SRM_CM_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_CM_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Celestiomagnetic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the Celestiomagnetic object class:

SRM_CM_Method_List

Abstract SRM API object class:  Celestiomagnetic

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_CM_Method_List;

The following record type specifies the binding of the Celestiomagnetic object class:

SRM_Celestiomagnetic

Abstract SRM API object class:  Celestiomagnetic

typedef struct {

void

*state;

SRM_CM_Method_List

*methods;

} SRM_Celestiomagnetic;

6.3.5 Coordinate2D

The following data type is used to specify the methods of the Coordinate2D object class:

SRM_Coordinate2D_Method_List

Abstract SRM API object class:  Coordinate2D

typedef struct {

SRM_Destroy

*Destroy;

} SRM_Coordinate2D_Method_List;

SRM_Coordinate2D

Abstract SRM API object class:  Coordinate2D

typedef struct {

void

*state;

SRM_Coordinate2D_Method_List

*methods;

} SRM_Coordinate2D;

6.3.6 Coordinate3D

The following data type is used to specify the methods of the Coordinate3D object class:

SRM_Coordinate3D_Method_List

Abstract SRM API object class:  Coordinate3D

typedef struct {

SRM_Destroy

*Destroy;

} SRM_Coordinate3D_Method_List;

SRM_Coordinate3D

Abstract SRM API object class:  Coordinate3D

typedef struct {

void

*state;

SRM_Coordinate3D_Method_List

*methods;

} SRM_Coordinate3D;

6.3.7 Direction

The following data type is used to specify the methods of the Direction object class:

SRM_Direction_Method_List

Abstract SRM API object class:  Direction

typedef struct {

SRM_Destroy

*Destroy;

} SRM_Direction_Method_List;

SRM_Direction

Abstract SRM API object class:  Direction

typedef struct {

void

*state;

SRM_Direction_Method_List

*methods;

} SRM_Direction;

6.3.8 EquatorialInertial

The following function specifies the binding of the factory for the EquatorialInertial object class:

SRM_EI_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_EI_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_EquatorialInertial

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the EquatorialInertial object class:

SRM_EI_Method_List

Abstract SRM API object class:  EquatorialInertial

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_EI_Method_List;

The following record type specifies the binding of the EquatorialInertial object class:

SRM_EquatorialInertial

Abstract SRM API object class:  EquatorialInertial

typedef struct {

void

*state;

SRM_EI_Method_List

*methods;

} SRM_EquatorialInertial;

6.3.9 EquidistantCylindrical

The following function specifies the binding of the factory for the EquidistantCylindrical object class:

SRM_EC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_EC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_EC_Parameters

*parameters,

 

 

SRM_EquidistantCylindrical

*new_srf

/* OUT */

);

The following method is used to specify the binding of the EquidistantCylindrical object class:

SRM_EC_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_EC_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_EC_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the EquidistantCylindrical object class:

SRM_EC_Method_List

Abstract SRM API object class:  EquidistantCylindrical

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_ConvergenceOfTheMeridian

*ConvergenceOfTheMeridian;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidGeodeticRegion

*GetExtendedValidGeodeticRegion;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_EC_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidGeodeticRegion

*GetValidGeodeticRegion;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_MapAzimuth

*MapAzimuth;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_PointDistortion

*PointDistortion;

SRM_SetExtendedValidGeodeticRegion

*SetExtendedValidGeodeticRegion;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidGeodeticRegion

*SetValidGeodeticRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_EC_Method_List;

The following record type specifies the binding of the EquidistantCylindrical object class:

SRM_EquidistantCylindrical

Abstract SRM API object class:  EquidistantCylindrical

typedef struct {

void

*state;

SRM_EC_Method_List

*methods;

} SRM_EquidistantCylindrical;

6.3.10 HeliosphericAriesEcliptic

The following function specifies the binding of the factory for the HeliosphericAriesEcliptic object class:

SRM_HAEC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_HAEC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_HeliosphericAriesEcliptic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the HeliosphericAriesEcliptic object class:

SRM_HAEC_Method_List

Abstract SRM API object class:  HeliosphericAriesEcliptic

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_HAEC_Method_List;

The following record type specifies the binding of the HeliosphericAriesEcliptic object class:

SRM_HeliosphericAriesEcliptic

Abstract SRM API object class:  HeliosphericAriesEcliptic

typedef struct {

void

*state;

SRM_HAEC_Method_List

*methods;

} SRM_HeliosphericAriesEcliptic;

6.3.11 HeliosphericEarthEcliptic

The following function specifies the binding of the factory for the HeliosphericEarthEcliptic object class:

SRM_HEEC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_HEEC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_HeliosphericEarthEcliptic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the HeliosphericEarthEcliptic object class:

SRM_HEEC_Method_List

Abstract SRM API object class:  HeliosphericEarthEcliptic

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_HEEC_Method_List;

The following record type specifies the binding of the HeliosphericEarthEcliptic object class:

SRM_HeliosphericEarthEcliptic

Abstract SRM API object class:  HeliosphericEarthEcliptic

typedef struct {

void

*state;

SRM_HEEC_Method_List

*methods;

} SRM_HeliosphericEarthEcliptic;

6.3.12 HeliosphericEarthEquatorial

The following function specifies the binding of the factory for the HeliosphericEarthEquatorial object class:

SRM_HEEQ_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_HEEQ_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_HeliosphericEarthEquatorial

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the HeliosphericEarthEquatorial object class:

SRM_HEEQ_Method_List

Abstract SRM API object class:  HeliosphericEarthEquatorial

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_HEEQ_Method_List;

The following record type specifies the binding of the HeliosphericEarthEquatorial object class:

SRM_HeliosphericEarthEquatorial

Abstract SRM API object class:  HeliosphericEarthEquatorial

typedef struct {

void

*state;

SRM_HEEQ_Method_List

*methods;

} SRM_HeliosphericEarthEquatorial;

6.3.13 LambertConformalConic

The following function specifies the binding of the factory for the LambertConformalConic object class:

SRM_LCC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LCC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_LCC_Parameters

*parameters

/* OUT */

 

SRM_LambertConformalConic

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LambertConformalConic object class:

SRM_LCC_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LCC_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_LCC_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LambertConformalConic object class:

SRM_LCC_Method_List

Abstract SRM API object class:  LambertConformalConic

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_ConvergenceOfTheMeridian

*ConvergenceOfTheMeridian;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidGeodeticRegion

*GetExtendedValidGeodeticRegion;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LCC_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidGeodeticRegion

*GetValidGeodeticRegion;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_MapAzimuth

*MapAzimuth;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_PointDistortion

*PointDistortion;

SRM_SetExtendedValidGeodeticRegion

*SetExtendedValidGeodeticRegion;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidGeodeticRegion

*SetValidGeodeticRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_LCC_Method_List;

The following record type specifies the binding of the LambertConformalConic object class:

SRM_LambertConformalConic

Abstract SRM API object class:  LambertConformalConic

typedef struct {

void

*state;

SRM_LCC_Method_List

*methods;

} SRM_LambertConformalConic;

6.3.14 LocalSpaceAzimuthal

The following function specifies the binding of the factory for the LocalSpaceAzimuthal object class:

SRM_LSA_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LSA_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_LocalSpaceAzimuthal

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the LocalSpaceAzimuthal object class:

SRM_LSA_Method_List

Abstract SRM API object class:  LocalSpaceAzimuthal

typedef struct {

SRM_ChangeCoordinate2DArraySRF

*ChangeCoordinate2DArraySRF;

SRM_ChangeCoordinate2DArraySRFObject

*ChangeCoordinate2DArraySRFObject;

SRM_ChangeCoordinate2DSRF

*ChangeCoordinate2DSRF;

SRM_ChangeCoordinate2DSRFObject

*ChangeCoordinate2DSRFObject;

SRM_CreateCoordinate2D

*CreateCoordinate2D;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance2D

*EuclideanDistance2D;

SRM_Generating2D

*Generating2D;

SRM_GetCoordinate2DValues

*GetCoordinate2DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_InverseGenerating2D

*InverseGenerating2D;

} SRM_LSA_Method_List;

The following record type specifies the binding of the LocalSpaceAzimuthal object class:

SRM_LocalSpaceAzimuthal

Abstract SRM API object class:  LocalSpaceAzimuthal

typedef struct {

void

*state;

SRM_LSA_Method_List

*methods;

} SRM_LocalSpaceAzimuthal;

6.3.15 LocalSpacePolar

The following function specifies the binding of the factory for the LocalSpacePolar object class:

SRM_LSP_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LSP_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_LocalSpacePolar

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the LocalSpacePolar object class:

SRM_LSP_Method_List

Abstract SRM API object class:  LocalSpacePolar

typedef struct {

SRM_ChangeCoordinate2DArraySRF

*ChangeCoordinate2DArraySRF;

SRM_ChangeCoordinate2DArraySRFObject

*ChangeCoordinate2DArraySRFObject;

SRM_ChangeCoordinate2DSRF

*ChangeCoordinate2DSRF;

SRM_ChangeCoordinate2DSRFObject

*ChangeCoordinate2DSRFObject;

SRM_CreateCoordinate2D

*CreateCoordinate2D;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance2D

*EuclideanDistance2D;

SRM_Generating2D

*Generating2D;

SRM_GetCoordinate2DValues

*GetCoordinate2DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_InverseGenerating2D

*InverseGenerating2D;

} SRM_LSP_Method_List;

The following record type specifies the binding of the LocalSpacePolar object class:

SRM_LocalSpacePolar

Abstract SRM API object class:  LocalSpacePolar

typedef struct {

void

*state;

SRM_LSP_Method_List

*methods;

} SRM_LocalSpacePolar;

6.3.16 LocalSpaceRectangular2D

The following methods are used to specify the binding of the LocalSpaceRectangular2D object class:

SRM_LSR_2D_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LSR_2D_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_LSR_2D_Parameters

*parameters,

 

 

SRM_LocalSpaceRectangular2D

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LocalSpaceRectangular object class:

SRM_LSR_2D_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LSR_2D_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_LSR_2D_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LocalSpaceRectangular2D object class:

SRM_LSR_2D_Method_List

Abstract SRM API object class:  LocalSpaceRectangular2D

typedef struct {

SRM_ChangeCoordinate2DArraySRF

*ChangeCoordinate2DArraySRF;

SRM_ChangeCoordinate2DArraySRFObject

*ChangeCoordinate2DArraySRFObject;

SRM_ChangeCoordinate2DSRF

*ChangeCoordinate2DSRF;

SRM_ChangeCoordinate2DSRFObject

*ChangeCoordinate2DSRFObject;

SRM_CreateCoordinate2D

*CreateCoordinate2D;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance2D

*EuclideanDistance2D;

SRM_Generating2D

*Generating2D;

SRM_GetCoordinate2DValues

*GetCoordinate2DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LSR_2D_GetSRFParameters

*GetSRFParameters;

SRM_InverseGenerating2D

*InverseGenerating2D;

} SRM_LSR_2D_Method_List;

The following record type specifies the binding of the LocalSpaceRectangular2D object class:

SRM_LocalSpaceRectangular2D

Abstract SRM API object class:  LocalSpaceRectangular2D

typedef struct {

void

*state;

SRM_LSR_2D_Method_List

*methods;

} SRM_LocalSpaceRectangular2D;

6.3.17 LocalSpaceRectangular3D

The following function specifies the binding of the factory for the LocalSpaceRectangular3D object class:

SRM_LSR_3D_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LSR_3D_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_LSR_3D_Parameters

*parameters,

 

 

SRM_LocalSpaceRectangular3D

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LocalSpaceRectangular3D object class:

SRM_LSR_3D_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LSR_3D_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_LSR_3D_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LocalSpaceRectangular3D object class:

SRM_LSR_3D_Method_List

Abstract SRM API object class:  LocalSpaceRectangular3D

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LSR_3D_GetSRFParameters

*GetSRFParameters;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_LSR3D_Method_List;

The following record type specifies the binding of the LocalSpaceRectangular3D object class:

SRM_LocalSpaceRectangular3D

Abstract SRM API object class:  LocalSpaceRectangular3D

typedef struct {

void

*state;

SRM_LSR_3D_Method_List

*methods;

} SRM_LocalSpaceRectangular3D;

6.3.18 LocalTangentSpaceAzimuthalSpherical

The following function specifies the binding of the factory for the LocalTangentSpaceAzimuthalSpherical object class:

SRM_LTSAS_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LTSAS_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_Local_Tangenet_Parameters

*parameters,

 

 

SRM_LocalTangentSpaceAzimuthalSpherical

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LocalTangentSpaceAzimuthalSpherical object class:

SRM_LTSAS_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LTSAS_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_Local_Tangent_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LocalTangentSpaceAzimuthalSpherical object class:

SRM_LTSAS_Method_List

Abstract SRM API object class:  LocalTangentSpaceAzimuthalSpherical

typedef struct {

SRM_AssociateSurfaceCoordinateTPS

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateSurfaceCoordinateTPS

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceTPS

*EuclideanDistanceTPS;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LTSAS_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesTPS

*GetSurfaceCoordinateValues;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_PromoteSurfaceCoordinateTPS

*PromoteSurfaceCoordinate;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_LTSAS_Method_List;

The following record type specifies the binding of the LocalTangentSpaceAzimuthalSpherical object class:

SRM_LocalTangentSpaceAzimuthalSpherical

Abstract SRM API object class:  LocalTangentSpaceAzimuthalSpherical

typedef struct {

void

*state;

SRM_LTSAS_Method_List

*methods;

} SRM_LocalTangentSpaceAzimuthalSpherical;

6.3.19 LocalTangentSpaceCylindrical

The following function specifies the binding of the factory for the LocalTangentSpaceCylindrical object class:

SRM_LTSC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LTSC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_Local_Tangent_Parameters

*parameters,

 

 

SRM_LocalTangentSpaceCylindrical

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LocalTangentSpaceCylindrical object class:

SRM_LTSC_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LTSC_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_Local_Tangent_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LocalTangentSpaceCylindrical object class:

SRM_LTSC_Method_List

Abstract SRM API object class:  LocalTangentSpaceCylindrical

typedef struct {

SRM_AssociateSurfaceCoordinateTPS

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateSurfaceCoordinateTPS

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceTPS

*EuclideanDistanceTPS;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LTSC_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesTPS

*GetSurfaceCoordinateValues;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_PromoteSurfaceCoordinateTPS

*PromoteSurfaceCoordinate;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_LTSC_Method_List;

The following record type specifies the binding of the LocalTangentSpaceCylindrical object class:

SRM_LocalTangentSpaceCylindrical

Abstract SRM API object class:  LocalTangentSpaceCylindrical

typedef struct {

void

*state;

SRM_LTSC_Method_List

*methods;

} SRM_LocalTangentSpaceCylindrical;

6.3.20 LocalTangentSpaceEuclidean

The following function specifies the binding of the factory for the LocalTangentSpaceEuclidean object class:

SRM_LTSE_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LTSE_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_LTSE_Parameters

*parameters,

 

 

SRM_LocalTangentSpaceEuclidean

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LocalTangentSpaceEuclidean object class:

SRM_LTSE_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LTSE_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_LTSE_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LocalTangentSpaceEuclidean object class:

SRM_LTSE_Method_List

Abstract SRM API object class:  LocalTangentSpaceEuclidean

typedef struct {

SRM_AssociateSurfaceCoordinateTPS

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateSurfaceCoordinateTPS

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceTPS

*EuclideanDistanceTPS;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LTSE_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesTPS

*GetSurfaceCoordinateValues;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_PromoteSurfaceCoordinateTPS

*PromoteSurfaceCoordinate;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_LTSE_Method_List;

The following record type specifies the binding of the LocalTangentSpaceEuclidean object class:

SRM_LocalTangentSpaceEuclidean

Abstract SRM API object class:  LocalTangentSpaceEuclidean

typedef struct {

void

*state;

SRM_LTSE_Method_List

*methods;

} SRM_LocalTangentSpaceEuclidean;

6.3.21 LococentricEuclidean3D

The following function specifies the binding of the factory for the LococentricEuclidean3D object class:

SRM_LCE_3D_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_LCE_3D_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_LCE_3D_Parameters

*parameters,

 

 

SRM_LocalSpaceRectangular3D

*new_srf

/* OUT */

);

The following method is used to specify the binding of the LococentricEuclidean3D object class:

SRM_LCE_3D_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_LCE_3D_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_LCE_3D_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the LococentricEuclidean3D object class:

SRM_LCE_3D_Method_List

Abstract SRM API object class:  LococentricEuclidean3D

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_LCE_3D_GetSRFParameters

*GetSRFParameters;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_LCE_3D_Method_List;

The following record type specifies the binding of the LococentricEuclidean3D object class:

SRM_LococentricEuclidean3D

Abstract SRM API object class:  LococentricEuclidean3D

typedef struct {

void

*state;

SRM_LCE_3D_Method_List

*methods;

} SRM_LococentricEuclidean3D;

6.3.22 Mercator

The following function specifies the binding of the factory for the Mercator object class:

SRM_M_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_M_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_M_Parameters

*parameters,

 

 

SRM_Mercator

*new_srf

/* OUT */

);

The following method is used to specify the binding of the Mercator object class:

SRM_M_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_M_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_M_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the Mercator object class:

SRM_M_Method_List

Abstract SRM API object class:  Mercator

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_ConvergenceOfTheMeridian

*ConvergenceOfTheMeridian;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidGeodeticRegion

*GetExtendedValidGeodeticRegion;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_M_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidGeodeticRegion

*GetValidGeodeticRegion;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_MapAzimuth

*MapAzimuth;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_PointDistortion

*PointDistortion;

SRM_SetExtendedValidGeodeticRegion

*SetExtendedValidGeodeticRegion;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidGeodeticRegion

*SetValidGeodeticRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_M_Method_List;

The following record type specifies the binding of the Mercator object class:

SRM_Mercator

Abstract SRM API object class:  Mercator

typedef struct {

void

*state;

SRM_M_Method_List

*methods;

} SRM_Mercator;

6.3.23 ObliqueMercatorSpherical

The following function specifies the binding of the factory for the ObliqueMercatorSpherical object class:

SRM_OMS_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_OMS_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_Oblique_Mercator_Parameters

*parameters,

 

 

SRM_ObliqueMercatorSpherical

*new_srf

/* OUT */

);

The following method is used to specify the binding of the ObliqueMercatorSpherical object class:

SRM_OMS_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_OMS_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_Oblique_Mercator_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the ObliqueMercatorSpherical object class:

SRM_OMS_Method_List

Abstract SRM API object class:  ObliqueMercatorSpherical

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_ConvergenceOfTheMeridian

*ConvergenceOfTheMeridian;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidGeodeticRegion

*GetExtendedValidGeodeticRegion;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_OMS_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidGeodeticRegion

*GetValidGeodeticRegion;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_MapAzimuth

*MapAzimuth;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_PointDistortion

*PointDistortion;

SRM_SetExtendedValidGeodeticRegion

*SetExtendedValidGeodeticRegion;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidGeodeticRegion

*SetValidGeodeticRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_OMS_Method_List;

The following record type specifies the binding of the ObliqueMercatorSpherical object class:

SRM_ObliqueMercatorSpherical

Abstract SRM API object class:  ObliqueMercatorSpherical

typedef struct {

void

*state;

SRM_OMS_Method_List

*methods;

} SRM_ObliqueMercatorSpherical;

6.3.24 Planetodetic

The following function specifies the binding of the factory for the Planetodetic object class:

SRM_PD_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_PD_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Planetodetic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the Planetodetic object class:

SRM_PD_Method_List

Abstract SRM API object class:  Planetodetic

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_PD_Method_List;

The following record type specifies the binding of the Planetodetic object class:

SRM_Planetodetic

Abstract SRM API object class:  Planetodetic

typedef struct {

void

*state;

SRM_PD_Method_List

*methods;

} SRM_Planetodetic;

6.3.25 PolarStereographic

The following function specifies the binding of the factory for the PolarStereographic object class:

SRM_PS_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_PS_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_PS_Parameters

*parameters,

 

 

SRM_PolarStereographic

*new_srf

/* OUT */

);

The following method is used to specify the binding of the PolarStereographic object class:

SRM_PS_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_PS_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_PS_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the PolarStereographic object class:

SRM_PS_Method_List

Abstract SRM API object class:  PolarStereographic

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_ConvergenceOfTheMeridian

*ConvergenceOfTheMeridian;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidGeodeticRegion

*GetExtendedValidGeodeticRegion;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_PS_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidGeodeticRegion

*GetValidGeodeticRegion;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_MapAzimuth

*MapAzimuth;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_PointDistortion

*PointDistortion;

SRM_SetExtendedValidGeodeticRegion

*SetExtendedValidGeodeticRegion;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidGeodeticRegion

*SetValidGeodeticRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_PS_Method_List;

The following record type specifies the binding of the PolarStereographic object class:

SRM_PolarStereographic

Abstract SRM API object class:  PolarStereographic

typedef struct {

void

*state;

SRM_PS_Method_List

*methods;

} SRM_PolarStereographic;

6.3.26 Position2D

The following data type is used to specify the methods of the Position2D object class:

SRM_Position2D_Method_List

Abstract SRM API object class:  Position2D

typedef struct {

SRM_Destroy

*Destroy;

} SRM_Position2D_Method_List;

SRM_Position2D

Abstract SRM API object class:  Position2D

typedef struct {

void

*state;

SRM_Position2D_Method_List

*methods;

} SRM_Position2D;

6.3.27 Position3D

The following data type is used to specify the methods of the Position3D object class:

SRM_Position3D_Method_List

Abstract SRM API object class:  Position3D

typedef struct {

SRM_Destroy

*Destroy;

} SRM_Position3D_Method_List;

SRM_Position3D

Abstract SRM API object class:  Position3D

typedef struct {

void

*state;

SRM_Position3D_Method_List

*methods;

} SRM_Position3D;

6.3.28 SolarEcliptic

The following function specifies the binding of the factory for the SolarEcliptic object class:

SRM_SEC_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_SEC_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_SolarEcliptic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the SolarEcliptic object class:

SRM_SEC_Method_List

Abstract SRM API object class:  SolarEcliptic

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_SEC_Method_List;

The following record type specifies the binding of the SolarEcliptic object class:

SRM_SolarEcliptic

Abstract SRM API object class:  SolarEcliptic

typedef struct {

void

*state;

SRM_SEC_Method_List

*methods;

} SRM_SolarEcliptic;

6.3.29 SolarEquatorial

The following function specifies the binding of the factory for the SolarEquatorial object class:

SRM_SEQ_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_SEQ_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_SolarEquatorial

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the SolarEquatorial object class:

SRM_SEQ_Method_List

Abstract SRM API object class:  SolarEquatorial

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_SEQ_Method_List;

The following record type specifies the binding of the SolarEquatorial object class:

SRM_SolarEquatorial

Abstract SRM API object class:  SolarEquatorial

typedef struct {

void

*state;

SRM_SEQ_Method_List

*methods;

} SRM_SolarEquatorial;

6.3.30 SolarMagneticDipole

The following function specifies the binding of the factory for the SolarMagneticDipole object class:

SRM_SMD_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_SMD_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_SolarMagneticDipole

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the SolarMagneticDipole object class:

SRM_SMD_Method_List

Abstract SRM API object class:  SolarMagneticDipole

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_SMD_Method_List;

The following record type specifies the binding of the SolarMagneticDipole object class:

SRM_SolarMagneticDipole

Abstract SRM API object class:  SolarMagneticDipole

typedef struct {

void

*state;

SRM_SMD_Method_List

*methods;

} SRM_SolarMagneticDipole;

6.3.31 SolarMagneticEcliptic

The following function specifies the binding of the factory for the SolarMagneticEcliptic object class:

SRM_SME_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_SME_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_SolarMagneticEcliptic

*new_srf

/* OUT */

);

The following data type is used to specify the methods of the SolarMagneticEcliptic object class:

SRM_SME_Method_List

Abstract SRM API object class:  SolarMagneticEcliptic

typedef struct {

SRM_ChangeCoordinate3DArraySRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_Generating3D

*Generating3D;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidRegion

*SetValidRegion;

} SRM_SME_Method_List;

The following record type specifies the binding of the SolarMagneticEcliptic object class:

SRM_SolarMagneticEcliptic

Abstract SRM API object class:  SolarMagneticEcliptic

typedef struct {

void

*state;

SRM_SME_Method_List

*methods;

} SRM_SolarMagneticEcliptic;

6.3.32 SurfaceCoordinate

The following data type is used to specify the methods of the SurfaceCoordinate object class:

SRM_SurfaceCoordinate_Method_List

Abstract SRM API object class:  SurfaceCoordinate

typedef struct {

SRM_Destroy

*Destroy;

} SRM_SurfaceCoordinate_Method_List;

SRM_SurfaceCoordinate

Abstract SRM API object class:  SurfaceCoordinate

typedef struct {

void

*state;

SRM_SurfaceCoordinate_Method_List

*methods;

} SRM_SurfaceCoordinate;

6.3.33 TransverseMercator

The following function specifies the binding of the factory for the TransverseMercator object class:

SRM_TM_Create

Abstract SRM API function:  Create

SRM_Status_Code SRM_TM_Create (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

const

SRM_TM_Parameters

*parameters,

 

 

SRM_TransverseMercator

*new_srf

/* OUT */

);

The following method is used to specify the binding of the TransverseMercator object class:

SRM_TM_GetSRFParameters

Abstract SRM API object method:  GetSRFParameters

typedef SRM_Status_Code SRM_TM_GetSRFParameters (

 

SRM_Object_Reference

this_object,

 

 

SRM_TM_Parameters

*parameters

/* OUT */

);

The following data type is used to specify the methods of the TransverseMercator object class:

SRM_TM_Method_List

Abstract SRM API object class:  TransverseMercator

typedef struct {

SRM_AssociateSurfaceCoordinateEH

*AssociateSurfaceCoordinate;

SRM_ChangeCoordinateArray3DSRF

*ChangeCoordinate3DArraySRF;

SRM_ChangeCoordinate3DArraySRFObject

*ChangeCoordinate3DArraySRFObject;

SRM_ChangeCoordinate3DSRF

*ChangeCoordinate3DSRF;

SRM_ChangeCoordinate3DSRFObject

*ChangeCoordinate3DSRFObject;

SRM_ChangeDirectionArraySRF

*ChangeDirectionArraySRF;

SRM_ChangeDirectionArraySRFObject

*ChangeDirectionArraySRFObject;

SRM_ChangeDirectionSRF

*ChangeDirectionSRF;

SRM_ChangeDirectionSRFObject

*ChangeDirectionSRFObject;

SRM_ConvergenceOfTheMeridian

*ConvergenceOfTheMeridian;

SRM_CreateCoordinate3D

*CreateCoordinate3D;

SRM_CreateDirection

*CreateDirection;

SRM_CreateLocalTangentSpaceEuclideanSRF

*CreateLocalTangentSpaceEuclideanSRF;

SRM_CreateSurfaceCoordinateEH

*CreateSurfaceCoordinate;

SRM_Destroy

*Destroy;

SRM_EuclideanDistance3D

*EuclideanDistance3D;

SRM_EuclideanDistanceEH

*EuclideanDistanceEH;

SRM_Generating3D

*Generating3D;

SRM_GeodesicDistance

*GeodesicDistance;

SRM_GetCoordinate3DValues

*GetCoordinate3DValues;

SRM_GetCSCode

*GetCSCode;

SRM_GetDirectionValues

*GetDirectionValues;

SRM_GetExtendedValidGeodeticRegion

*GetExtendedValidGeodeticRegion;

SRM_GetExtendedValidRegion

*GetExtendedValidRegion;

SRM_GetORMCodes

*GetORMCodes;

SRM_GetSRFCodes

*GetSRFCodes;

SRM_TM_GetSRFParameters

*GetSRFParameters;

SRM_GetSurfaceCoordinateValuesEH

*GetSurfaceCoordinateValues;

SRM_GetValidGeodeticRegion

*GetValidGeodeticRegion;

SRM_GetValidRegion

*GetValidRegion;

SRM_InverseGenerating3D

*InverseGenerating3D;

SRM_MapAzimuth

*MapAzimuth;

SRM_PromoteSurfaceCoordinateEH

*PromoteSurfaceCoordinate;

SRM_PointDistortion

*PointDistortion;

SRM_SetExtendedValidGeodeticRegion

*SetExtendedValidGeodeticRegion;

SRM_SetExtendedValidRegion

*SetExtendedValidRegion;

SRM_SetValidGeodeticRegion

*SetValidGeodeticRegion;

SRM_SetValidRegion

*SetValidRegion;

SRM_VerticalOffset

*VerticalOffset;

} SRM_TM_Method_List;

The following record type specifies the binding of the TransverseMercator object class:

SRM_TransverseMercator

Abstract SRM API object class:  TransverseMercator

typedef struct {

void

*state;

SRM_TM_Method_List

*methods;

} SRM_TransverseMercator;

6.4 Creation function for standard SRFs

6.4.1 Overview

There are generic creation functions that are invoked to create an instance of a standard SRF or a member of a standard SRF set. The result of invoking a creation function is to return an instance of an object class defined in 6.3 SRM concrete object classes that has its state set as required by the specified SRF code.

6.4.2 CreateSRFSetMember

The following specifies the binding of the CreateSRFSetMember function:

SRM_CreateSRFSetMember

Abstract SRM API function:  CreateSRFSetMember

SRM_Status_Code SRM_CreateSRFSetMember (

 

SRM_SRFS_Code_Info

srfs_code_info,

 

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Object_Reference

*new_srf

/* OUT */

);

The object returned by the above function shall be an instance of one of the concrete SRF object classes specified in 6.3 SRM concrete object classes and shall represent a single member of the specified SRF set.

6.4.3 CreateStandardSRF

The following specifies the binding of the CreateStandardSRF function:

SRM_CreateStandardSRF

Abstract SRM API function:  Create

SRM_Status_Code SRM_CreateStandardSRF (

 

SRM_SRF_Code

srf_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Object_Reference

*new_srf

/* OUT */

);

The object returned by the above function shall be an instance of one of the concrete SRF object classes specified in 6.3 SRM Concrete object classes.

6.5 Query functions

6.5.1 Overview

There following functions are provided so that an implementation has a standard way of determining which SRFTs and ORMs are supported by the implementation.

6.5.2 QueryORMSupport

The following returns TRUE if the specified ORM is supported.:

SRM_QueryORMSupport

Abstract SRM API function:  QueryORMSupport

SRM_Status_Code SRM_QueryORMSupport (

 

SRM_ORM_Code

orm_code,

 

 

SRM_RT_Code

rt_code,

 

 

SRM_Boolean

*supported

/* OUT */

);

6.5.3 QuerySRFTSupport

The following returns TRUE if the specified SRFT is supported.:

SRM_QuerySRFTSupport

Abstract SRM API function:  QueryORMSupport

SRM_Status_Code SRM_QueryORMSupport (

 

SRM_SRFT_Code

srft_code,

 

 

SRM_Boolean

*supported

/* OUT */

);

http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_IEC_18042-4_Ed1.html