Meter2Feet
Revision as of 08:21, 12 September 2007 by Huney Jewell (talk | contribs) (1 ft = 0.3048m, see here: http://en.wikipedia.org/wiki/Foot_%28unit_of_length%29)
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Specification
string Meter2Feet( float meter )
{
float fraction = meter / 0.3048; // Compute feet
integer feet = (integer)fraction;
fraction = (fraction - feet) * 12; // Compute inches
integer inches = (integer)fraction;
fraction = llRound((fraction - inches) * 16); // Compute 1/16 inches
string strFraction = "";
if (fraction) // show fraction value only if not zero
strFraction = " " + (string)llAbs((integer)fraction) + "/16";
return ((string)feet + "' " + (string)llAbs(inches) + strFraction+ "\"");
}
Example
Trivial example to listen to any chat from the object owner for meter values and respond feet/inch value.
string Meter2Feet( float meter )
{
float fraction = meter / 0.3048; // Compute feet
integer feet = (integer)fraction;
fraction = (fraction - feet) * 12; // Compute inches
integer inches = (integer)fraction;
fraction = llRound((fraction - inches) * 16); // Compute 1/16 inches
string strFraction = "";
if (fraction) // show fraction value only if not zero
strFraction = " " + (string)llAbs((integer)fraction) + "/16";
return ((string)feet + "' " + (string)llAbs(inches) + strFraction+ "\"");
}
default
{
state_entry()
{
llOwnerSay("Enter: [m]");
llListen(0, "", llGetOwner(), "");
}
listen(integer _chan, string _str, key _id, string _msg)
{
float meter = (float)_msg;
llOwnerSay(Meter2Feet(meter));
}
touch_start(integer n)
{
llOwnerSay( Meter2Feet( llVecDist( llGetPos(), llDetectedPos(0))));
}
}