## XSIMath.MapObjectPoseToWorldSpace

### Description

Converts a Pose described in a given ObjectSpace to WorldSpace.

### C# Syntax

    SITransformation XSIMath.MapObjectPoseToWorldSpace( SITransformation in_pObjectSpace, SITransformation in_pPose );

### Scripting Syntax

    oReturn = XSIMath.MapObjectPoseToWorldSpace( ObjectSpace, Pose );

### Return Value

SITransformation (pose)

### Parameters

Parameter | Type | Description
--- | --- | ---
ObjectSpace | SITransformation | ObjectSpace in which the pose is described.
Pose | SITransformation | Pose to convert.

### Examples

#### 1. JScript Example

    /*

    	This example demonstrates how to map a cube's position relative to its parent

    	to global coordinates

    */

    NewScene (null, false)

    var oRoot = Application.ActiveProject.ActiveScene.Root

    var oCubeParent = oRoot.AddGeometry("Cube","MeshSurface", "CubeParent")

    oCubeParent.Kinematics.Global.Parameters("posx").value = 2.0

    oCubeParent.Kinematics.Global.Parameters("posy").value = 4.0

    var oCubeChild =  oCubeParent.AddGeometry("Cube","MeshSurface", "CubeChild" )

    oCubeChild.Kinematics.Global.Parameters("posz").value = 3.0

    oCubeChild.Kinematics.Global.Parameters("rotx").value = 45.0

    var oTransParent = oCubeParent.Kinematics.Global.Transform

    // This is the translation relative to the parent cube

    var oTrans = oCubeChild.Kinematics.Local.Transform

    var oVec3 = XSIMath.CreateVector3()

    oTrans.GetTranslation (oVec3)

    Application.LogMessage ("The translation of the cube relative to its parent: x " +

    				 oVec3.x + " y " + oVec3.y + " z " + oVec3.z)

    // oTrans is relative to the parent cube, but can be mapped back to

    // global space like this:

    var oWorldTrans = XSIMath.MapObjectPoseToWorldSpace(oTransParent, oTrans)

    oWorldTrans.GetTranslation (oVec3)

    Application.LogMessage ("The translation of the cube relative to the origin of the universe: x "

    				+ oVec3.x + " y " + oVec3.y + " z " + oVec3.z)

    // Note: The global KinematicState already expresses this information

    var oTransGlobal = oCubeChild.Kinematics.Global.Transform

    oTransGlobal.GetTranslation (oVec3)

    Application.LogMessage ("The translation of the cube relative to the origin of the universe: x " +

    				 oVec3.x + " y " + oVec3.y + " z " + oVec3.z)

    // Expected output:

    //INFO : The translation of the cube relative to its parent: x -2 y -4 z 3

    //INFO : The translation of the cube relative to the origin of the universe: x 0 y 0 z 3

    //INFO : The translation of the cube relative to the origin of the universe: x 0 y 0 z 3

#### 2. VBScript Example

    '

    '	This example demonstrates how to map a cube's position relative to its parent

    '	to global coordinates

    '

    set oRoot = Application.ActiveProject.ActiveScene.Root

    set oCubeParent = oRoot.AddGeometry("Cube","MeshSurface", "CubeParent")

    oCubeParent.Kinematics.Global.Parameters("posx").value = 2.0

    oCubeParent.Kinematics.Global.Parameters("posy").value = 4.0

    set oCubeChild =  oCubeParent.AddGeometry("Cube","MeshSurface", "CubeChild" )

    oCubeChild.Kinematics.Global.Parameters("posz").value = 3.0

    oCubeChild.Kinematics.Global.Parameters("rotx").value = 45.0

    set oTransParent = oCubeParent.Kinematics.Global.Transform

    ' This is the translation relative to the parent cube

    set oTrans = oCubeChild.Kinematics.Local.Transform

    set oVec3 = XSIMath.CreateVector3

    oTrans.GetTranslation oVec3

    Application.LogMessage "The translation of the cube relative to its parent: x " &_

    				 oVec3.x & " y " & oVec3.y & " z " & oVec3.z

    ' oTrans is relative to the parent cube, but can be mapped back to

    ' global space like this:

    set oWorldTrans = XSIMath.MapObjectPoseToWorldSpace(oTransParent, oTrans)

    oWorldTrans.GetTranslation oVec3

    Application.LogMessage "The translation of the cube relative to the origin of the universe: x " &_

    				 oVec3.x & " y " & oVec3.y & " z " & oVec3.z

    '

    ' Note: The global KinematicState already expresses this information

    '

    set oTransGlobal = oCubeChild.Kinematics.Global.Transform

    oTransGlobal.GetTranslation oVec3

    Application.LogMessage "The translation of the cube relative to the origin of the universe: x " &_

    				 oVec3.x & " y " & oVec3.y & " z " & oVec3.z

    ' Expected output:

    'INFO : The translation of the cube relative to its parent: x -2 y -4 z 3

    'INFO : The translation of the cube relative to the origin of the universe: x 0 y 0 z 3

    'INFO : The translation of the cube relative to the origin of the universe: x 0 y 0 z 3