## XSIMath.MapObjectPoseToObjectSpace

### Description

Converts a pose described in an ObjectSpace to a pose in a different ObjectSpace.

### C# Syntax

    SITransformation XSIMath.MapObjectPoseToObjectSpace( SITransformation in_pObjectSpace, SITransformation in_pSpace, SITransformation in_pPose );

### Scripting Syntax

    oReturn = XSIMath.MapObjectPoseToObjectSpace( ObjectSpace, Space, Pose );

### Return Value

SITransformation (pose)

### Parameters

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

### Examples

#### 1. JScript Example

    var oRoot = Application.ActiveProject.ActiveScene.Root;

    var oCube = oRoot.AddGeometry("Cube","MeshSurface");

    oCube.Kinematics.Global.Parameters("posy").value = 4.0;

    oCube.Kinematics.Global.Parameters("posx").value = 2.0;

    var oCube2 = oCube.AddGeometry("Cube","MeshSurface");

    oCube2.Kinematics.Global.Parameters("posz").value = 3.0;

    oCube2.Kinematics.Global.Parameters("rotx").value = 45.0;

    var oCone = oRoot.AddGeometry("Cone", "MeshSurface");

    oCone.Kinematics.Global.Parameters("posy").value = -2.0;

    oCone.Kinematics.Global.Parameters("posz").value = 90.0;

    var oTrans = oCube.Kinematics.Local.Transform;

    var oTransParent = oCube2.Kinematics.Global.Transform;

    var oVec3 = XSIMath.CreateVector3();

    oTrans.GetTranslation (oVec3);

    var oDestinationTrans = oCone.Kinematics.Global.Transform;

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

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

    var oObjectTrans = XSIMath.MapObjectPoseToObjectSpace(oTransParent, oDestinationTrans, oTrans);

    oObjectTrans.GetTranslation(oVec3);

    LogMessage ( "The translation of the cube relative to the cone: x " +

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

    // Expected results:

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

    //INFO : The translation of the cube relative to the cone:

    //                      x 2 y 4.82842712474619 z -84.1715728752538

#### 2. VBScript Example

    set oRoot = Application.ActiveProject.ActiveScene.Root

    set oCube = oRoot.AddGeometry("Cube","MeshSurface")

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

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

    set oCube2 = oCube.AddGeometry("Cube","MeshSurface")

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

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

    set oCone = oRoot.AddGeometry("Cone", "MeshSurface")

    oCone.Kinematics.Global.Parameters("posy").value = -2.0

    oCone.Kinematics.Global.Parameters("posz").value = 90.0

    set oTrans = oCube2.Kinematics.Local.Transform

    set oTransParent = oCube2.Kinematics.Global.Transform

    set oVec3 = XSIMath.CreateVector3

    oTrans.GetTranslation oVec3

    set oDestinationTrans = oCone.Kinematics.Global.Transform

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

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

    set oObjectTrans = XSIMath.MapObjectPoseToObjectSpace(oTransParent, oDestinationTrans,oTrans)

    oObjectTrans.GetTranslation oVec3

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

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

    ' Expected results:

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

    'INFO : The translation of the cube relative to the cone: x 2 y 4.82842712474619 z -84.1715728752538