### Methods

#### AddTransformLayer(operation) → {Integer}

Inserts a transformation layer after all the current transformation layers

##### Parameters:

Name | Type | Description |
---|---|---|

`operation` |
AxTransformOperation | The transformation operation for the new layer to insert |

##### Returns:

The index at which the new transformation layer was inserted

- Type
- Integer

#### ClearTransformLayers()

Removes all transformation layers

#### DeserializeChunk(reader) → {Boolean}

Reads the data of a chunk. The chunk header is already read by the reader and this method deserializes the contents of the chunk. Called continuously for each of the transform's chunks

##### Parameters:

Name | Type | Description |
---|---|---|

`reader` |
AxHierarchyStreamReader | Reader to use for reading the serialized data. |

##### Returns:

True if a chunk was successfully deserialized

- Type
- Boolean

#### GetForwardVectorExtrinsic() → {AxVector3}

Returns a vector, oriented along the forward direction of the transform in scene space
This is the vector along the local Z axis of the transform in scene space

##### Returns:

A vector oriented along the transform's forward direction

- Type
- AxVector3

#### GetForwardVectorIntrinsic() → {AxVector3}

Returns a vector, oriented along the forward direction of the transform in local space
This is the vector along the local Z axis of the transform in local space

##### Returns:

A vector oriented along the transform's forward direction

- Type
- AxVector3

#### GetPositionExtrinsic() → {AxVector3}

Returns the position of the transform in scene space

##### Returns:

The position of the transform in scene space

- Type
- AxVector3

#### GetPositionIntrinsic() → {AxVector3}

Returns the position of the transform in local space

##### Returns:

The position of the transform in scene space

- Type
- AxVector3

#### GetRightVectorExtrinsic() → {AxVector3}

Returns a vector, oriented along the right direction of the transform in scene space
This is the vector along the local X axis of the transform in scene space

##### Returns:

A vector oriented along the transform's right direction

- Type
- AxVector3

#### GetRightVectorIntrinsic() → {AxVector3}

Returns a vector, oriented along the right direction of the transform in local space
This is the vector along the local X axis of the transform in local space

##### Returns:

A vector oriented along the transform's right direction

- Type
- AxVector3

#### GetRotationExtrinsic() → {AxVector3}

Get the rotation angles of the transform in scene space
The angles are extracted for an Euler rotation of XYZ sequence

##### Returns:

The rotation angles in scene space of the transform, for a rotation in XYZ sequence

- Type
- AxVector3

#### GetRotationIntrinsic() → {AxVector3}

Get the rotation angles of the transform in local space
The angles are extracted for an Euler rotation of XYZ sequence

##### Returns:

The rotation angles in local space of the transform, for a rotation in XYZ sequence

- Type
- AxVector3

#### GetScalingExtrinsic() → {AxVector3}

Returns the transform's scaling along the scene axes

##### Returns:

The scaling of the transform in scene space

- Type
- AxVector3

#### GetScalingIntrinsic() → {AxVector3}

Returns the transform's scaling along its local axes

##### Returns:

The scaling of the transform in local space

- Type
- AxVector3

#### GetUpVectorExtrinsic() → {AxVector3}

Returns a vector, oriented along the up direction of the transform in scene space
This is the vector along the local Y axis of the transform in scene space

##### Returns:

A vector oriented along the transform's up direction

- Type
- AxVector3

#### GetUpVectorIntrinsic() → {AxVector3}

Returns a vector, oriented along the up direction of the transform in local space
This is the vector along the local Y axis of the transform in local space

##### Returns:

A vector oriented along the transform's up direction

- Type
- AxVector3

#### InsertTransformLayer(operation, index)

Inserts a transformation layer at a given index

##### Parameters:

Name | Type | Description |
---|---|---|

`operation` |
AxTransformOperation | The transformation operation for the new layer to insert |

`index` |
Integer | Position in the transorm's properties where the new layer should be inserted |

#### Process(parent)

Performs all transformation operatoins

##### Parameters:

Name | Type | Description |
---|---|---|

`parent` |
AxTransform | The parent transform onto which to calculate the world matrices of this transform. Of omitted or null, no parent transformation is applied |

#### RelateTo(parent)

Modifies the transform, so that in effect, it will remain situated the same in the scene, when related the given transform, that is, when the given transform is its parent
Useful when attaching the transform to another one

##### Parameters:

Name | Type | Description |
---|---|---|

`parent` |
AxMatrix | AxTransform | A matrix or transform towards which this one's scene situation should be related to. If null or left undefined, the transform is related to idendity |

#### RelateToIdentity()

Modifies the transform, so that in effect, it will remain situated the same in the scene, when related to identity, that is, when the parent of the transform is a transform with no operations applied
Useful when detaching the transform from a parent

#### RemoveTransformLayer(index)

Removes a transformation layer at a given index

##### Parameters:

Name | Type | Description |
---|---|---|

`index` |
Integer | The index of the transformation layer which is to be removed |

#### RotateAroundExtrinsic(axis, angle)

Rotates around an arbitraty axis in scene space

##### Parameters:

Name | Type | Description |
---|---|---|

`axis` |
AxVector3 | An axis in scene space, around which to rotate |

`angle` |
Number | The angle by which to rotate |

#### RotateAroundIntrinsic(axis, angle)

Rotates around an arbitraty axis in local space

##### Parameters:

Name | Type | Description |
---|---|---|

`axis` |
AxVector3 | An axis in scene space, around which to rotate |

`angle` |
Number | The angle by which to rotate |

#### RotateAroundRayExtrinsic(rayPoint, rayVector, angle)

Rotates around an arbitraty ray in scene space
In contrast to the RotateAroundExtrinsic method, which rotates around the transform's pivot, this method rotates around a specific ray located in the scene

##### Parameters:

Name | Type | Description |
---|---|---|

`rayPoint` |
AxVector3 | A point on the ray |

`rayVector` |
AxVector3 | The orientation vector of the ray |

`angle` |
Number | The angle by which to rotate |

#### RotateAroundRayIntrinsic(rayPoint, rayVector, angle)

Rotates around an arbitraty ray in local space
In contrast to the RotateAroundIntrinsic method, which rotates around the transform's pivot, this method rotates around a specific ray located in the transform's local space

##### Parameters:

Name | Type | Description |
---|---|---|

`rayPoint` |
AxVector3 | A point on the ray |

`rayVector` |
AxVector3 | The orientation vector of the ray |

`angle` |
Number | The angle by which to rotate |

#### RotateExtrinsic(angles)

Rotates around the axes of the scene's coordinate system.
The angle by which to rotate around each axis is provided by the respective component of the given vector
The performed rotation is applied in a X-Y-Z sequence

##### Parameters:

Name | Type | Description |
---|---|---|

`angles` |
AxVector3 | A vector with the values of the angles by which to rotate around each respective axis of the scene |

#### RotateIntrinsic(angles)

Rotates around the axes of the transform's local coordinate system.
The angle by which to rotate around each axis is provided by the respective component of the given vector
The performed rotation is applied in a X-Y-Z sequence

##### Parameters:

Name | Type | Description |
---|---|---|

`angles` |
AxVector3 | A vector with the values of the angles by which to rotate around each respective axis of the transform's local coordinate system |

#### ScaleExtrinsic(scaling)

Scales along the axes of the scene's coordinate system

##### Parameters:

Name | Type | Description |
---|---|---|

`scaling` |
AxVector3 | A vector with the values by which to scale along each corresponding axis |

#### ScaleIntrinsic(scaling)

Scales along the axes of the transform's local coordinate system

##### Parameters:

Name | Type | Description |
---|---|---|

`scaling` |
AxVector3 | A vector with the values by which to scale along each corresponding axis |

#### SerializeChunks(writer)

Writes chunks for all the data which is needed to serialize the transform.

##### Parameters:

Name | Type | Description |
---|---|---|

`writer` |
AxHierarchyStreamWriter | Writer to use for writing the serialization data |

#### SetPositionExtrinsic(position)

Sets the position of the transform in scene space

##### Parameters:

Name | Type | Description |
---|---|---|

`position` |
AxVector3 | The position in scene space to apply on the transform |

#### SetPositionIntrinsic(position)

Sets the position of the transform in local space

##### Parameters:

Name | Type | Description |
---|---|---|

`position` |
AxVector3 | The position in local space to apply on the transform |

#### SetRotationExtrinsic(rotation)

Sets the rotation angles of the transform in scene space
The rotation is performed in XYZ sequence

##### Parameters:

Name | Type | Description |
---|---|---|

`rotation` |
AxVector3 | A vector with the rotation angles to be applied on each corresponding axis |

#### SetRotationIntrinsic(rotation)

Sets the rotation angles of the transform in local space
The rotation is performed in XYZ sequence

##### Parameters:

Name | Type | Description |
---|---|---|

`rotation` |
AxVector3 | A vector with the rotation angles to be applied on each corresponding axis |

#### SetScalingExtrinsic(scaling)

Sets the scaling of the transform along the scene axes

##### Parameters:

Name | Type | Description |
---|---|---|

`scaling` |
AxVector3 | A vector with the scaling values to be set on each corresponding axis |

#### SetScalingIntrinsic(scaling)

Sets the scaling of the transform along its local axes

##### Parameters:

Name | Type | Description |
---|---|---|

`scaling` |
AxVector3 | A vector with the scaling values to be set on each corresponding axis |

#### TranslateExtrinsic(translation)

Translates along the given vector in scene space
The translation is performed along the scene's axes, where the change in each axis is denoted by the corresponding component of the given vector

##### Parameters:

Name | Type | Description |
---|---|---|

`translation` |
AxVector3 | A vector in scene space along which to translate the transform |

#### TranslateIntrinsic(translation)

Translates along the given vector in respect to the transform's local space
The translation is performed along the local orientation axes, where the change in each axis is denoted by the corresponding component of the given vector
Effectively, this is a translation along the orientation of the transform's own coordinate system. This is useful, for example, when translating along an object's own left-right, up-down, forward-backward direction

##### Parameters:

Name | Type | Description |
---|---|---|

`translation` |
AxVector3 | A vector along which to translate in local space |