#pragma once
#define STUFF_SPLINE_HPP

#if !defined(STUFF_STUFF_HPP)
	#include <Stuff\Stuff.hpp>
#endif

#if !defined(STUFF_AFFINEMATRIX_HPP)
	#include <Stuff\AffineMatrix.hpp>
#endif

namespace Stuff {

	class CubicCurve {
	public:
		CubicCurve(					// Hermite form
			const Point3D& p1,
			const Vector3D& r1,
			const Point3D& p4,
			const Vector3D& r4
		);
		CubicCurve(					// Bezier form
			const Point3D& p1,
			const Point3D& p2,
			const Point3D& p3,
			const Point3D& p4
		);

		void
			Evaluate(
				Scalar t,
				Point3D *p,
				Vector3D *v
			);

		void
      	TestInstance() const
				{}

	protected:
		AffineMatrix4D
			basisMatrix;
	};

}
