Assembly: Microsoft.Xna.Framework (in microsoft.xna.framework.dll)
The Curve class describes how two float values vary with respect to each other even when you cannot easily define their relationship by a formula; instead, the relationship is defined by an ordered set of value pairs that exemplify it.
You specify a Curve by adding a sequence of CurveKey objects to its Keys collection, each of which must contain at minimum a Position greater than that of the preceding CurveKey, and a corresponding Value. In practice, the Position is almost always used to represent a point in time, while the Value property generally represents a coordinate value corresponding to that point in time.
To represent a time path in two or three dimensions, you can define two or three Curve objects, each of which corresponds to a different spatial axis. Coordinates of a given time's point on the resulting 2D or 3D curve are calculated very efficiently.
The Curve.Evaluate method returns a (coordinate) value corresponding to a (time) position that you specify. The position doesn't have to be contained in any of the CurveKey points, because Curve interpolates between points depending on the CurveKey characteristics you have defined.
Not only is Curve useful for controlling animation and spatial motion, it can also be used anywhere you want to define a response that changes over time. For example, if you are using a button to accelerate a car in your game, you might want to define a complex velocity curve that varies with how long the button is held down to simulate gear shifts.