Difference between revisions of "LlAxisAngle2Rot"

From Second Life Wiki
Jump to navigation Jump to search
Line 6: Line 6:
|p2_type=float|p2_name=angle|p2_desc=expressed in radians.
|p2_type=float|p2_name=angle|p2_desc=expressed in radians.
|return_text=that is a generated '''angle''' about '''axis'''
|return_text=that is a generated '''angle''' about '''axis'''
|
|func_footnote='''axis''' need not be [[llVecNorm|normalized]], only the direction is important.
|func_footnote='''axis''' need not be [[llVecNorm|normalized]], only the direction is important.
|
|func_footnote='''angle''' need to be between the value 0<angle<PI (higher values than PI lead to 2*PI-angle) , because a rotation is not really a rotation (it is more of a rigid motion/mirroring)  
|func_footnote='''angle''' need to be between the value 0<angle<PI (higher values than PI lead to 2*PI-angle) , because a rotation is not really a rotation (it is more of a rigid motion/mirroring)  
,the final destination is the rotation. (in other words: it doesn't matter wether you rotate left by 90 degrees or right by 270 degrees)
,the final destination is the rotation. (in other words: it doesn't matter wether you rotate left by 90 degrees or right by 270 degrees)

Revision as of 22:17, 15 February 2014

Summary

Function: rotation llAxisAngle2Rot( vector axis, float angle );
0.0 Forced Delay
10.0 Energy

Returns a rotation that is a generated angle about axis

• vector axis
• float angle expressed in radians.

angle need to be between the value 0<angle<PI (higher values than PI lead to 2*PI-angle) , because a rotation is not really a rotation (it is more of a rigid motion/mirroring) ,the final destination is the rotation. (in other words: it doesn't matter wether you rotate left by 90 degrees or right by 270 degrees)

Examples

<lsl>default {

   state_entry()
   {
       vector axis = <0.0, 0.0, 1.0>;
       float angle = 90.0 * DEG_TO_RAD;
       rotation rot = llAxisAngle2Rot(axis, angle);
       vector euler = llRot2Euler(rot) * RAD_TO_DEG;
       llOwnerSay((string) euler);
       //Says <0.0, 0.0, 90.0> since it is rotating 90 degrees on the Z axis caused by the 1.0 placed in the Z vector spot. 
   }
}</lsl>

See Also

Functions

•  llRot2Angle
•  llRot2Axis

Deep Notes

<lsl>rotation llAxisAngle2Rot( vector axis, float angle ) {

   axis = llVecNorm( axis ) * llSin( angle/2 );
   return <axis.x, axis.y, axis.z, llCos( angle/2 )>;

}</lsl>

Signature

function rotation llAxisAngle2Rot( vector axis, float angle );