fixed sorting issues for the HSV domain, also made helper subroutine out of hue, sat, val
This commit is contained in:
parent
74c0751819
commit
9457630531
2 changed files with 40 additions and 25 deletions
|
|
@ -69,7 +69,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p id="footer">
|
<p id="footer">
|
||||||
This experiment in awesome-ness is brought to you by <a href="http://twitter.com/ryanmcgrath" title="Ryan McGrath">Ryan McGrath</a>,
|
Experiment in color theme generator <br> brought to you by <a href="http://twitter.com/ryanmcgrath" title="Ryan McGrath">Ryan McGrath</a> & <a href="http://twitter.com/enotionz" title="Dominick Pham">Dominick Pham</a>,
|
||||||
with some help from others.
|
with some help from others.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
||||||
63
js/franz.js
63
js/franz.js
|
|
@ -71,34 +71,49 @@ var franz = {
|
||||||
var min, max, delta;
|
var min, max, delta;
|
||||||
|
|
||||||
for(var i = 0; i < franz.alpha.length; i++) {
|
for(var i = 0; i < franz.alpha.length; i++) {
|
||||||
|
franz.val[i] = franz.getValHSV(franz.red[i],franz.green[i],franz.blue[i]);
|
||||||
min = Math.min(franz.red[i],Math.min(franz.green[i],franz.blue[i]));
|
franz.sat[i] = franz.getSatHSV(franz.red[i],franz.green[i],franz.blue[i]);
|
||||||
max = Math.max(franz.red[i],Math.max(franz.green[i],franz.blue[i]));
|
franz.hue[i] = franz.getHueHSV(franz.red[i],franz.green[i],franz.blue[i]);
|
||||||
franz.val[i] = max;
|
}
|
||||||
console.log(franz.val[i]);
|
|
||||||
|
return false
|
||||||
delta = max - min;
|
},
|
||||||
|
|
||||||
if (max != 0)
|
getValHSV: function(red, green, blue) {
|
||||||
franz.sat[i] = delta / max;
|
return Math.max(red,Math.max(green,blue));
|
||||||
else {
|
},
|
||||||
// max val is 0, you have black
|
getSatHSV: function(red, green, blue) {
|
||||||
franz.sat[i] = 0;
|
var min, max, delta, sat;
|
||||||
franz.hue[i] = -1;
|
|
||||||
return;
|
min = Math.min(red,Math.min(green,blue));
|
||||||
}
|
max = Math.max(red,Math.max(green,blue));
|
||||||
|
delta = max - min;
|
||||||
if (franz.red[i] == max)
|
sat = delta / max;
|
||||||
franz.hue[i] = ( franz.green[i] - franz.blue[i]) / delta; //between yellow & magenta
|
|
||||||
else if (franz.green[i] == max)
|
return sat;
|
||||||
franz.hue[i] = 2 + (franz.blue[i] - franz.red[i]) / delta; //between cyan & yellow
|
},
|
||||||
|
getHueHSV: function(red,green,blue) {
|
||||||
|
var min, max, delta, hue;
|
||||||
|
|
||||||
|
min = Math.min(red,Math.min(green,blue));
|
||||||
|
max = Math.max(red,Math.max(green,blue));
|
||||||
|
delta = max - min;
|
||||||
|
if (max == 0)
|
||||||
|
return -1;
|
||||||
|
else {
|
||||||
|
if (red == max)
|
||||||
|
hue = ( green - blue) / delta; //between yellow & magenta
|
||||||
|
else if (green == max)
|
||||||
|
hue = 2 + (blue - red) / delta; //between cyan & yellow
|
||||||
else
|
else
|
||||||
franz.hue[i] = 4 + (franz.red[i] - franz.green[i]) / delta; //between magenta & cyan
|
hue = 4 + (red - green) / delta; //between magenta & cyan
|
||||||
|
|
||||||
// hue degrees
|
// hue degrees
|
||||||
franz.hue[i] = franz.hue[i] * 60;
|
hue = hue * 60;
|
||||||
if (franz.hue[i] < 0) franz.hue[i] += 360;
|
if (hue < 0) hue += 360;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return hue;
|
||||||
},
|
},
|
||||||
|
|
||||||
displayHue: function() {
|
displayHue: function() {
|
||||||
|
|
|
||||||
Reference in a new issue