# HKeyframeChannelCurve

## Fields

HPoint | `m_tangent1`
HPoint | `m_tangent2`
float | `m_factor1`
float | `m_factor2`
HPoint * | `control_polygon`
float | `ItemType`
float | `c`
float | `b`
float | `m_curvelength`

## Functions

| `HKeyframeChannelCurve`
| `~HKeyframeChannelCurve`
HKeyframe * | `Clone`
void | `CalculateCurveFactor`
void | `CalculateHermiteTangents`
HPoint | `InterpolateHermiteSpline`
void | `CalculateCurveLength`
void | `DrawTangents`
void | `Interpolate`
void | `Serialize`

## Detailed Description

class HKeyframeChannelCurve : public HKeyframeChannel

  The HKeyframeChannelCurve class is used for spline based interpolation of positional values.

  Subclassed by HKeyframeChannelFollowPath

  Public Functions

  inline HKeyframeChannelCurve(float x = 0, float y = 0, float z = 0)

    Constructs a HKeyframeChannelCurve Object.

  inline virtual ~HKeyframeChannelCurve()
  inline virtual HKeyframe *Clone()

    This method makes an exact copy of the current HKeyframeChannelCurve and returns a pointer to the newly created HKeyframeChannelCurve object.

    Returns

      A pointer to the newly created HKeyframeChannelCurve object.

  void CalculateCurveFactor(HBhvTimeline *timeline, int keyframe)

    This method is a helper function for CalculateHermiteTangents(). Call this method to precalculate curve factors before calling CalculateHermiteTangents().

    Parameters

      - timeline – Timeline array necessary to calculate correct curve factors

      - keyframe – Current Keyframe

  void CalculateHermiteTangents(HPoint p0, HPoint p2, HPoint p3, float a = 0.5f)

    Use this method to precalculate tangents for the hermite spline. This method can be usef as a helper function for interpolation.

    Parameters

      - p0 – The first point for tangent calculation.

      - p2 – The third point for tangent calculation.

      - p3 – The fourth Point for tangent calculation.

      - a – Constant for hermite spline

  HPoint InterpolateHermiteSpline(float fraction, HPoint p1, HPoint p2)

    This method uses the given frame and control points to interpolate a Hermite spline.

    Parameters

      - fraction – Distance between the first and second control point.

      - p1 – The first control point.

      - p2 – The second control point.

    Returns

      The interpolated result.

  void CalculateCurveLength(HPoint p2)

    This method calculates the length of this curve between this keyframe and a given point.

    Parameters

      p2 – The point to calculate the length with.

  void DrawTangents(HPoint p2)

    This method creates a visualization of the tangents calculated for this curve by drawing them into the scene.

    Parameters

      p2 – The second point to calculate tangents from.

  virtual void Interpolate(HKeyframeChannel **posarray, int keyframe, float fraction, int length, HPoint &res)

    Calculates the interpolation between this keyframe and the next keyframe.

    Parameters

      - posarray – The array of HKeyframeChannel objects.

      - keyframe – They current keyframe number.

      - fraction – The fraction from this keyframe to next.

      - length – The number of entries in the keyframe array.

      - res – Returns the interpolation result.

  virtual void Serialize(HUtilityXMLTag *xmlgen)

    Writes XML data to a buffer.

  Public Members

  HPoint m_tangent1

    The first tangent.

  HPoint m_tangent2

    The second tangent.

  float m_factor1

    For internal use only.

  float m_factor2

    For internal use only.

  HPoint *control_polygon

    For internal use only.

  float ItemType

    For internal use only.

  float c

    For internal use only.

  float b

    For internal use only.

  float m_curvelength

    For internal use only.