|
@@ -0,0 +1,141 @@
|
|
|
+/**
|
|
|
+ * @author daron1337 / http://daron1337.github.io/
|
|
|
+ */
|
|
|
+
|
|
|
+THREE.Lut = function ( colormap, numberofcolors ) {
|
|
|
+
|
|
|
+ this.lut = new Array();
|
|
|
+ this.map = THREE.ColorMapKeywords[ colormap ];
|
|
|
+ this.n = numberofcolors;
|
|
|
+
|
|
|
+ var step = 1. / this.n;
|
|
|
+
|
|
|
+ for ( var i = 0; i <= 1; i+=step ) {
|
|
|
+
|
|
|
+ for ( var j = 0; j < this.map.length - 1; j++ ) {
|
|
|
+
|
|
|
+ if ( i >= this.map[ j ][ 0 ] && i < this.map[ j+1 ][ 0 ] ) {
|
|
|
+
|
|
|
+ var min = this.map[ j ][ 0 ];
|
|
|
+ var max = this.map[ j+1 ][ 0 ];
|
|
|
+ var color = new THREE.Color( 0xffffff );
|
|
|
+ var minColor = new THREE.Color( 0xffffff ).setHex( this.map[ j ][ 1 ] );
|
|
|
+ var maxColor = new THREE.Color( 0xffffff ).setHex( this.map[ j+1 ][ 1 ] );
|
|
|
+
|
|
|
+ color = minColor.lerp( maxColor, ( i - min ) / ( max - min ) );
|
|
|
+
|
|
|
+ this.lut.push(color);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return this.set( this );
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+THREE.Lut.prototype = {
|
|
|
+
|
|
|
+ constructor: THREE.Lut,
|
|
|
+
|
|
|
+ lut: [], map: [], mapname: 'rainbow' , n: 256, minV: 0, maxV: 1,
|
|
|
+
|
|
|
+ set: function ( value ) {
|
|
|
+
|
|
|
+ if ( value instanceof THREE.Lut ) {
|
|
|
+
|
|
|
+ this.copy( value );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ setMin: function ( min ) {
|
|
|
+
|
|
|
+ this.minV = min;
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ setMax: function ( max ) {
|
|
|
+
|
|
|
+ this.maxV = max;
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ changeNumberOfColors: function ( numberofcolors ) {
|
|
|
+
|
|
|
+ this.n = numberofcolors;
|
|
|
+
|
|
|
+ return new THREE.Lut( this.mapname, this.n );
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ changeColorMap: function ( colormap ) {
|
|
|
+
|
|
|
+ this.mapname = colormap;
|
|
|
+
|
|
|
+ return new THREE.Lut( this.mapname, this.n );
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ copy: function ( lut ) {
|
|
|
+
|
|
|
+ this.lut = lut.lut;
|
|
|
+ this.mapname = lut.mapname;
|
|
|
+ this.map = lut.map;
|
|
|
+ this.n = lut.n;
|
|
|
+ this.minV = lut.minV;
|
|
|
+ this.maxV = lut.maxV;
|
|
|
+
|
|
|
+ return this;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ getColor: function ( alpha ) {
|
|
|
+
|
|
|
+
|
|
|
+ if ( alpha <= this.minV ) {
|
|
|
+
|
|
|
+ alpha = this.minV;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ else if ( alpha >= this.maxV ) {
|
|
|
+
|
|
|
+ alpha = this.maxV;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ alpha = ( alpha - this.minV ) / ( this.maxV - this.minV );
|
|
|
+
|
|
|
+ var colorPosition = Math.round ( alpha * this.n );
|
|
|
+ colorPosition == this.n ? colorPosition -= 1 : colorPosition;
|
|
|
+
|
|
|
+ return this.lut[ colorPosition ];
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ addColorMap: function ( colormapName, arrayOfColors ) {
|
|
|
+
|
|
|
+ THREE.ColorMapKeywords[ colormapName ] = arrayOfColors;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+};
|
|
|
+
|
|
|
+THREE.ColorMapKeywords = {
|
|
|
+
|
|
|
+ "rainbow": [ [ 0.0, '0x0000FF' ], [ 0.2, '0x00FFFF' ], [ 0.5, '0x00FF00' ], [ 0.8, '0xFFFF00'], [1.0, '0xFF0000' ] ],
|
|
|
+ "cooltowarm": [ [ 0.0, '0x3C4EC2' ], [ 0.2, '0x9BBCFF' ], [ 0.5, '0xDCDCDC' ], [ 0.8, '0xF6A385'], [1.0, '0xB40426' ] ],
|
|
|
+ "blackbody" : [ [ 0.0, '0x000000' ], [ 0.2, '0x780000' ], [ 0.5, '0xE63200' ], [ 0.8, '0xFFFF00'], [1.0, '0xFFFFFF' ] ]
|
|
|
+
|
|
|
+}
|