Difference between revisions of "LlRot2Euler"
Jump to navigation
Jump to search
All Issues ~ Search JIRA for related Bugs
Omei Qunhua (talk | contribs) (Add comment on radians. Avoid unwise hard-coded rotation. Add a 2nd example.) |
m (Stole the text from llEuler2Rot) |
||
(One intermediate revision by one other user not shown) | |||
Line 6: | Line 6: | ||
|return_type=vector | |return_type=vector | ||
|return_text=that is the Euler representation (roll, pitch, yaw) of {{LSLP|quat}}, with each component expressed in radians. | |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=*Angles greater than [[PI]] radians (180 degrees) are returned as negative angles. | |caveats=*Angles greater than [[PI]] radians (180 degrees) are returned as negative angles. | ||
|constants | |constants | ||
|examples= | |examples= | ||
< | <source lang="lsl2"> | ||
default | default | ||
{ | { | ||
Line 19: | Line 19: | ||
} | } | ||
} | } | ||
</ | </source> | ||
< | <source lang="lsl2"> | ||
// This script rotates a prim by 15 degrees each time the prim is touched | // This script rotates a prim by 15 degrees each time the prim is touched | ||
Line 50: | Line 50: | ||
} | } | ||
} | } | ||
</ | </source> | ||
|helpers | |helpers | ||
|also_functions={{LSL DefineRow||[[llEuler2Rot]]|}} | |also_functions={{LSL DefineRow||[[llEuler2Rot]]|}} |
Revision as of 15:48, 8 August 2015
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 |
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.
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 );
}
}