private function computeParabolic( $i, $d ) {
		$q     = $this->heights[$i];
		$qPrev = $this->heights[$i - 1];
		$qNext = $this->heights[$i + 1];

		$n     = $this->positions[$i];
		$nPrev = $this->positions[$i - 1];
		$nNext = $this->positions[$i + 1];

		return ( $q +
			$d / ( $nNext - $nPrev ) *
			(
				( $n - $nPrev + $d ) * ( $qNext - $q ) / ( $nNext - $n ) +
				( $nNext - $n - $d ) * ( $q - $qPrev ) / ( $n - $nPrev )
			)
		);
	}
private function computeParabolic( $i, $d ) {
		$q     = $this->heights[$i];
		$qPrev = $this->heights[$i - 1];
		$qNext = $this->heights[$i + 1];

		$n     = $this->positions[$i];
		$nPrev = $this->positions[$i - 1];
		$nNext = $this->positions[$i + 1];

		return ( $q +
			$d / ( $nNext - $nPrev ) *
			(
				( $n - $nPrev + $d ) * ( $qNext - $q ) / ( $nNext - $n ) +
				( $nNext - $n - $d ) * ( $q - $qPrev ) / ( $n - $nPrev )
			)
		);
	}
private function computeParabolic ( $ i , $ d ) { $ q = $ this -> heights [ $ i ] ; $ qPrev = $ this -> heights [ $ i - 1 ] ; $ qNext = $ this -> heights [ $ i + 1 ] ; $ n = $ this -> positions [ $ i ] ; $ nPrev = $ this -> positions [ $ i - 1 ] ; $ nNext = $ this -> positions [ $ i + 1 ] ; return ( $ q + $ d / ( $ nNext - $ nPrev ) * ( ( $ n - $ nPrev + $ d ) * ( $ qNext - $ q ) / ( $ nNext - $ n ) + ( $ nNext - $ n - $ d ) * ( $ q - $ qPrev ) / ( $ n - $ nPrev ) ) ) ; }
Use piecewise parabolic prediction to predict the ideal
height of a marker.

@param int $i index of marker to adjust
@param int $d always -1 or 1
@return float ideal height of marker
Use piecewise parabolic prediction to predict the ideal height of a marker .