_HUE32

From QB64 Phoenix Edition Wiki
Revision as of 19:49, 3 December 2024 by RhoSigma (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The _HUE32 function returns the hue value (HSB colorspace) of a given 32-bit ARGB color.


Syntax

hue# = _HUE32(argbColor~&)


Parameters

  • argbColor~& is the 32-bit ARGB color value to retrieve the hue value from.


Description

  • The value returned is of type DOUBLE in the range 0 to 360 degrees, use CINT to work with integers only.
    • The color wheel starts with red(0), turns to yellow(60), green(120), cyan(180), blue(240), magenta(300) to red(360) again.
    • Mixed colors are represented by values between those 6 base color angles.
Naming differences
  • The HSB (B=Brightness) colorspace is also known as HSV (V=Value) and sometimes even called HSI (I=Intensity), but that's all just different names for the same thing.
  • However, this function is not suitable for the HSL (L=Lightness) colorspace, which is widely used in the Web/CSS.
Precision drawbacks
  • When converting between colorspaces, rounding errors can occur. While the HSB colorspace has virtually infinite precision only limited by the used floating point type, RGB is represented in 8-bit integers (0-255) only, which can lead to quantization errors. In fact, not all colors in HSB can be accurately represented in RGB and vice versa.
  • However, if you limit yourself to only passing integer values to _HSB32 or _HSBA32, just as you do for the respective RGB colorspace functions _RGB32 or _RGBA32, then you can get back that exact values by CINTing the results returned by _HUE32, _SATURATION32 and _BRIGHTNESS32.


Availability


Examples

PRINT "Creating a color using the HSB colorspace..."
c~& = _HSB32(90, 75, 65)

PRINT "_HSB32( 90, 75, 65 ) = _RGB32("; _RED32(c~&); ","; _GREEN32(c~&); ","; _BLUE32(c~&); ")"
PRINT
PRINT "back to HSB values (notice the precision loss)..."
PRINT "Hue.......:"; _HUE32(c~&)
PRINT "Saturation:"; _SATURATION32(c~&)
PRINT "Brightness:"; _BRIGHTNESS32(c~&)
PRINT
PRINT "but with CINT() we can get back the original values..."
PRINT "Hue.......:"; CINT(_HUE32(c~&))
PRINT "Saturation:"; CINT(_SATURATION32(c~&))
PRINT "Brightness:"; CINT(_BRIGHTNESS32(c~&))

END


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link