For example, consider the following code fragment which rotates an
arc about the X-axis and places the arc center at vec = {3.0, -2.0,
1.5} with respect to the origin of the absolute coordinate system.
#include <uf.h>
#include <uf_curve.h>
#include <uf_csys.h>
#include <uf_defs.h>
#include <uf_mtx.h>
. . .
tag_t arc_tag45;
UF_CURVE_arc_t arc_coord45;
double mat45[9];
/* Use X-axis for rotation. */
double rot_axis[3] = {1.0,0.0,0.0};
/* Use 45 degrees as rotation angle */
double angle45 = 45 * DEGRA;
/* Center of arc with respect to (0,0,0) of Absolute CSYS. */
double vec[3] = {3.0,-2.0,1.5};
/* Create 45 degree orientation matrix. */
UF_MTX3_rotate_about_axis(rot_axis,angle45,mat45);
/* Obtain mapped coordinates. */
UF_MTX3_vec_multiply(vec,mat45,arc_coord45.arc_center);
/* Fill out the data structure for the arc */
UF_CSYS_create_matrix(mat45,&arc_coord45.matrix_tag);
arc_coord45.start_angle = 0.0;
arc_coord45.end_angle = 360.0 * DEGRA;
arc_coord45.radius = 2.0;/* Create the arc. */
UF_CURVE_create_arc(&arc_coord45,&arc_tag45);
..