# exspline(3alleg4) [netbsd man page]

```exspline(3alleg4)						  Allegro manual						 exspline(3alleg4)

NAME
exspline - Constructing smooth movement paths from spline curves. Allegro game programming library.

SYNOPSIS
#include <allegro.h>

Example exspline

DESCRIPTION
This  program  demonstrates the use of spline curves to create smooth paths connecting a number of node points. This can be useful for con-
structing realistic motion and animations.

The technique is to connect the series of guide points p1..p(n) with spline curves from p1-p2, p2-p3, etc. Each	spline	must  pass  though
both of its guide points, so they must be used as the first and fourth of the spline control points. The fun bit is coming up with sensible
values for the second and third spline control points, such that the spline segments will have equal gradients where they meet. I  came	up
with the following solution:

For  each  guide point p(n), calculate the desired tangent to the curve at that point. I took this to be the vector p(n-1) -> p(n+1), which
can easily be calculated with the inverse tangent function, and gives decent looking results. One implication of this  is  that	two  dummy
guide points are needed at each end of the curve, which are used in the tangent calculations but not connected to the set of splines.

Having  got these tangents, it becomes fairly easy to calculate the spline control points. For a spline between guide points p(a) and p(b),
the second control point should lie along the positive tangent from p(a), and the third control point should lie along the negative tangent
from p(b). How far they are placed along these tangents controls the shape of the curve: I found that applying a 'curviness' scaling factor
to the distance between p(a) and p(b) works well.

One thing to note about splines is that the generated points are not all equidistant. Instead they tend to bunch up nearer to the  ends	of
the  spline,  which means you will need to apply some fudges to get an object to move at a constant speed. On the other hand, in situations
where the curve has a noticeable change of direction at each guide point, the effect can be quite nice because it  makes  the  object  slow
down for the curve.

END_OF_MAIN(3alleg4),  SCREEN_W(3alleg4),  acquire_screen(3alleg4),  alert(3alleg4),  allegro_error(3alleg4),  allegro_init(3alleg4), alle-
gro_message(3alleg4), calc_spline(3alleg4), circlefill(3alleg4), clear_keybuf(3alleg4), clear_to_color(3alleg4),  desktop_palette(3alleg4),
fixatan2(3alleg4),  fixcos(3alleg4),  fixed(3alleg4), fixmul(3alleg4), fixsin(3alleg4), fixsqrt(3alleg4), fixtof(3alleg4), fixtoi(3alleg4),
font(3alleg4), ftofix(3alleg4), install_keyboard(3alleg4), install_mouse(3alleg4), install_timer(3alleg4),  itofix(3alleg4),  key(3alleg4),
keypressed(3alleg4),   line(3alleg4),   makecol(3alleg4),  mouse_b(3alleg4),  mouse_x(3alleg4),	mouse_y(3alleg4),  palette_color(3alleg4),
poll_mouse(3alleg4),   readkey(3alleg4),    release_screen(3alleg4),    screen(3alleg4),    set_gfx_mode(3alleg4),    set_palette(3alleg4),
show_mouse(3alleg4),  spline(3alleg4),  textout_centre_ex(3alleg4),  textprintf_centre_ex(3alleg4), textprintf_ex(3alleg4), vsync(3alleg4),
xor_mode(3alleg4)

Allegro 							   version 4.4.2						 exspline(3alleg4)```

## Check Out this Related Man Page

```exspline(3alleg4)                                                 Allegro manual                                                 exspline(3alleg4)

NAME
exspline - Constructing smooth movement paths from spline curves. Allegro game programming library.

SYNOPSIS
#include <allegro.h>

Example exspline

DESCRIPTION
This  program  demonstrates the use of spline curves to create smooth paths connecting a number of node points. This can be useful for con-
structing realistic motion and animations.

The technique is to connect the series of guide points p1..p(n) with spline curves from p1-p2, p2-p3, etc. Each  spline  must  pass  though
both of its guide points, so they must be used as the first and fourth of the spline control points. The fun bit is coming up with sensible
values for the second and third spline control points, such that the spline segments will have equal gradients where they meet. I  came  up
with the following solution:

For  each  guide point p(n), calculate the desired tangent to the curve at that point. I took this to be the vector p(n-1) -> p(n+1), which
can easily be calculated with the inverse tangent function, and gives decent looking results. One implication of this  is  that  two  dummy
guide points are needed at each end of the curve, which are used in the tangent calculations but not connected to the set of splines.

Having  got these tangents, it becomes fairly easy to calculate the spline control points. For a spline between guide points p(a) and p(b),
the second control point should lie along the positive tangent from p(a), and the third control point should lie along the negative tangent
from p(b). How far they are placed along these tangents controls the shape of the curve: I found that applying a 'curviness' scaling factor
to the distance between p(a) and p(b) works well.

One thing to note about splines is that the generated points are not all equidistant. Instead they tend to bunch up nearer to the  ends  of
the  spline,  which means you will need to apply some fudges to get an object to move at a constant speed. On the other hand, in situations
where the curve has a noticeable change of direction at each guide point, the effect can be quite nice because it  makes  the  object  slow
down for the curve.