Difference between revisions of "LlRot2Euler"
Jump to navigation
Jump to search
All Issues ~ Search JIRA for related Bugs
m |
Omei Qunhua (talk | contribs) (Add comment on radians. Avoid unwise hard-coded rotation. Add a 2nd example.) |
||
Line 5: | Line 5: | ||
|p1_type=rotation|p1_name=quat|p1_desc=Any valid rotation | |p1_type=rotation|p1_name=quat|p1_desc=Any valid rotation | ||
|return_type=vector | |return_type=vector | ||
|return_text=that is the Euler representation (roll, pitch, yaw) of {{LSLP|quat}}. | |return_text=that is the Euler representation (roll, pitch, yaw) of {{LSLP|quat}}, with each component expressed in radians. | ||
|spec | |spec | ||
|caveats=*Angles greater than [[PI]] (180 degrees) are returned as negative angles. | |caveats=*Angles greater than [[PI]] radians (180 degrees) are returned as negative angles. | ||
|constants | |constants | ||
|examples= | |examples= | ||
Line 15: | Line 15: | ||
state_entry() | state_entry() | ||
{ | { | ||
rotation input = | 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> | |||
<lsl> | |||
// 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 ); | |||
} | } | ||
} | } |
Revision as of 11:06, 1 February 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: vector llRot2Euler( rotation quat );15 | Function ID |
0.0 | Forced Delay |
10.0 | Energy |
Returns a vector that is the Euler representation (roll, pitch, yaw) of quat, with each component expressed in radians.
• rotation | quat | – | Any valid rotation |
Caveats
- Angles greater than PI radians (180 degrees) are returned as negative angles.
Examples
<lsl> default {
state_entry() { rotation input = llGetRot(); llSay(0, "The Rot2Euler of " + (string)input + " is: " + (string) llRot2Euler(input) ); }
} </lsl>
<lsl> // 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 ); }
}
</lsl>