LlAngleBetween
De DigiWiki.
default { touch_start(integer num_detected) { rotation rot = llGetRootRotation(); float angle = llAngleBetween(ZERO_ROTATION, rot); llSay(PUBLIC_CHANNEL, "llAngleBetween(ZERO_ROTATION, " + (string)rot + ") = " + (string)angle); } }
Returns angle, in radians, between rotation a and rotation b.
float AngleBetween(rotation a, rotation b) { return 2 * llAcos((a.x * b.x + a.y * b.y + a.z * b.z + a.s * b.s) / llSqrt((a.x * a.x + a.y * a.y + a.z * a.z + a.s * a.s) * (b.x * b.x + b.y * b.y + b.z * b.z + b.s * b.s))); }
default { state_entry() { rotation aRot = ZERO_ROTATION; rotation bRot = llGetRot(); float aBetween = llAngleBetween( aRot, bRot ); llOwnerSay((string)aBetween); //llGetRot() being < 0, 0, 90 > this should report 1.570796 } }