## 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