# 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 const *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.

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your Docs generative AI assistant. Ask me anything about HOOPS Visualize 3DF or choose a sample question below to start a conversation:

What is HOOPS Visualize 3DF?
What are the latest release notes for HOOPS Visualize 3DF?
How do I start evaluating HOOPS Visualize 3DF?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...