thomasp85 / farver

High Performance Colourspace Manipulation in R
https://farver.data-imaginist.com
Other
125 stars 14 forks source link

black turn NAN when converting from luv to rgb space #12

Closed EmilHvitfeldt closed 4 years ago

EmilHvitfeldt commented 4 years ago

It appears that when a color is converted from luv space and has an l value of 0 it returns NaN or other weird things.

library(farver)

(black <- t(col2rgb(grey.colors(5, 0, 0.01))))
#>      red green blue
#> [1,]   0     0    0
#> [2,]   1     1    1
#> [3,]   2     2    2
#> [4,]   2     2    2
#> [5,]   3     3    3

(black_luv <- convert_colour(black, "rgb", "luv"))
#>              l             u            v
#> [1,] 0.0000000  0.000000e+00 0.000000e+00
#> [2,] 0.2741748 -5.504162e-08 3.663056e-08
#> [3,] 0.5483497 -1.100832e-07 7.326111e-08
#> [4,] 0.5483497 -1.100832e-07 7.326111e-08
#> [5,] 0.8225245 -1.651249e-07 1.098917e-07

(convert_colour(black_luv, "luv", "hsv"))
#>             h            s           v
#> [1,]   0.0000 0.000000e+00         NaN
#> [2,] 137.2808 2.465629e-07 0.003921569
#> [3,] 137.2808 2.465629e-07 0.007843138
#> [4,] 137.2808 2.465629e-07 0.007843138
#> [5,] 137.2808 2.465629e-07 0.011764708

black_luv[, 1] <- 0

(convert_colour(black_luv, "luv", "rgb"))
#>        r   g   b
#> [1,] NaN NaN NaN
#> [2,] NaN NaN NaN
#> [3,] NaN NaN NaN
#> [4,] NaN NaN NaN
#> [5,] NaN NaN NaN

(convert_colour(black_luv, "luv", "hsv"))
#>        h s   v
#> [1,] NaN 0 NaN
#> [2,] NaN 0 NaN
#> [3,] NaN 0 NaN
#> [4,] NaN 0 NaN
#> [5,] NaN 0 NaN

Created on 2019-11-08 by the reprex package (v0.3.0)

Session info ``` r devtools::session_info() #> ─ Session info ────────────────────────────────────────────────────────── #> setting value #> version R version 3.6.0 (2019-04-26) #> os macOS Mojave 10.14.6 #> system x86_64, darwin15.6.0 #> ui X11 #> language (EN) #> collate en_US.UTF-8 #> ctype en_US.UTF-8 #> tz America/Los_Angeles #> date 2019-11-08 #> #> ─ Packages ────────────────────────────────────────────────────────────── #> package * version date lib #> assertthat 0.2.1 2019-03-21 [1] #> backports 1.1.5 2019-10-02 [1] #> callr 3.3.2 2019-09-22 [1] #> cli 1.9.9.9000 2019-10-04 [1] #> crayon 1.3.4 2017-09-16 [1] #> desc 1.2.0 2018-05-01 [1] #> devtools 2.2.1 2019-09-24 [1] #> digest 0.6.22 2019-10-21 [1] #> ellipsis 0.3.0 2019-09-20 [1] #> evaluate 0.14 2019-05-28 [1] #> fansi 0.4.0 2018-10-05 [1] #> farver * 1.1.0.9999 2019-11-08 [1] #> fs 1.3.1 2019-05-06 [1] #> glue 1.3.1 2019-03-12 [1] #> highr 0.8 2019-03-20 [1] #> hms 0.5.2 2019-10-30 [1] #> htmltools 0.4.0 2019-10-04 [1] #> knitr 1.25 2019-09-18 [1] #> magrittr 1.5 2014-11-22 [1] #> memoise 1.1.0 2017-04-21 [1] #> pillar 1.4.2 2019-06-29 [1] #> pkgbuild 1.0.6 2019-10-09 [1] #> pkgconfig 2.0.3 2019-09-22 [1] #> pkgload 1.0.2 2018-10-29 [1] #> prettyunits 1.0.2 2015-07-13 [1] #> processx 3.4.1 2019-07-18 [1] #> progress 1.2.2 2019-05-16 [1] #> ps 1.3.0 2018-12-21 [1] #> R6 2.4.0 2019-02-14 [1] #> Rcpp 1.0.2 2019-07-25 [1] #> remotes 2.1.0 2019-06-24 [1] #> rlang 0.4.1 2019-10-24 [1] #> rmarkdown 1.16 2019-10-01 [1] #> rprojroot 1.3-2 2018-01-03 [1] #> sessioninfo 1.1.1 2018-11-05 [1] #> stringi 1.4.3 2019-03-12 [1] #> stringr 1.4.0.9000 2019-10-15 [1] #> testthat 2.2.1 2019-07-25 [1] #> tibble 2.1.3 2019-06-06 [1] #> usethis 1.5.1.9000 2019-08-25 [1] #> vctrs 0.2.0.9007 2019-10-22 [1] #> withr 2.1.2.9000 2019-10-04 [1] #> xfun 0.10 2019-10-01 [1] #> yaml 2.2.0 2018-07-25 [1] #> zeallot 0.1.0 2018-01-28 [1] #> source #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> Github (r-lib/cli@ad6410a) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> Github (thomasp85/farver@b8530de) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> Github (tidyverse/stringr@03a7ebe) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> Github (r-lib/usethis@bcef417) #> Github (r-lib/vctrs@5bd3a27) #> Github (r-lib/withr@07bfc68) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> CRAN (R 3.6.0) #> #> [1] /Library/Frameworks/R.framework/Versions/3.6/Resources/library ```
thomasp85 commented 4 years ago

Thanks for reporting... must be a divide-by-zero somewhere in the code I'd guess