# IRdCoordinateSystem Interface Reference

Inherits IRsObject.

List of all members.

## Public Member Functions
HRESULT | SetCoordinateSystem ([in] IRsUnknownCoordinateSystem *pCoordSysNode,[in] GUID guid)
HRESULT | GetCoordinateSystem ([out] IRsUnknownCoordinateSystem **ppCoordSysNode,[out] GUID *guid)
HRESULT | GetTransformationMatrix ([out] RtMatrixf *pMatrix)
HRESULT | GetCoordinateSystemScaling ([out] RtVector4f *pScalePlane)
HRESULT | GetCoordinateSystemViewDependence ([out] RtBool *pbDependent)

## Detailed Description

Widget coordinate system data object, is used to specify orientation, of widget actions and elements.

- The orientation is stored in matrices, but because these need to be accessible, during rendering of widgets (not just read threads), evaluation of matrices must be done out of kernel.
- Callback mechanism is used to perform the task.

## Member Function Documentation

HRESULT IRdCoordinateSystem::SetCoordinateSystem | ( | [in] IRsUnknownCoordinateSystem * | pCoordSysNode,
|  | [in] GUID | guid |
| ) |  |  |

Set coordinate system evaluation interface and port/slot.

Parameters:

  | pCoordSysNode | [in] Coordinate system evaluator.
  | guid | [in] Port ID for coordinate system evaluator.

Returns:
  standard HRESULT processing can be applied to returned value.

HRESULT IRdCoordinateSystem::GetCoordinateSystem | ( | [out] IRsUnknownCoordinateSystem ** | ppCoordSysNode,
|  | [out] GUID * | guid |
| ) |  |  |

Get coordinate system evaluator interface and port.

Parameters:

  | ppCoordSysNode | [out] Returned coordinate system evaluator.
  | pguid | Returned [out] Port ID for coordinate system evaluator.

Returns:
  standard HRESULT processing can be applied to returned value.

HRESULT IRdCoordinateSystem::GetTransformationMatrix | ( | [out] RtMatrixf * | pMatrix | ) |

Evaluate transformation matrix.

- Evaluation is done out of kernel and can be called from both read and write threads.
- Data object uses stored coordinate system interfaces to read coordinate system from widget nodes.

Parameters:

  | pMatrix | [out] Computed coordinate system.

Returns:
  standard HRESULT processing can be applied to returned value.

HRESULT IRdCoordinateSystem::GetCoordinateSystemScaling | ( | [out] RtVector4f * | pScalePlane | ) |

Coordinate system scaling is used to read widget scaling plane equations.

- Widget coordinate system computation uses this value to scale widget depending on it's distance from this plane.
- It may be used to compensate perspective scaling.
- Evaluation is done out of kernel and uses stored coordinate system interfaces to compute the data.

Parameters:

  | pScalePlane | [out] Computed scaling plane.

Returns:
  standard HRESULT processing can be applied to returned value.

HRESULT IRdCoordinateSystem::GetCoordinateSystemViewDependence | ( | [out] RtBool * | pbDependent | ) |

View independent coordinate systems:

- Are locked during widget actions so visual representation of axes remains the same.
- This flag is also used for optimisation purposes.

Parameters:

  | pbDependent | [out] Return value that specifies whether widget coordinate system is view dependent or not.

Returns:
  standard HRESULT processing can be applied to returned value