Skip to content
lsl.devlsl.devLSL Dev

llRot2Fwd

function
Function syntax
vector llRot2Fwd(
  1. rotation q// Rotation to convert.
);
Returns
vector
Energy
10

Computes the orientation of the local x-axis relative to the parent (i.e. the root prim or the world).

Returns a vector that is the forward vector defined by q, i.e. a unit vector pointing in the local positive X direction.

How to use
vector result = llRot2Fwd(ZERO_ROTATION);

Mathematically equivalent to:

ret = llVecNorm(<1., 0., 0.> * q);

If q is known to be a unit quaternion then it can be simplified as:

ret = <1., 0., 0.> * q;

Keep in mind that object and agent rotations will always be unit quaternions. For example, <1.0, 0.0, 0.0>*llGetRot() is about 25-30% faster than llRot2Fwd(llGetRot()) depending on the VM used. If done often and at extremely fast rates, it can be advantageous to even save <1.0, 0.0, 0.0> to a local/global variable and reuse it.

Example 1
// Move an object 5 metres forwards along its x axis, when touched, no matter how the object is oriented in world.
// Works for a root or child prim
default
{
touch_start(integer total_number)
{
vector v = llRot2Fwd( llGetLocalRot() );
llSetPos( llGetLocalPos() + v * 5 );
}
}

Can be useful to identify the orientation of the local frontal-plane of the prim, since its x-axis is always perpendicular to this local frontal plane.

Original wiki source

Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.

From the Second Life Wiki

Community documentation adapted from LlRot2Fwd, by Linden Research, Inc. and contributing residents.View contributors and history.

Imported wiki revision:

Licensed under CC BY-SA 3.0. Last wiki edit: .Formatting and links have been adapted for this site; API metadata follows the LSL definitions.