## XSIMath.MapObjectOrientationToObjectSpace

### Description

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

### C# Syntax

    SIVector3 XSIMath.MapObjectOrientationToObjectSpace( SITransformation in_pObjectSpace, SITransformation in_pSpace, SIVector3 in_pOrientation );

### Scripting Syntax

    oReturn = XSIMath.MapObjectOrientationToObjectSpace( ObjectSpace, Space, Orientation );

### Return Value

SIVector3 (orientation)

### Parameters

Parameter | Type | Description
--- | --- | ---
ObjectSpace | SITransformation | ObjectSpace in which the orientation is described.
Space | SITransformation | Space in which we want to convert the orientation.
Orientation | SIVector3 | Orientation to convert.

### Examples

#### 1. JScript Example

    var oRoot = Application.ActiveProject.ActiveScene.Root;
    var oCube = oRoot.AddGeometry("Cube","MeshSurface");
    oCube.Kinematics.local.Parameters("posy").value = 4.0;
    oCube.Kinematics.local.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.global.Transform;
    var oOri = XSIMath.CreateVector3();
    aNormal = new VBArray( oCube.ActivePrimitive.Geometry.Facets.NormalArray );
    oOri.x = aNormal.getItem(0,1);
    oOri.y = aNormal.getItem(1,1);
    oOri.z = aNormal.getItem(2,1);
    var oDestinationTrans = oCone.Kinematics.Global.Transform;
    var oObjectOri = XSIMath.MapObjectOrientationToObjectSpace(oTrans, oDestinationTrans, oOri);
    Application.LogMessage  ("The second face of the cube normal vector represented in the cone referential "
                                    + XSIMath.RadiansToDegrees(oObjectOri.X) + "," + XSIMath.RadiansToDegrees(oObjectOri.Y)
                                    + "," + XSIMath.RadiansToDegrees(oObjectOri.Z) + " in the cube object space");
    // Expected results:
    //INFO : The second face of the cube normal vector represented in the cone referential
    //                      0,-57.29577951308232,0 in the cube object space

#### 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 = oCube.Kinematics.Local.Transform
    set oOri = XSIMath.CreateVector3
    aNormal = oCube.ActivePrimitive.Geometry.Facets.NormalArray
    oOri.x = aNormal(0,1)
    oOri.y = aNormal(1,1)
    oOri.z = aNormal(2,1)
    set oDestinationTrans = oCone.Kinematics.Global.Transform
    set oObjectOri = XSIMath.MapObjectOrientationToObjectSpace(oTrans, oDestinationTrans, oOri)
    Application.LogMessage  "The second face of the cube normal vector represented in the cone referential(" & _
                                    XSIMath.RadiansToDegrees(oObjectOri.X) & "," & _
                                    XSIMath.RadiansToDegrees(oObjectOri.Y) & "," & _
                                    XSIMath.RadiansToDegrees(oObjectOri.Z) & ") in the cube object space"