Difference between revisions of "Meter2Feet"
Jump to navigation
Jump to search
m |
m (<lsl> tag to <source>) |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 6: | Line 6: | ||
Returns a [[String|string]] of metric value '''{{LSL Param|meter}}''' converted to feet/inch in common representation, ie. 3' 4 5/16". | Returns a [[String|string]] of metric value '''{{LSL Param|meter}}''' converted to feet/inch in common representation, ie. 3' 4 5/16". | ||
{| | {| | ||
{{LSL DefineRow|[[float]]|meter|{{#var: | {{LSL DefineRow|[[float]]|meter|{{#var:p_meter_desc}}}} | ||
|} | |} | ||
</div></div> | </div></div> | ||
Line 12: | Line 12: | ||
== Specification == | == Specification == | ||
<div style="padding: 0.5em;"> | <div style="padding: 0.5em;"> | ||
< | <source lang="lsl2"> | ||
string Meter2Feet( float meter ) | 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); | |||
} | } | ||
</ | </source> | ||
</div></div> | </div></div> | ||
Line 36: | Line 45: | ||
<div style="padding: 0.5em;"> | <div style="padding: 0.5em;"> | ||
Trivial example to listen to any chat from the object owner for '''{{LSL Param|meter}}''' values and respond feet/inch value. | Trivial example to listen to any chat from the object owner for '''{{LSL Param|meter}}''' values and respond feet/inch value. | ||
< | <source lang="lsl2"> | ||
// Insert code of Meter2Feet user function here | |||
default | 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)); | |||
} | |||
}</source> | |||
} | |||
</ | |||
</div></div> | </div></div> | ||
{{LSLC|Examples|Meter2Feet}} | {{LSLC|Examples|Meter2Feet}} |
Latest revision as of 16:19, 24 January 2015
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.
// Insert code of Meter2Feet user function here
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));
}
}