## Friday, October 30, 2015

### Techniques: Generating colors with HSL and HSV/HSB

Some definitions first:

HSL: Hue Saturation Lightness
HSV: Hue Saturation Value
HSB: Hue Saturation Brightness

HSL != HSV
HSV = HSB (so forget all about the name HSB)

The difference between the two is how the represent the black and white, but they have in common how the represent the actual color referred as hue.

So the colors HSL(h, s1, l) and HSV(h, s2, v) have the same base color in a amount defined by the s1 and s2 and some amount of black or white defined by the l and v.

The point is that these representations can be used in scenarios where classic RGB can't do the work.
• Imagine a layout (for a site, an application or even a poster) where all elements are darker and brighter versions of the base color.

All these colors will be HS?(h, a, b) where h shared constant and a, b some values.

So if h is a variable of some kind, we can change the whole color scheme by adjusting a single value.

• Imagine a need for a array of colors which have the same saturation - lightness - brightness and change smoothly (for animations, transitions or fractal coloring).

We can gererate these colors using the formula HS?(i*step, a, b) where i the index of the items in the array and step, a, b some values.

done_

## Wednesday, October 28, 2015

### Code: Normalize overflowing values

To normalize values like degrees where the main range is [0, 360) but all other values are accepted too the obvious is:

`value = value % 360`

Which  in case of a [min, max) range is:

`value = (value - min) % (max - min) + min`

But when the value is a negative number or even smaller than the min we get wrong result.
What we can do is "overflow" the value one more time:

`value = ((value % 360) + 360) % 360`

Which  in case of our generic [min, max) range is:

`value = ((value - min) % (max - min) + max - min) % (max - min) + min`

In an extended form:

```len = max - min
value = ((value - min) % len + len) % len + min```

done_

## Monday, October 26, 2015

### Java: Set the Clipboard

The easiest way to make the Clipboard contain a string is:

```public void setClipboard(String text) {
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection = new StringSelection(text);
c.setContents(selection, selection);
}```

done_