# LlAxes2Rot

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

 LSL Portal

## Contents

Function: rotation llAxes2Rot( vector fwd, vector left, vector up );
 17 Function ID 0 Forced Delay 10 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

```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) );
}
}```

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:

```llAxes2Rot(fwd, left, fwd % left);
llAxes2Rot(left % up, left, up);
llAxes2Rot(fwd, up % fwd, up);```

## 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 );
```

#### Haiku

quaternions rule
the whole world spins at your whim
or crashes and burns