llAxes2Rot

From Second Life Wiki
Revision as of 08:56, 5 August 2009 by Dora Gustafson (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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()
   {
       vector i = < 1.0, 0.0, 0.0>;
       vector j = < 0.0, 1.0, 0.0>;
       vector k = < 0.0, 0.0, 1.0>;
       rotation rot = llAxes2Rot( j, -i, k );
       llSay(0, (string) (llRot2Euler(rot) * RAD_TO_DEG) );
   }

}</lsl>

This script displays:

  Object: <-0.00000, 0.00000, 90.00000>
which shows that (j, -i, k) is obtained by rotating (i, j, k) 90 degrees around z direction.

Notes

Technically, only the first two vectors are needed to define this rotation, which can be done by calling any of these: <lsl>llAxes2Rot(fwd, left, fwd % left); llAxes2Rot(left % up, left, up); llAxes2Rot(fwd, up % fwd, up);</lsl>

Deep Notes

Search JIRA for related Issues

Tests

•  Visual illustration Importance of mutually orthogonal unit vectors

Signature

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