Difference between revisions of "LlAxes2Rot"

From Second Life Wiki
Jump to navigation Jump to search
(After a lot of testing & online discussion with Strife)
(Adding example on Strife's request)
Line 12: Line 12:
|spec
|spec
|caveats
|caveats
|examples
|examples=<lsl>
default
{
    state_entry()
    {
        rotation rot = llAxes2Rot(
            < 0, 1, 0>,
            < -1, 0, 0>,
            < 0, 0, 1>);
 
        llSay(0, (string) (llRot2Euler(rot) * RAD_TO_DEG) );
    }
}</lsl>
 
This script shows that the (i, j, k) system of axes is rotated into (j, -i, k) with a 90° rotation around z direction.
|helpers
|helpers
|also_functions
|also_functions

Revision as of 08:43, 6 April 2008

Summary

Function: rotation llAxes2Rot( vector fwd, vector left, vector up );

Returns a rotation that is defined by the 3 coordinate axes

• vector fwd
• vector left
• vector up

All three vectors must be mutually orthogonal unit vectors.

Examples

<lsl> default {

   state_entry()
   {
       rotation rot = llAxes2Rot(
           < 0, 1, 0>,
           < -1, 0, 0>,
           < 0, 0, 1>);
       llSay(0, (string) (llRot2Euler(rot) * RAD_TO_DEG) );
   }

}</lsl>

This script shows that the (i, j, k) system of axes is rotated into (j, -i, k) with a 90° rotation around z direction.

Notes

Technically, only the first two vectors are needed to define this rotation, which can be done by calling:

llAxes2Rot(fwd, left, fwd % left);

Deep Notes

Search JIRA for related Issues

Signature

function rotation llAxes2Rot( vector fwd, vector left, vector up );