提交 40ba1e83 编写于 作者: M Mr.doob

Removed Color.getHSV, Color.setHSV and ColorUtils.adjustHSV. Added...

Removed Color.getHSV, Color.setHSV and ColorUtils.adjustHSV. Added Color.offsetHSL. Updated some examples...
上级 7bb329b9
......@@ -212,10 +212,10 @@
for ( var i = 0, l = geometry.faces.length; i < l; i ++ ) {
var face = geometry.faces[ i ];
face.vertexColors[ 0 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 1 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 2 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 3 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 0 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
face.vertexColors[ 1 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
face.vertexColors[ 2 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
face.vertexColors[ 3 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
}
......@@ -231,10 +231,10 @@
for ( var i = 0, l = geometry.faces.length; i < l; i ++ ) {
var face = geometry.faces[ i ];
face.vertexColors[ 0 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 1 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 2 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 3 ] = new THREE.Color().setHSV( Math.random() * 0.2 + 0.5, Math.random() * 0.5, 1 );
face.vertexColors[ 0 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
face.vertexColors[ 1 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
face.vertexColors[ 2 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
face.vertexColors[ 3 ] = new THREE.Color().setHSL( Math.random() * 0.2 + 0.5, 0.5, Math.random() * 0.25 + 0.75 );
}
......
......@@ -110,7 +110,6 @@
var vy = ( y / n ) + 0.5;
var vz = ( z / n ) + 0.5;
//color.setHSV( 0.5 + 0.5 * vx, 0.25 + 0.75 * vy, 0.25 + 0.75 * vz );
color.setRGB( vx, vy, vz );
colors[ i ] = color.r;
......
......@@ -140,7 +140,7 @@
var vertices = sphere.geometry.vertices;
var values = attributes.displacement.value;
for( var v = 0; v < vertices.length; v++ ) {
for ( var v = 0; v < vertices.length; v++ ) {
values[ v ] = 0;
noise[ v ] = Math.random() * 5;
......@@ -191,9 +191,9 @@
sphere.rotation.y = sphere.rotation.z = 0.01 * time;
uniforms.amplitude.value = 2.5 * Math.sin( sphere.rotation.y * 0.125 );
THREE.ColorUtils.adjustHSV( uniforms.color.value, 0.0005, 0, 0 );
uniforms.color.value.offsetHSL( 0.0005, 0, 0 );
for( var i = 0; i < attributes.displacement.value.length; i ++ ) {
for ( var i = 0; i < attributes.displacement.value.length; i ++ ) {
attributes.displacement.value[ i ] = Math.sin( 0.1 * i + time );
......
......@@ -174,10 +174,10 @@
for( var v = 0; v < vertices.length; v ++ ) {
displacement[ v ] = new THREE.Vector3( 0, 0, 0 );
displacement[ v ] = new THREE.Vector3();
color[ v ] = new THREE.Color( 0xffffff );
color[ v ].setHSV( v / vertices.length, 0.9, 0.9 );
color[ v ].setHSL( v / vertices.length, 0.5, 0.5 );
}
......@@ -227,7 +227,7 @@
object.rotation.y = 0.25 * time;
uniforms.amplitude.value = 0.5 * Math.sin( 0.5 * time );
THREE.ColorUtils.adjustHSV( uniforms.color.value, 0.0005, 0, 0 );
uniforms.color.value.offsetHSL( 0.0005, 0, 0 );
var nx, ny, nz, value;
......
/**
* @author alteredq / http://alteredqualia.com/
*/
THREE.ColorUtils = {
adjustHSV : function ( color, h, s, v ) {
var hsv = THREE.ColorUtils.__hsv;
color.getHSV( hsv );
hsv.h = THREE.Math.clamp( hsv.h + h, 0, 1 );
hsv.s = THREE.Math.clamp( hsv.s + s, 0, 1 );
hsv.v = THREE.Math.clamp( hsv.v + v, 0, 1 );
color.setHSV( hsv.h, hsv.s, hsv.v );
}
};
THREE.ColorUtils.__hsv = { h: 0, s: 0, v: 0 };
\ No newline at end of file
......@@ -86,69 +86,6 @@ THREE.extend( THREE.Color.prototype, {
},
setHSV: function ( h, s, v ) {
// based on MochiKit implementation by Bob Ippolito
// h,s,v ranges are < 0.0 - 1.0 >
var i, f, p, q, t;
if ( v === 0 ) {
this.r = this.g = this.b = 0;
} else {
i = Math.floor( h * 6 );
f = ( h * 6 ) - i;
p = v * ( 1 - s );
q = v * ( 1 - ( s * f ) );
t = v * ( 1 - ( s * ( 1 - f ) ) );
if ( i === 0 ) {
this.r = v;
this.g = t;
this.b = p;
} else if ( i === 1 ) {
this.r = q;
this.g = v;
this.b = p;
} else if ( i === 2 ) {
this.r = p;
this.g = v;
this.b = t;
} else if ( i === 3 ) {
this.r = p;
this.g = q;
this.b = v;
} else if ( i === 4 ) {
this.r = t;
this.g = p;
this.b = v;
} else if ( i === 5 ) {
this.r = v;
this.g = p;
this.b = q;
}
}
return this;
},
setStyle: function ( style ) {
// rgb(255,0,0)
......@@ -286,117 +223,64 @@ THREE.extend( THREE.Color.prototype, {
},
getHSL: function ( hsl ) {
getHSL: function () {
// h,s,l ranges are in 0.0 - 1.0
var hsl = { h: 0, s: 0, l: 0 };
if ( hsl === undefined ) hsl = { h: 0, s: 0, l: 0 };
return function () {
var r = this.r, g = this.g, b = this.b;
// h,s,l ranges are in 0.0 - 1.0
var max = Math.max( r, g, b );
var min = Math.min( r, g, b );
var r = this.r, g = this.g, b = this.b;
var hue, saturation;
var lightness = ( min + max ) / 2.0;
var max = Math.max( r, g, b );
var min = Math.min( r, g, b );
if ( min === max ) {
var hue, saturation;
var lightness = ( min + max ) / 2.0;
hue = 0;
saturation = 0;
if ( min === max ) {
} else {
hue = 0;
saturation = 0;
var delta = max - min;
} else {
saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );
var delta = max - min;
switch ( max ) {
saturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );
case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;
case g: hue = ( b - r ) / delta + 2; break;
case b: hue = ( r - g ) / delta + 4; break;
switch ( max ) {
}
hue /= 6;
}
hsl.h = hue;
hsl.s = saturation;
hsl.l = lightness;
return hsl;
},
getHSV: function ( hsv ) {
// based on MochiKit implementation by Bob Ippolito
// h,s,v ranges are < 0.0 - 1.0 >
var r = this.r;
var g = this.g;
var b = this.b;
var max = Math.max( Math.max( r, g ), b );
var min = Math.min( Math.min( r, g ), b );
var hue;
var saturation;
var value = max;
if ( min === max ) {
hue = 0;
saturation = 0;
case r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;
case g: hue = ( b - r ) / delta + 2; break;
case b: hue = ( r - g ) / delta + 4; break;
} else {
var delta = ( max - min );
saturation = delta / max;
if ( r === max ) {
hue = ( g - b ) / delta;
}
} else if ( g === max ) {
hue /= 6;
hue = 2 + ( ( b - r ) / delta );
} else {
hue = 4 + ( ( r - g ) / delta );
}
hue /= 6;
hsl.h = hue;
hsl.s = saturation;
hsl.l = lightness;
if ( hue < 0 ) {
return hsl;
hue += 1;
};
}
}(),
if ( hue > 1 ) {
offsetHSL: function ( h, s, l ) {
hue -= 1;
var hsl = this.getHSL();
}
hsl.h += h; hsl.s += s; hsl.l += l;
}
if ( hsv === undefined ) {
this.setHSL( hsl.h, hsl.s, hsl.l );
hsv = { h: 0, s: 0, v: 0 };
}
hsv.h = hue;
hsv.s = saturation;
hsv.v = value;
return hsv;
return this;
},
......
......@@ -180,25 +180,3 @@ test( "setHSL", function () {
ok( hsl.s == 1.00, "saturation: " + hsl.s );
ok( hsl.l == 0.25, "lightness: " + hsl.l );
});
test( "getHSV", function(){
var c = new THREE.Color('maroon');
var hsv = c.getHSV();
ok( hsv.h == 0, "hue: " + hsv.h );
ok( hsv.s == 1, "saturation: " + hsv.s );
ok( (Math.round(parseFloat(hsv.v)*100)/100) == 0.5,
"value: " + hsv.v );
});
test( "setHSV", function(){
var c = new THREE.Color();
c.setHSV(0, 1, 1);
var hsv = c.getHSV();
ok( hsv.h == 0, "hue: " + hsv.h );
ok( hsv.s == 1, "saturation: " + hsv.s );
ok( hsv.v == 1, "value: " + hsv.v );
});
// xxx todo more hsv tests
[
"src/extras/ColorUtils.js",
"src/extras/GeometryUtils.js",
"src/extras/ImageUtils.js",
"src/extras/SceneUtils.js",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册