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
    }
}
Outils personnels
  • Cette page a été consultée 604 fois.
donate
Google Ads