function VolumeSlice( volume, index, axis ) {

		var slice = this;
		/**
   * @member {Volume} volume The associated volume
   */

		this.volume = volume;
		/**
   * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
   */

		index = index || 0;
		Object.defineProperty( this, 'index', {
			get: function () {

				return index;

			},
			set: function ( value ) {

				index = value;
				slice.geometryNeedsUpdate = true;
				return index;

			}
		} );
		/**
   * @member {String} axis The normal axis
   */

		this.axis = axis || 'z';
		/**
   * @member {HTMLCanvasElement} canvas The final canvas used for the texture
   */

		/**
   * @member {CanvasRenderingContext2D} ctx Context of the canvas
   */

		this.canvas = document.createElement( 'canvas' );
		/**
   * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
   */

		/**
   * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
   */

		this.canvasBuffer = document.createElement( 'canvas' );
		this.updateGeometry();
		var canvasMap = new THREE.Texture( this.canvas );
		canvasMap.minFilter = THREE.LinearFilter;
		canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
		var material = new THREE.MeshBasicMaterial( {
			map: canvasMap,
			side: THREE.DoubleSide,
			transparent: true
		} );
		/**
   * @member {Mesh} mesh The mesh ready to get used in the scene
   */

		this.mesh = new THREE.Mesh( this.geometry, material );
		this.mesh.matrixAutoUpdate = false;
		/**
   * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
   */

		this.geometryNeedsUpdate = true;
		this.repaint();
		/**
   * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
   */

		/**
   * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
   */

		/**
   * @member {Function} sliceAccess Function that allow the slice to access right data
   * @see Volume.extractPerpendicularPlane
   * @param {Number} i The first coordinate
   * @param {Number} j The second coordinate
   * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
   */

	}
This class has been made to hold a slice of a volume data
@class
@param   {Volume} volume    The associated volume
@param   {number}       [index=0] The index of the slice
@param   {string}       [axis='z']      For now only 'x', 'y' or 'z' but later it will change to a normal vector
@see Volume