purescript-contrib / purescript-colors

Convert, manipulate, analyze, blend, color scales, color schemes
MIT License
45 stars 11 forks source link

add bezier sample #28

Open safareli opened 7 years ago

safareli commented 7 years ago

I was reading about color scales and color palettes and came across this: https://gka.github.io/palettes https://www.vis4.net/blog/posts/mastering-multi-hued-color-scales/

Author uses this method, which is not robust in sense that it works with only 5 colors. But we can port this to have bezier for arbitrary number of arbitrary dimensional vectors. (this and this might be useful for implementing it)

From API perspective we would have add another function sampleBezier but as colors and cssColorStops refer to sample directly they would need to be updated so we can pass different sampling function as argument.

sharkdp commented 7 years ago

Sounds good!

One option to keep the API backwards-compatible would be to introduce colors' (maybe with a better name) like this:

type InterpolationMethod = Number -> Number

sample' :: InterpolationMethod -> ColorScale -> Number -> Color
sample' = ...

linearInterpolation :: InterpolationMethod
bezierInterpolation :: InterpolationMethod

sample :: ColorScale -> Number -> Color
sample = sample' linearInterpolation

(modulo names for functions and types)

https://www.vis4.net/blog/posts/mastering-multi-hued-color-scales/

(unfortunately does not work at the moment)

safareli commented 7 years ago

(modulo names for functions and types)

?

(unfortunately does not work at the moment)

archive.org :d

http://web.archive.org/web/20170613051029/https://www.vis4.net/blog/posts/mastering-multi-hued-color-scales/

sharkdp commented 7 years ago

(modulo names for functions and types) ?

Meaning: we probably could choose better names

Thanks for the archived link.