public function setCurve($curve)
	{
		$available = [
			self::CURVE_TRIANGULAR,
			self::CURVE_QUARTER,
			self::CURVE_HALF_SIN,
			self::CURVE_EXP_SIN,
			self::CURVE_TRIANGULAR,
			self::CURVE_INV_PAR,
			self::CURVE_QUADRATE,
			self::CURVE_CUBE,
			self::CURVE_SQUARE_ROOT,
			self::CURVE_CUBIC_ROOT,
			self::CURVE_PAR,
			self::CURVE_EXP,
			self::CURVE_IQSIN,
			self::CURVE_IHSIN,
			self::CURVE_DOUBLE_EXP_SE,
			self::CURVE_DOUBLE_EXP_SI
		];
		
		if ( ! is_scalar($curve) || ! in_array($curve, $available, false))
		{
			throw new \InvalidArgumentException(sprintf('Wrong curve value for %s, available values are %s',
				(string) $curve, implode(', ', $available)));
		}
		
		$this->curve = (string) $curve;
		
		return $this;
	}