## ----echo = FALSE-------------------------------------------------------------
knitr::opts_chunk$set(collapse = TRUE, comment = "#>")

## ----basic_usage--------------------------------------------------------------
library(qualpalr)
pal <- qualpal(n = 5, list(h = c(0, 360), s = c(0.4, 0.6), l = c(0.5, 0.85)))

# Adapt the color space to deuteranomaly of severity 0.7
pal <- qualpal(n = 5, colorspace = "pretty", cvd = "deutan", cvd_severity = 0.7)

## ----qualpal_list-------------------------------------------------------------
pal

## ----fig.show='hold'----------------------------------------------------------
# Multidimensional scaling plot
plot(pal)

# Pairs plot in the Lab color space
pairs(pal, colorspace = "DIN99d")

## ----map, fig.width=5, fig.height=5-------------------------------------------
library(maps)
map("france", fill = TRUE, col = pal$hex, mar = c(0, 0, 0, 0))

## ----details_input, echo=FALSE------------------------------------------------
options(rgl.useNULL = TRUE)
library(rgl)

# Set up color subspace as in qualpal()
h <- c(-200, 120)
s <- c(0.3, 0.8)
l <- c(0.4, 0.9)

# Generate a quasi-random tour sequence
rnd <- randtoolbox::sobol(1000, dim = 3, scrambling = 2)

# Convert random sequence to specified color space
scale_runif <- function(x, new_min, new_max) {
  (new_max - new_min) * (x - 1) + new_max
}

rnd[, 2] <- sqrt(rnd[, 2])
H <- scale_runif(rnd[, 1], min(h), max(h))
S <- scale_runif(rnd[, 2], min(s), max(s))
L <- scale_runif(rnd[, 3], min(l), max(l))
# S <- sqrt(S) # adjust to the fact that we're sampling from a cylinder

HSL <- cbind(H, S, L)
HSL[HSL[, 1] < 0, 1] <- HSL[HSL[, 1] < 0, 1] + 360

# Set up variables to produce the HSL cylinder
x <- S * cos(H * pi / 180)
y <- S * sin(H * pi / 180)

# Convert to RGB to enable coloring
RGB <- qualpalr:::HSL_RGB(HSL)

plot3d(cbind(x, y, L), col = rgb(RGB), main = "HSL")
rglwidget()

## ----RGB_space, echo=FALSE----------------------------------------------------
plot3d(RGB, col = rgb(RGB), main = "RGB")
rglwidget()

## ----DIN_space, echo=FALSE----------------------------------------------------
XYZ <- qualpalr:::sRGB_XYZ(RGB)
DIN99d <- qualpalr:::XYZ_DIN99d(XYZ)

plot3d(DIN99d, col = rgb(RGB), main = "DIN99d")
rglwidget()

## ----selected_points, echo=FALSE----------------------------------------------
pal <- qualpal(5, list(h = c(-200, 120), s = c(0.3, 0.8), l = c(0.4, 0.9)))
plot3d(DIN99d, col = rgb(RGB), main = "DIN99d", alpha = 0.1)
plot3d(pal$DIN99d, col = pal$hex, main = "DIN99d", add = TRUE, size = 5)
rglwidget()

