html/scripts/highchart/highcharts-more.src.js
function (from, to, options) {
		var center = this.center,
			startAngleRad = this.startAngleRad,
			fullRadius = center[2] / 2,
			radii = [
				pick(options.outerRadius, '100%'),
				options.innerRadius,
				pick(options.thickness, 10)
			],
			percentRegex = /%$/,
			start,
			end,
			open,
			isCircular = this.isCircular, // X axis in a polar chart
			ret;
			
		// Polygonal plot bands
		if (this.options.gridLineInterpolation === 'polygon') {
			ret = this.getPlotLinePath(from).concat(this.getPlotLinePath(to, true));
		
		// Circular grid bands
		} else {

			// Keep within bounds
			from = Math.max(from, this.min);
			to = Math.min(to, this.max);
			
			// Plot bands on Y axis (radial axis) - inner and outer radius depend on to and from
			if (!isCircular) {
				radii[0] = this.translate(from);
				radii[1] = this.translate(to);
			}
			
			// Convert percentages to pixel values
			radii = map(radii, function (radius) {
				if (percentRegex.test(radius)) {
					radius = (pInt(radius, 10) * fullRadius) / 100;
				}
				return radius;
			});
			
			// Handle full circle
			if (options.shape === 'circle' || !isCircular) {
				start = -Math.PI / 2;
				end = Math.PI * 1.5;
				open = true;
			} else {
				start = startAngleRad + this.translate(from);
				end = startAngleRad + this.translate(to);
			}
		
		
			ret = this.chart.renderer.symbols.arc(
				this.left + center[0],
				this.top + center[1],
				radii[0],
				radii[0],
				{
					start: Math.min(start, end), // Math is for reversed yAxis (#3606)
					end: Math.max(start, end),
					innerR: pick(radii[1], radii[0] - radii[2]),
					open: open
				}
			);
		}

		return ret;
	}
function (from, to, options) {
		var center = this.center,
			startAngleRad = this.startAngleRad,
			fullRadius = center[2] / 2,
			radii = [
				pick(options.outerRadius, '100%'),
				options.innerRadius,
				pick(options.thickness, 10)
			],
			percentRegex = /%$/,
			start,
			end,
			open,
			isCircular = this.isCircular, // X axis in a polar chart
			ret;
			
		// Polygonal plot bands
		if (this.options.gridLineInterpolation === 'polygon') {
			ret = this.getPlotLinePath(from).concat(this.getPlotLinePath(to, true));
		
		// Circular grid bands
		} else {

			// Keep within bounds
			from = Math.max(from, this.min);
			to = Math.min(to, this.max);
			
			// Plot bands on Y axis (radial axis) - inner and outer radius depend on to and from
			if (!isCircular) {
				radii[0] = this.translate(from);
				radii[1] = this.translate(to);
			}
			
			// Convert percentages to pixel values
			radii = map(radii, function (radius) {
				if (percentRegex.test(radius)) {
					radius = (pInt(radius, 10) * fullRadius) / 100;
				}
				return radius;
			});
			
			// Handle full circle
			if (options.shape === 'circle' || !isCircular) {
				start = -Math.PI / 2;
				end = Math.PI * 1.5;
				open = true;
			} else {
				start = startAngleRad + this.translate(from);
				end = startAngleRad + this.translate(to);
			}
		
		
			ret = this.chart.renderer.symbols.arc(
				this.left + center[0],
				this.top + center[1],
				radii[0],
				radii[0],
				{
					start: Math.min(start, end), // Math is for reversed yAxis (#3606)
					end: Math.max(start, end),
					innerR: pick(radii[1], radii[0] - radii[2]),
					open: open
				}
			);
		}

		return ret;
	}
function ( from , to , options ) { var center = this . center , startAngleRad = this . startAngleRad , fullRadius = center [ 2 ] / 2 , radii = [ pick ( options . outerRadius , '100%' ) , options . innerRadius , pick ( options . thickness , 10 ) ] , percentRegex = / %$ / , start , end , open , isCircular = this . isCircular , // X axis in a polar chart ret ; // Polygonal plot bands if ( this . options . gridLineInterpolation === 'polygon' ) { ret = this . getPlotLinePath ( from ) . concat ( this . getPlotLinePath ( to , true ) ) ; // Circular grid bands } else { // Keep within bounds from = Math . max ( from , this . min ) ; to = Math . min ( to , this . max ) ; // Plot bands on Y axis (radial axis) - inner and outer radius depend on to and from if ( ! isCircular ) { radii [ 0 ] = this . translate ( from ) ; radii [ 1 ] = this . translate ( to ) ; } // Convert percentages to pixel values radii = map ( radii , function ( radius ) { if ( percentRegex . test ( radius ) ) { radius = ( pInt ( radius , 10 ) * fullRadius ) / 100 ; } return radius ; } ) ; // Handle full circle if ( options . shape === 'circle' || ! isCircular ) { start = - Math . PI / 2 ; end = Math . PI * 1.5 ; open = true ; } else { start = startAngleRad + this . translate ( from ) ; end = startAngleRad + this . translate ( to ) ; } ret = this . chart . renderer . symbols . arc ( this . left + center [ 0 ] , this . top + center [ 1 ] , radii [ 0 ] , radii [ 0 ] , { start : Math . min ( start , end ) , // Math is for reversed yAxis (#3606) end : Math . max ( start , end ) , innerR : pick ( radii [ 1 ] , radii [ 0 ] - radii [ 2 ] ) , open : open } ) ; } return ret ; }
Find the path for plot bands along the radial axis
Find the path for plot bands along the radial axis