浏览代码

Removed Color.getHSV, Color.setHSV and ColorUtils.adjustHSV. Added Color.offsetHSL. Updated some examples...

Mr.doob 12 年之前
父节点
当前提交
40ba1e83b2

+ 8 - 8
examples/misc_controls_pointerlock.html

@@ -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 );
 
 				}
 

+ 0 - 1
examples/webgl_buffergeometry_particles.html

@@ -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;

+ 3 - 3
examples/webgl_custom_attributes.html

@@ -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 );
 

+ 3 - 3
examples/webgl_custom_attributes_lines.html

@@ -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;
 

+ 0 - 23
src/extras/ColorUtils.js

@@ -1,23 +0,0 @@
-/**
- * @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 };

+ 32 - 148
src/math/Color.js

@@ -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;
 
 	},
 

+ 0 - 22
test/unit/math/Color.js

@@ -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
-

+ 0 - 1
utils/build/includes/extras.json

@@ -1,5 +1,4 @@
 [
-	"src/extras/ColorUtils.js",
 	"src/extras/GeometryUtils.js",
 	"src/extras/ImageUtils.js",
 	"src/extras/SceneUtils.js",