Difference between revisions of "Meter2Feet"

From Second Life Wiki
Jump to navigation Jump to search
(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.)
m
Line 22: Line 22:
     }
     }
      
      
     float fraction = meter * 3.2808398950131233595800524934383;    // Compute feet multiplying by reciprocal value  
     // Compute feet multiplying by reciprocal value of
     integer feet = (integer)fraction;      // of conversion constant 0.3048 for performance reasons
     // 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:
     }
     }
      
      
     float fraction = meter * 3.2808398950131233595800524934383;    // Compute feet multiplying by reciprocal value  
     // Compute feet multiplying by reciprocal value of
     integer feet = (integer)fraction;      // of conversion constant 0.3048 for performance reasons
     // 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>
}</pre>
</div></div>
</div></div>
{{LSLC|Examples|Meter2Feet}}
{{LSLC|Examples|Meter2Feet}}

Revision as of 02:33, 13 September 2007

Function: string Meter2Feet(float meter);

Returns a string of metric value meter converted to feet/inch in common representation, ie. 3' 4 5/16".

• float meter distance in meters, any valid float, positive or negative

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));
    }
}