public llRot2Axis ( OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion rot ) : OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3 | ||
rot | OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion | |
return | OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3 |
public LSL_Vector llRot2Axis(LSL_Rotation rot)
{
m_host.AddScriptLPS(1);
if (Math.Abs(rot.s) > 1) // normalization needed
rot.Normalize();
double s = Math.Sqrt(1 - rot.s * rot.s);
if (s < 0.001)
{
return new LSL_Vector(1, 0, 0);
}
else
{
double invS = 1.0 / s;
if (rot.s < 0) invS = -invS;
return new LSL_Vector(rot.x * invS, rot.y * invS, rot.z * invS);
}
}