Convert standard HCL hue to warped (virtual) hue by colorjam preset

h2hw(
  h,
  h1 = NULL,
  h2 = NULL,
  direction = 1,
  preset = getOption("colorjam.preset", "custom"),
  ...
)

Arguments

h

numeric vector of color hues between 0 and 360. These hues do not need to be in sequential order.

h1, h2

numeric vector of color hues, which by default are defined in h2hwOptions(), but allowed here in cases where the global options should be overridden but not modified.

direction

numeric indicating the direction of h1 HCL hue relative to h2 virtual hue:

  • 1 indicates both are increasing

  • -1 indicates h1 and h2 differ in direction

preset

character string with a named preset from colorjam_presets(), for which the h1,h2,direction values will be obtained. When preset="custom" then h1 and h2 must be provided.

Value

numeric vector of hue values after applying the hue warp operation.

Details

This function is intended to convert from a vector of hue values to the warped hues defined by colorjam_presets() for the given preset.

Each preset defines a custom set of color hues, for example:

  • converting RGB to RYB color wheel

  • converting RGB to the customized dichromat color wheel

  • reversing a color wheel

Note the input hue uses the standard HCL color hue as defined by colorspace::polarLUV(), with values ranging between 0 and 360. By this standard, 12.2 is defined as red, 120 is defined as green, and 245 is defined as blue.

Examples

## Yellow when using an RGB color wheel is 60 degrees,
## but on an RYB color wheel is 120 degrees.
h2hw(60, preset="ryb");
#> [1] 120

# RGB colors are convenient, but are not ideal especially when blending
# colors. Note that blue and yellow have hues that differ by exactly 180
# degrees, meaning a hue average is as likely to be purple as green.
huesBY <- jamba::col2hcl(c("blue", "yellow"))["H",];
huesBY;
#> [1] 265.87273  85.87275

warpedHuesBY <- h2hw(huesBY, preset="ryb");
warpedHuesBY;
#> [1] 263.5207 145.8727