Difference between revisions of "LlRot2Euler"

From Second Life Wiki
Jump to navigation Jump to search
m (Stole the text from llEuler2Rot)
(17 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{LSLFunctionAll
{{LSL Function
|func=llRot2Euler
|func_id=15|func_sleep=0.0|func_energy=10.0
|func_id=15
|func=llRot2Euler|sort=Rot2Euler
|func_sleep=0.0
|func_energy=10.0
|func_footnote
|func_footnote
|p1_type=rotation
|p1_type=rotation|p1_name=quat|p1_desc=Any valid rotation
|p1_name=quat
|p1_desc=Any valid vector
|p2_type|p2_name|p2_desc
|p3_type|p3_name|p3_desc
|p4_type|p4_name|p4_desc
|p5_type|p5_name|p5_desc
|p6_type|p6_name|p6_desc
|p7_type|p7_name|p7_desc
|p8_type|p8_name|p8_desc
|p9_type|p9_name|p9_desc
|p10_type|p10_name|p10_desc
|p11_type|p11_name|p11_desc
|p12_type|p12_name|p12_desc
|return_type=vector
|return_type=vector
|return_text=that is the Euler representation (roll, pitch, yaw) of quat.
|return_text=that is the Euler representation (roll, pitch, yaw) of {{LSLP|quat}}, with each component expressed in radians.
|spec
|spec=The {{LSLGC|Euler}} angle vector (in radians) is converted from a rotation by doing the rotations around the 3 axes in Z, Y, X order.
|caveats
|caveats=*Angles greater than [[PI]] radians (180 degrees) are returned as negative angles.
|constants
|examples=
|examples=
<lsl>
<source lang="lsl2">
default {
default
{
     state_entry()
     state_entry()
     {
     {
         rotationinput = <0.0, 1.0, 0.0, 0.0>;//not advised to make your own quaternion
         rotation input = llGetRot();
         llSay(0,"The Rot2Euler of "+(string)input+" is: "+(string)llRot2Euler(input) );
         llSay(0, "The Rot2Euler of " + (string)input + " is: " + (string) llRot2Euler(input) );
     }
     }
}
}
</lsl>
</source>
 
<source lang="lsl2">
// This script rotates a prim by 15 degrees each time the prim is touched
 
// While not the best way of achieving the result,
// this script demonstrates the use of llRot2Euler and llEuler2Rot
// and the use of more human-friendly degrees rather than radians
 
default
{
    touch_start(integer total_number)
    {
        // Get the object's current rotation as a quarternion
        rotation rot = llGetRot();
        // Convert the rotation to a euler with roll, pitch, and yaw in radians
        vector euler = llRot2Euler(rot);
        // convert the angles from radians to degrees
        euler *= RAD_TO_DEG;
        // Add 15 degrees on the Z axis       
        euler += <0, 0, 15>;
        // Say the current euler values in degrees
        llSay(0, (string) euler);       
        // convert degrees back to radians
        euler *= DEG_TO_RAD;
        // Convert the euler back to a rotation quarternion
        rot =  llEuler2Rot (euler);
        // Apply the updated rotation to the prim 
        llSetRot( rot );
    }
}
</source>
|helpers
|helpers
|related={{LSLG|llEuler2Rot}}<br/>{{LSLG|llVecDist}}
|also_functions={{LSL DefineRow||[[llEuler2Rot]]|}}
|also
|also_events
|also_articles={{LSL DefineRow||{{Wikipedia|Euler Angles}}|}}
|also_tests
|notes
|notes
|permission
|negative_index
|cat1=Math/3D
|cat2=Rotation
|cat3=Euler
|cat4
}}
}}
[[Category:LSL_Functions]]
[[Category:LSL_Math]]
[[Category:LSL_Rotation]]

Revision as of 15:48, 8 August 2015

Summary

Function: vector llRot2Euler( rotation quat );

Returns a vector that is the Euler representation (roll, pitch, yaw) of quat, with each component expressed in radians.

• rotation quat Any valid rotation

Specification

The Euler angle vector (in radians) is converted from a rotation by doing the rotations around the 3 axes in Z, Y, X order.

Caveats

  • Angles greater than PI radians (180 degrees) are returned as negative angles.
All Issues ~ Search JIRA for related Bugs

Examples

default
{
    state_entry()
    {
        rotation input = llGetRot();
        llSay(0, "The Rot2Euler of " + (string)input + " is: " + (string) llRot2Euler(input) );
    }
}
// This script rotates a prim by 15 degrees each time the prim is touched

// While not the best way of achieving the result,
// this script demonstrates the use of llRot2Euler and llEuler2Rot
// and the use of more human-friendly degrees rather than radians

default
{
    touch_start(integer total_number)
    {
        // Get the object's current rotation as a quarternion
        rotation rot = llGetRot();
        // Convert the rotation to a euler with roll, pitch, and yaw in radians
        vector euler = llRot2Euler(rot);
        // convert the angles from radians to degrees
        euler *= RAD_TO_DEG;
        // Add 15 degrees on the Z axis        
        euler += <0, 0, 15>;
        // Say the current euler values in degrees
        llSay(0, (string) euler);         
        // convert degrees back to radians
        euler *= DEG_TO_RAD;
        // Convert the euler back to a rotation quarternion
        rot =  llEuler2Rot (euler);
        // Apply the updated rotation to the prim   
        llSetRot( rot ); 
    }
}

See Also

Functions

•  llEuler2Rot

Articles

•  "Wikipedia logo"Euler Angles

Deep Notes

Search JIRA for related Issues

Signature

function vector llRot2Euler( rotation quat );