Difference between revisions of "LlAxes2Rot"

From Second Life Wiki
Jump to navigation Jump to search
m (Cosmetical)
m
Line 8: Line 8:
|p3_type=vector|p3_name=up
|p3_type=vector|p3_name=up
|return_text=that is defined by the 3 coordinate axes
|return_text=that is defined by the 3 coordinate axes
|notes=Technically, only the first two vectors are needed to define this rotation, which can be done by calling:
|notes=Technically, only the first two vectors are needed to define this rotation, which can be done by calling any of these:
<pre>llAxes2Rot(fwd, left, fwd % left);</pre>
<lsl>llAxes2Rot(fwd, left, fwd % left);
llAxes2Rot(left % up, left, up);
llAxes2Rot(fwd, up % fwd, up);</lsl>
|spec
|spec
|caveats
|caveats
|examples=<lsl>
|examples=<lsl>default
default
{
{
     state_entry()
     state_entry()

Revision as of 12:20, 7 July 2009

Summary

Function: rotation llAxes2Rot( vector fwd, vector left, vector up );
0.0 Forced Delay
10.0 Energy

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

Signature

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