Difference between revisions of "URGB2HSL"
Void Singer (talk | contribs) m (new) |
Void Singer (talk | contribs) m (~correction of stupid mistake) |
||
Line 54: | Line 54: | ||
|content= | |content= | ||
* To convert RGB or HSL values from other software to percentage based, simply divide each value by it's range | * To convert RGB or HSL values from other software to percentage based, simply divide each value by it's range | ||
** | ** range is determined by subtracting the lower bound from the upper bound. | ||
* To convert RGB or HSL percentages to your preferred format, multiply the value by the preferred range. | * To convert RGB or HSL percentages to your preferred format, multiply the value by the preferred range. | ||
}} | }} |
Revision as of 19:28, 16 December 2011
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials | User-Defined Functions | Void's User Page |
User-Defined Function: vector uRGB2HSL( vector vColRGB );
Returns a percentage based vector that is vColRGB converted to a HSL.
- vColRGB: source color as percentages of range.
Code:
- LSO: 502 bytes
- MONO: 1536 bytes
<lsl>vector uRGB2HSL( vector vColRGB ){ vector vColHSL = vColRGB; if (vColHSL.x < vColHSL.y){ vColHSL = <vColHSL.y, vColHSL.x, vColHSL.z>; } if (vColHSL.x < vColHSL.z){ vColHSL = <vColHSL.z, vColHSL.y, vColHSL.x>; }else if (vColHSL.y > vColHSL.z){ vColHSL = <vColHSL.x, vColHSL.z, vColHSL.y>; } vColHSL.z = (vColHSL.x + vColHSL.y) * 0.5; //-- L vColHSL.y = vColHSL.x - vColHSL.y; //-- C if (vColHSL.y){ vColHSL.x = llList2Float( [(vColRGB.y - vColRGB.z) / vColHSL.y + 6.0 * (vColRGB.z > vColRGB.y), (vColRGB.z - vColRGB.x) / vColHSL.y + 2.0, (vColRGB.x - vColRGB.y) / vColHSL.y + 4.0], llListFindList( [vColRGB.x, vColRGB.y, vColRGB.z], (list)vColHSL.x ) ) / 6.0; //-- H vColHSL.y = vColHSL.y / llList2Float( [2.0 * vColHSL.z, 2.0 - 2.0 * vColHSL.z], vColHSL.z > 0.5 ); //-- S }else{ vColHSL.x = vColHSL.y; //-- Greyscale } return vColHSL; } /*//-- Anti-License Text --//*/ /*// Contributed Freely to the Public Domain without limitation. //*/ /*// 2011 (CC0) [ http://creativecommons.org/publicdomain/zero/1.0 ] //*/ /*// Void Singer [ https://wiki.secondlife.com/wiki/User:Void_Singer ] //*/
/*//-- --//*/</lsl>Caveats
- This function does not check input RGB validity. See Articles below
- HSL is kept percentage based here for best compatibility with image mapping
- HSL color vectors may not be set directly
Notes
- To convert RGB or HSL values from other software to percentage based, simply divide each value by it's range
- range is determined by subtracting the lower bound from the upper bound.
- To convert RGB or HSL percentages to your preferred format, multiply the value by the preferred range.