Difference between revisions of "GradientValue"

From Second Life Wiki
Jump to navigation Jump to search
(some general readability improvements and some for non-widescreens when viewing the page specifically)
m (got rid of back-and-forth-conversion and added intra-wiki links)
Line 2: Line 2:
|func=GradientValue
|func=GradientValue
|mode=user
|mode=user
|p1_type=vector|p1_name=beginColor|p1_desc=The Starting Vector Color
|p1_type=vector|p1_name=startColor|p1_desc=Gradient start color
|p2_type=vector|p2_name=endColor|p2_desc=The Ending Vector Color
|p2_type=vector|p2_name=endColor|p2_desc=Gradient end color
|p3_type=float|p3_name=percentage|p3_desc=The Percentage from beginColor to endColor.
|p3_type=float|p3_name=percentage|p3_desc=Percentage from startColor to endColor in the range (0.0 <{{=}} percentage <{{=}} 100.0)
|func_desc=Returns a vector between '''beginColor''' and '''endColor''' depending on the percentage param.
|return_type=vector|return_text=that is the color vector between {{LSLP|startColor}} and {{LSLP|endColor}} depending upon {{LSLP|percentage}}.
|func_footnote='''Percentage''' goes from 0.0 to 1.0 where 0.5 is 50%.
|func_footnote
|caveats
|spec=
|spec=
<lsl>
<lsl>
//Created by Ugleh Ulrik
// Created by Ugleh Ulrik


vector GradientValue(vector beginColor, vector endColor, float percentage)
vector GradientValue(vector startColor, vector endColor, float percentage)
{
{
     // If vectors are in SL format (1.0 max) then do a multiplication of 255.
     percentage /= 100.0;// percentage to decimal for further use
    // beginColor = beginColor * 255;
    // endColor = endColor * 255;


     float red = beginColor.x + (integer)(percentage * (endColor.x - beginColor.x));
     float red   = startColor.x + percentage*(endColor.x - startColor.x);
     float green = beginColor.y + (integer)(percentage * (endColor.y - beginColor.y));
     float green = startColor.y + percentage*(endColor.y - startColor.y);
     float blue = beginColor.z + (integer)(percentage * (endColor.z - beginColor.z));
     float blue = startColor.z + percentage*(endColor.z - startColor.z);


     return <red,green,blue>/255;
     return <red, green, blue>;
}
}
</lsl>
</lsl>
Note in the return we use /255 to convert a RGB value to an SL Safe Vector. The math assumes it is a normal RGB value during the math, so if it isnt you need to uncomment the multiplication lines.
|examples=
|examples=
<lsl>
<lsl>
//Created by Ugleh Ulrik
//Created by Ugleh Ulrik


vector GradientValue (vector beginColor, vector endColor, float percentage)
vector GradientValue(vector startColor, vector endColor, float percentage)
{
{
     // If vectors are in SL format (1.0 max) then do a multiplication of 255.
     percentage /= 100.0;// percentage to decimal for further use
    // beginColor = beginColor * 255;
    // endColor = endColor * 255;


     float red = beginColor.x + (integer)(percentage * (endColor.x - beginColor.x));
     float red   = startColor.x + percentage*(endColor.x - startColor.x);
     float green = beginColor.y + (integer)(percentage * (endColor.y - beginColor.y));
     float green = startColor.y + percentage*(endColor.y - startColor.y);
     float blue = beginColor.z + (integer)(percentage * (endColor.z - beginColor.z));
     float blue = startColor.z + percentage*(endColor.z - startColor.z);


     return <red, green, blue>/255;
     return <red, green, blue>;
}  
}


default
default
Line 46: Line 42:
     state_entry()
     state_entry()
     {
     {
         // The following vectors are not SL safe, to use SL Safe Vectors you would do
         vector maroon = <0.522, 0.078, 0.294>;
        // vector Red = <1.0, 0.0, 0.0>;
         vector teal  = <0.224, 0.800, 0.800>;
        // vector Blue = <0.0, 0.0, 1.0>;
 
         vector Red = <255.0, 0.0, 0.0>;
        vector Blue = <0.0, 0.0, 255.0>;


         // I use 0.50 which is half, so I am getting the color between Red and Blue, which is Purple.
         vector ColorBetween = GradientValue(maroon, teal, 50.0);
        vector ColorBetween = GradientValue(Red, Blue, 0.50);
//            ColorBetween = <0.373, 0.439, 0.547>


         llSetColor(ColorBetween, ALL_SIDES);
         llSetColor(ColorBetween, ALL_SIDES);
Line 63: Line 55:
|notes
|notes
|also
|also
|also_functions
|also_constants=
|also_articles
{{LSL DefineRow||[[PRIM_COLOR]]}}
{{LSL DefineRow||[[CHANGED_COLOR]]}}
|also_functions=
{{LSL DefineRow||[[llGetColor]]}}
{{LSL DefineRow||[[llGetLinkPrimitiveParams]]}}
{{LSL DefineRow||[[llSetColor]]}}
{{LSL DefineRow||[[llSetLinkColor]]}}
|also_articles=
{{LSL DefineRow||[[Color and Scripting]]}}
{{LSL DefineRow||{{LSLGC|Color}}}}
|cat1=Examples
|cat1=Examples
|cat2=User-Defined_Functions
|cat2=User-Defined_Functions

Revision as of 16:42, 8 January 2014

Summary

Function: vector GradientValue( vector startColor, vector endColor, float percentage );

Returns a vector that is the color vector between startColor and endColor depending upon percentage.

• vector startColor Gradient start color
• vector endColor Gradient end color
• float percentage Percentage from startColor to endColor in the range (0.0 <= percentage <= 100.0)

Specification

<lsl> // Created by Ugleh Ulrik

vector GradientValue(vector startColor, vector endColor, float percentage) {

   percentage /= 100.0;// percentage to decimal for further use
   float red   = startColor.x + percentage*(endColor.x - startColor.x);
   float green = startColor.y + percentage*(endColor.y - startColor.y);
   float blue  = startColor.z + percentage*(endColor.z - startColor.z);
   return <red, green, blue>;

} </lsl>

Examples

<lsl> //Created by Ugleh Ulrik

vector GradientValue(vector startColor, vector endColor, float percentage) {

   percentage /= 100.0;// percentage to decimal for further use
   float red   = startColor.x + percentage*(endColor.x - startColor.x);
   float green = startColor.y + percentage*(endColor.y - startColor.y);
   float blue  = startColor.z + percentage*(endColor.z - startColor.z);
   return <red, green, blue>;

}

default {

   state_entry()
   {
       vector maroon = <0.522, 0.078, 0.294>;
       vector teal   = <0.224, 0.800, 0.800>;
       vector ColorBetween = GradientValue(maroon, teal, 50.0);

// ColorBetween = <0.373, 0.439, 0.547>

       llSetColor(ColorBetween, ALL_SIDES);
   }

}

</lsl>

See Also

Constants

•  PRIM_COLOR
•  CHANGED_COLOR

Functions

•  llGetColor
•  llGetLinkPrimitiveParams
•  llSetColor
•  llSetLinkColor

Articles

•  Color and Scripting
•  Color