|  |  | @ -817,21 +817,13 @@ Graph3d.prototype.setOptions = function (options) { | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * Redraw the Graph. | 
			
		
	
		
			
				
					|  |  |  | * Determine which point drawing method to use | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype.redraw = function() { | 
			
		
	
		
			
				
					|  |  |  | if (this.dataPoints === undefined) { | 
			
		
	
		
			
				
					|  |  |  | throw new Error('Graph data not initialized'); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | this._resizeCanvas(); | 
			
		
	
		
			
				
					|  |  |  | this._resizeCenter(); | 
			
		
	
		
			
				
					|  |  |  | this._redrawSlider(); | 
			
		
	
		
			
				
					|  |  |  | this._redrawClear(); | 
			
		
	
		
			
				
					|  |  |  | this._redrawAxis(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype.getPointDrawingMethod = function() { | 
			
		
	
		
			
				
					|  |  |  | var pointDrawingMethod = undefined; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | switch (this.style) { | 
			
		
	
		
			
				
					|  |  |  | case Graph3d.STYLE.BAR: | 
			
		
	
		
			
				
					|  |  |  | pointDrawingMethod = Graph3d.prototype._redrawBarGraphPoint; | 
			
		
	
	
		
			
				
					|  |  | @ -842,8 +834,34 @@ Graph3d.prototype.redraw = function() { | 
			
		
	
		
			
				
					|  |  |  | case Graph3d.STYLE.BARSIZE: | 
			
		
	
		
			
				
					|  |  |  | pointDrawingMethod = Graph3d.prototype._redrawBarSizeGraphPoint; | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | case Graph3d.STYLE.DOT: | 
			
		
	
		
			
				
					|  |  |  | pointDrawingMethod = Graph3d.prototype._redrawDotGraphPoint; | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | case Graph3d.STYLE.DOT: | 
			
		
	
		
			
				
					|  |  |  | pointDrawingMethod = Graph3d.prototype._redrawDotLineGraphPoint; | 
			
		
	
		
			
				
					|  |  |  | break; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | return pointDrawingMethod; | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * Redraw the Graph. | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype.redraw = function() { | 
			
		
	
		
			
				
					|  |  |  | if (this.dataPoints === undefined) { | 
			
		
	
		
			
				
					|  |  |  | throw new Error('Graph data not initialized'); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | this._resizeCanvas(); | 
			
		
	
		
			
				
					|  |  |  | this._resizeCenter(); | 
			
		
	
		
			
				
					|  |  |  | this._redrawSlider(); | 
			
		
	
		
			
				
					|  |  |  | this._redrawClear(); | 
			
		
	
		
			
				
					|  |  |  | this._redrawAxis(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | var pointDrawingMethod = this.getPointDrawingMethod(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | if (pointDrawingMethod !== undefined) { | 
			
		
	
		
			
				
					|  |  |  | // Use generic drawing loop | 
			
		
	
		
			
				
					|  |  |  | // Pass the method reference here | 
			
		
	
	
		
			
				
					|  |  | @ -1581,7 +1599,7 @@ Graph3d.prototype._redrawDataDot = function() { | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | // ----------------------------------------------------------------------------- | 
			
		
	
		
			
				
					|  |  |  | // Methods for drawing points per graph style. | 
			
		
	
		
			
				
					|  |  |  | // Drawing primitives for the graphs | 
			
		
	
		
			
				
					|  |  |  | // ----------------------------------------------------------------------------- | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
	
		
			
				
					|  |  | @ -1670,19 +1688,43 @@ Graph3d.prototype._redrawBar = function(ctx, point, xWidth, yWidth, color, borde | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype._drawCircle = function(ctx, point, radius, color, borderColor) { | 
			
		
	
		
			
				
					|  |  |  | ctx.lineWidth   = this._getStrokeWidth(point); | 
			
		
	
		
			
				
					|  |  |  | ctx.strokeStyle = borderColor; | 
			
		
	
		
			
				
					|  |  |  | ctx.fillStyle   = color; | 
			
		
	
		
			
				
					|  |  |  | ctx.beginPath(); | 
			
		
	
		
			
				
					|  |  |  | ctx.arc(point.screen.x, point.screen.y, radius, 0, Math.PI*2, true); | 
			
		
	
		
			
				
					|  |  |  | ctx.fill(); | 
			
		
	
		
			
				
					|  |  |  | ctx.stroke(); | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype._getColorsRegular = function(ctx, point) { | 
			
		
	
		
			
				
					|  |  |  | // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 | 
			
		
	
		
			
				
					|  |  |  | var hue         = (1 - (point.point.z - this.zMin) * this.scale.z  / this.verticalRatio) * 240; | 
			
		
	
		
			
				
					|  |  |  | var color       = this._hsv2rgb(hue, 1, 1); | 
			
		
	
		
			
				
					|  |  |  | var borderColor = this._hsv2rgb(hue, 1, 0.8); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | return { | 
			
		
	
		
			
				
					|  |  |  | fill  : color, | 
			
		
	
		
			
				
					|  |  |  | border: borderColor | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | // ----------------------------------------------------------------------------- | 
			
		
	
		
			
				
					|  |  |  | // Methods for drawing points per graph style. | 
			
		
	
		
			
				
					|  |  |  | // ----------------------------------------------------------------------------- | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * Draw single datapoint for graph style 'bar'. | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype._redrawBarGraphPoint = function(ctx, point) { | 
			
		
	
		
			
				
					|  |  |  | var xWidth = this.xBarWidth / 2; | 
			
		
	
		
			
				
					|  |  |  | var yWidth = this.yBarWidth / 2; | 
			
		
	
		
			
				
					|  |  |  | var colors = this._getColorsRegular(ctx, point); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | // calculate Hue from the current value. At zMin the hue is 240, at zMax the hue is 0 | 
			
		
	
		
			
				
					|  |  |  | var hue         = (1 - (point.point.z - this.zMin) * this.scale.z  / this.verticalRatio) * 240; | 
			
		
	
		
			
				
					|  |  |  | var color       = this._hsv2rgb(hue, 1, 1); | 
			
		
	
		
			
				
					|  |  |  | var borderColor = this._hsv2rgb(hue, 1, 0.8); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | this._redrawBar(ctx, point, xWidth, yWidth, color, borderColor); | 
			
		
	
		
			
				
					|  |  |  | this._redrawBar(ctx, point, xWidth, yWidth, colors.fill, colors.border); | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
	
		
			
				
					|  |  | @ -1711,7 +1753,6 @@ Graph3d.prototype._redrawBarSizeGraphPoint = function(ctx, point) { | 
			
		
	
		
			
				
					|  |  |  | var xWidth   = (this.xBarWidth / 2) * (fraction * 0.8 + 0.2); | 
			
		
	
		
			
				
					|  |  |  | var yWidth   = (this.yBarWidth / 2) * (fraction * 0.8 + 0.2); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | // determine color | 
			
		
	
		
			
				
					|  |  |  | var color       = this.dataColor.fill; | 
			
		
	
		
			
				
					|  |  |  | var borderColor = this.dataColor.stroke; | 
			
		
	
	
		
			
				
					|  |  | @ -1720,6 +1761,42 @@ Graph3d.prototype._redrawBarSizeGraphPoint = function(ctx, point) { | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * Draw single datapoint for graph style 'dot'. | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype._redrawDotGraphPoint = function(ctx, point) { | 
			
		
	
		
			
				
					|  |  |  | var size = this._dotSize(); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | var radius; | 
			
		
	
		
			
				
					|  |  |  | if (this.showPerspective) { | 
			
		
	
		
			
				
					|  |  |  | radius = size / -point.trans.z; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | else { | 
			
		
	
		
			
				
					|  |  |  | radius = size * -(this.eye.z / this.camera.getArmLength()); | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  | if (radius < 0) { | 
			
		
	
		
			
				
					|  |  |  | radius = 0; | 
			
		
	
		
			
				
					|  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | var colors = this._getColorsRegular(ctx, point); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | this._drawCircle(ctx, point, radius, colors.fill, colors.border); | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * Draw single datapoint for graph style 'dot-line'. | 
			
		
	
		
			
				
					|  |  |  | */ | 
			
		
	
		
			
				
					|  |  |  | Graph3d.prototype._redrawDotLineGraphPoint = function(ctx, point) { | 
			
		
	
		
			
				
					|  |  |  | // draw a vertical line from the XY-plane to the graph value | 
			
		
	
		
			
				
					|  |  |  | var from = this._convert3Dto2D(point.bottom); | 
			
		
	
		
			
				
					|  |  |  | ctx.lineWidth = 1; | 
			
		
	
		
			
				
					|  |  |  | this._line(ctx, from, point.screen, this.gridColor); | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | this._redrawDotGraphPoint(ctx, point); | 
			
		
	
		
			
				
					|  |  |  | }; | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  |  | 
			
		
	
		
			
				
					|  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  | * Draw all datapoints for currently selected graph style. | 
			
		
	
		
			
				
					|  |  |  | * | 
			
		
	
	
		
			
				
					|  |  |  |