Meter2Feet: Difference between revisions
Jump to navigation
Jump to search
Huney Jewell (talk | contribs) Your's didnt compile either, lol. And reciprocal value extended to guarantee for precision of result! Btw, I had checked my version by using LSLEditor, which compiled the code. |
Huney Jewell (talk | contribs) mNo edit summary |
||
| Line 22: | Line 22: | ||
} | } | ||
// Compute feet multiplying by reciprocal value of | |||
// conversion constant 0.3048 for performance reasons | |||
float fraction = meter * 3.2808398950131233595800524934383; | |||
integer feet = (integer)fraction; | |||
fraction = (fraction - feet) * 12; // Compute inches | fraction = (fraction - feet) * 12; // Compute inches | ||
| Line 53: | Line 55: | ||
} | } | ||
// Compute feet multiplying by reciprocal value of | |||
// conversion constant 0.3048 for performance reasons | |||
float fraction = meter * 3.2808398950131233595800524934383; | |||
integer feet = (integer)fraction; | |||
fraction = (fraction - feet) * 12; // Compute inches | fraction = (fraction - feet) * 12; // Compute inches | ||
| Line 81: | Line 85: | ||
llOwnerSay(Meter2Feet(meter)); | llOwnerSay(Meter2Feet(meter)); | ||
} | } | ||
}</pre> | |||
</div></div> | </div></div> | ||
{{LSLC|Examples|Meter2Feet}} | {{LSLC|Examples|Meter2Feet}} | ||
Revision as of 02:33, 13 September 2007
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Specification
string Meter2Feet( float meter )
{
string sign = "";
if (meter < 0)
{ // Use only positive value to simplify the maths
sign = "-";
meter = -meter;
}
// Compute feet multiplying by reciprocal value of
// conversion constant 0.3048 for performance reasons
float fraction = meter * 3.2808398950131233595800524934383;
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 != 0) // show fraction value only if not zero
strFraction = " " + (string)((integer)fraction) + "/16" + strFraction;
return (sign + (string)feet + "' " + (string)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 )
{
string sign = "";
if (meter < 0)
{ // Use only positive value to simplify the maths
sign = "-";
meter = -meter;
}
// Compute feet multiplying by reciprocal value of
// conversion constant 0.3048 for performance reasons
float fraction = meter * 3.2808398950131233595800524934383;
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 != 0) // show fraction value only if not zero
strFraction = " " + (string)((integer)fraction) + "/16" + strFraction;
return (sign + (string)feet + "' " + (string)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));
}
}