getPoint( t, optionalTarget ) {

		// To get accurate point with reference to
		// entire path distance at time t,
		// following has to be done:

		// 1. Length of each sub path have to be known
		// 2. Locate and identify type of curve
		// 3. Get t for the curve
		// 4. Return curve.getPointAt(t')

		const d = t * this.getLength();
		const curveLengths = this.getCurveLengths();
		let i = 0;

		// To think about boundaries points.

		while ( i < curveLengths.length ) {

			if ( curveLengths[ i ] >= d ) {

				const diff = curveLengths[ i ] - d;
				const curve = this.curves[ i ];

				const segmentLength = curve.getLength();
				const u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;

				return curve.getPointAt( u, optionalTarget );

			}

			i ++;

		}

		return null;

		// loop where sum != 0, sum > d , sum+1 <d

	}
This method returns a vector in 2D or 3D space (depending on the curve definitions)
for the given interpolation factor.

@param {number} t - A interpolation factor representing a position on the curve. Must be in the range `[0,1]`.
@param {(Vector2|Vector3)} [optionalTarget] - The optional target vector the result is written to.
@return {?(Vector2|Vector3)} The position on the curve. It can be a 2D or 3D vector depending on the curve definition.