Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > 78653db2e4148c15abb94d33af2851c6 > files > 44

gts-devel-0.7.6-15.fc15.i686.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Vectors and matrices</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="GTS Library Reference Manual"
HREF="book1.html"><LINK
REL="UP"
TITLE="Basic Macros, functions and data structures"
HREF="c4.html"><LINK
REL="PREVIOUS"
TITLE="First In First Out heaps"
HREF="gts-first-in-first-out-heaps.html"><LINK
REL="NEXT"
TITLE="Simple statistics"
HREF="gts-simple-statistics.html"><STYLE
TYPE="text/css"
>.synopsis, .classsynopsis {
    background: #eeeeee;
    border: solid 1px #aaaaaa;
    padding: 0.5em;
}
.programlisting {
    background: #eeeeff;
    border: solid 1px #aaaaff;
    padding: 0.5em;
}
.variablelist {
    padding: 4px;
    margin-left: 3em;
}
.navigation {
    background: #ffeeee;
    border: solid 1px #ffaaaa;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
}
.navigation a {
    color: #770000;
}
.navigation a:visited {
    color: #550000;
}
.navigation .title {
    font-size: 200%;
}</STYLE
></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><TABLE
WIDTH="100%"
CLASS="navigation"
SUMMARY="Navigation header"
CELLPADDING="2"
CELLSPACING="2"
><TR
VALIGN="middle"
><TD
><A
ACCESSKEY="p"
HREF="gts-first-in-first-out-heaps.html"
><IMG
SRC="left.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Prev"></A
></TD
><TD
><A
ACCESSKEY="u"
HREF="c4.html"
><IMG
SRC="up.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Up"></A
></TD
><TD
><A
ACCESSKEY="h"
HREF="book1.html"
><IMG
SRC="home.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Home"></A
></TD
><TH
WIDTH="100%"
align="center"
>GTS Library Reference Manual</TH
><TD
><A
ACCESSKEY="n"
HREF="gts-simple-statistics.html"
><IMG
SRC="right.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Next"></A
></TD
></TR
></TABLE
><H1
><A
NAME="GTS-VECTORS-AND-MATRICES"
></A
>Vectors and matrices</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN1157"
></A
><H2
>Name</H2
>Vectors and matrices&nbsp;--&nbsp;simple operations on vectors and matrices.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN1160"
></A
><H2
>Synopsis</H2
><PRE
CLASS="SYNOPSIS"
>&#13;#include &lt;gts.h&gt;



#define     <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR-INIT"
>gts_vector_init</A
>                 (v, p1, p2)
#define     <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR-SCALAR"
>gts_vector_scalar</A
>               (v1, v2)
#define     <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR-CROSS"
>gts_vector_cross</A
>                (C,A,B)
#define     <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR-NORM"
>gts_vector_norm</A
>                 (v)
#define     <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR-NORMALIZE"
>gts_vector_normalize</A
>            (v)
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR-PRINT"
>gts_vector_print</A
>                (<GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> v,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-vectors-and-matrices.html#GTS-VECTOR4-PRINT"
>gts_vector4_print</A
>               (<GTKDOCLINK
HREF="GTSVECTOR4"
>GtsVector4</GTKDOCLINK
> v,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);

typedef     <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>;

<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-NEW"
>gts_matrix_new</A
>                  (<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a00,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a01,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a02,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a03,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a10,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a11,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a12,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a13,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a20,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a21,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a22,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a23,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a30,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a31,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a32,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a33);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-ASSIGN"
>gts_matrix_assign</A
>               (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a00,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a01,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a02,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a03,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a10,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a11,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a12,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a13,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a20,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a21,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a22,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a23,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a30,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a31,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a32,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a33);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-ZERO"
>gts_matrix_zero</A
>                 (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-IDENTITY"
>gts_matrix_identity</A
>             (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-PROJECTION"
>gts_matrix_projection</A
>           (<A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-SCALE"
>gts_matrix_scale</A
>                (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> s);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-TRANSLATE"
>gts_matrix_translate</A
>            (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> t);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-ROTATE"
>gts_matrix_rotate</A
>               (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> r,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> angle);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-TRANSPOSE"
>gts_matrix_transpose</A
>            (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-DETERMINANT"
>gts_matrix_determinant</A
>          (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-INVERSE"
>gts_matrix_inverse</A
>              (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX3-INVERSE"
>gts_matrix3_inverse</A
>             (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-PRODUCT"
>gts_matrix_product</A
>              (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m1,
                                             <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m2);
<GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-COMPATIBLE-ROW"
>gts_matrix_compatible_row</A
>       (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *A,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> b,
                                             <GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
> n,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> A1,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> b1);
<GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-QUADRATIC-OPTIMIZATION"
>gts_matrix_quadratic_optimization</A
>
                                            (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *A,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> b,
                                             <GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
> n,
                                             <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *H,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> c);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-PRINT"
>gts_matrix_print</A
>                (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-DESTROY"
>gts_matrix_destroy</A
>              (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1273"
></A
><H2
>Description</H2
><P
>The functions described in this section allow to perform simple transformations on point coordinates. In particular projection onto a plane passing through the vertices of a given triangle or quadratic optimization problems.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN1276"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN1278"
></A
><H3
><A
NAME="GTS-VECTOR-INIT"
></A
>gts_vector_init()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     gts_vector_init(v, p1, p2)</PRE
><P
>Given two points <CODE
CLASS="PARAMETER"
>p1</CODE
> and <CODE
CLASS="PARAMETER"
>p2</CODE
>, fills <CODE
CLASS="PARAMETER"
>v</CODE
> with the coordinates of vector <CODE
CLASS="PARAMETER"
>p1</CODE
>-&#62;<CODE
CLASS="PARAMETER"
>p2</CODE
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1291"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1298"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p1</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a <A
HREF="gts-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1305"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>another <A
HREF="gts-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1312"
></A
><H3
><A
NAME="GTS-VECTOR-SCALAR"
></A
>gts_vector_scalar()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     gts_vector_scalar(v1, v2)</PRE
><P
>Given two vectors <CODE
CLASS="PARAMETER"
>v1</CODE
> and <CODE
CLASS="PARAMETER"
>v2</CODE
> evaluates to the scalar product <CODE
CLASS="PARAMETER"
>v1</CODE
>.<CODE
CLASS="PARAMETER"
>v2</CODE
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1324"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v1</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1331"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v2</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>another <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1338"
></A
><H3
><A
NAME="GTS-VECTOR-CROSS"
></A
>gts_vector_cross()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     gts_vector_cross(C,A,B)</PRE
><P
>Given two vectors <CODE
CLASS="PARAMETER"
>A</CODE
> and <CODE
CLASS="PARAMETER"
>B</CODE
> fills <CODE
CLASS="PARAMETER"
>C</CODE
> with the coordinates of the cross-product <CODE
CLASS="PARAMETER"
>A</CODE
>^<CODE
CLASS="PARAMETER"
>B</CODE
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1351"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>C</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1358"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>A</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>another <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1365"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>B</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>and another.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1370"
></A
><H3
><A
NAME="GTS-VECTOR-NORM"
></A
>gts_vector_norm()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     gts_vector_norm(v)</PRE
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1378"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1383"
></A
><H3
><A
NAME="GTS-VECTOR-NORMALIZE"
></A
>gts_vector_normalize()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     gts_vector_normalize(v)</PRE
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1391"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1396"
></A
><H3
><A
NAME="GTS-VECTOR-PRINT"
></A
>gts_vector_print ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_vector_print                (<GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> v,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);</PRE
><P
>Print <CODE
CLASS="PARAMETER"
>s</CODE
> to file <CODE
CLASS="PARAMETER"
>fptr</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1410"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1417"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>fptr</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a file descriptor.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1422"
></A
><H3
><A
NAME="GTS-VECTOR4-PRINT"
></A
>gts_vector4_print ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_vector4_print               (<GTKDOCLINK
HREF="GTSVECTOR4"
>GtsVector4</GTKDOCLINK
> v,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);</PRE
><P
>Print <CODE
CLASS="PARAMETER"
>v</CODE
> to file <CODE
CLASS="PARAMETER"
>fptr</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1436"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>v</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <GTKDOCLINK
HREF="GTSVECTOR4"
><SPAN
CLASS="TYPE"
>GtsVector4</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1443"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>fptr</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a file descriptor.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1448"
></A
><H3
><A
NAME="GTSMATRIX"
></A
>GtsMatrix</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef GtsVector4               GtsMatrix;</PRE
><P
>A <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> is a 3x3 matrix.</P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1457"
></A
><H3
><A
NAME="GTS-MATRIX-NEW"
></A
>gts_matrix_new ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_new                  (<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a00,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a01,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a02,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a03,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a10,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a11,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a12,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a13,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a20,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a21,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a22,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a23,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a30,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a31,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a32,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a33);</PRE
><P
>Allocates memory and initializes a new <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1485"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a00</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1490"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a01</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1495"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a02</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1500"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a03</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1505"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a10</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1510"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a11</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1515"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a12</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1520"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a13</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1525"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a20</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1530"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a21</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1535"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a22</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1540"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a23</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1545"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a30</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1550"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a31</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1555"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a32</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1560"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a33</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1565"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a pointer to the newly created <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1572"
></A
><H3
><A
NAME="GTS-MATRIX-ASSIGN"
></A
>gts_matrix_assign ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_matrix_assign               (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a00,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a01,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a02,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a03,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a10,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a11,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a12,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a13,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a20,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a21,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a22,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a23,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a30,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a31,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a32,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> a33);</PRE
><P
>Set values of matrix elements.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1599"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1606"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a00</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1611"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a01</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1616"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a02</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1621"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a03</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [0][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1626"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a10</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1631"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a11</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1636"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a12</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1641"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a13</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [1][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1646"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a20</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1651"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a21</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1656"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a22</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1661"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a23</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [2][3].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1666"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a30</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][0].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1671"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a31</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][1].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1676"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a32</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][2].</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1681"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>a33</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> element [3][3].</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1686"
></A
><H3
><A
NAME="GTS-MATRIX-ZERO"
></A
>gts_matrix_zero ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_zero                 (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
>Initializes <CODE
CLASS="PARAMETER"
>m</CODE
> to zeros. Allocates a matrix if <CODE
CLASS="PARAMETER"
>m</CODE
> is <TT
CLASS="LITERAL"
>NULL</TT
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1700"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> or $NULL.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1707"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the zero'ed matrix.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1712"
></A
><H3
><A
NAME="GTS-MATRIX-IDENTITY"
></A
>gts_matrix_identity ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_identity             (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
>Initializes <CODE
CLASS="PARAMETER"
>m</CODE
> to an identity matrix. Allocates a matrix if <CODE
CLASS="PARAMETER"
>m</CODE
> is <TT
CLASS="LITERAL"
>NULL</TT
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1726"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1734"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the identity matrix.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1739"
></A
><H3
><A
NAME="GTS-MATRIX-PROJECTION"
></A
>gts_matrix_projection ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_projection           (<A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);</PRE
><P
>Creates a new <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> representing the projection onto a plane of normal
given by <CODE
CLASS="PARAMETER"
>t</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1753"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>t</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-triangles.html#GTSTRIANGLE"
><SPAN
CLASS="TYPE"
>GtsTriangle</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1760"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a pointer to the newly created <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1767"
></A
><H3
><A
NAME="GTS-MATRIX-SCALE"
></A
>gts_matrix_scale ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_scale                (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> s);</PRE
><P
>Initializes <CODE
CLASS="PARAMETER"
>m</CODE
> to a scaling matrix for <CODE
CLASS="PARAMETER"
>s</CODE
>. Allocates a matrix if <CODE
CLASS="PARAMETER"
>m</CODE
>
is <TT
CLASS="LITERAL"
>NULL</TT
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1783"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1791"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>s</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the scaling vector.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1796"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the scaling matrix.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1801"
></A
><H3
><A
NAME="GTS-MATRIX-TRANSLATE"
></A
>gts_matrix_translate ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_translate            (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> t);</PRE
><P
>Initializes <CODE
CLASS="PARAMETER"
>m</CODE
> to a translation matrix for <CODE
CLASS="PARAMETER"
>t</CODE
>.  Allocates a new
matrix if <CODE
CLASS="PARAMETER"
>m</CODE
> is <TT
CLASS="LITERAL"
>NULL</TT
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1817"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1825"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>t</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the translation vector.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1830"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the translation matix.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1835"
></A
><H3
><A
NAME="GTS-MATRIX-ROTATE"
></A
>gts_matrix_rotate ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_rotate               (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> r,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> angle);</PRE
><P
>Initializes <CODE
CLASS="PARAMETER"
>m</CODE
> to a rotation matrix around <CODE
CLASS="PARAMETER"
>r</CODE
> by <CODE
CLASS="PARAMETER"
>angle</CODE
>.
Allocates a new matrix if <CODE
CLASS="PARAMETER"
>m</CODE
> is <TT
CLASS="LITERAL"
>NULL</TT
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1853"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> or <TT
CLASS="LITERAL"
>NULL</TT
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1861"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>r</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the rotation axis.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1866"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>angle</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the angle (in radians) to rotate by.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1871"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the rotation matrix.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1876"
></A
><H3
><A
NAME="GTS-MATRIX-TRANSPOSE"
></A
>gts_matrix_transpose ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_transpose            (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1887"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1894"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a pointer to a newly created <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> transposed of <CODE
CLASS="PARAMETER"
>m</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1902"
></A
><H3
><A
NAME="GTS-MATRIX-DETERMINANT"
></A
>gts_matrix_determinant ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_matrix_determinant          (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1913"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1920"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the value of det(<CODE
CLASS="PARAMETER"
>m</CODE
>).</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1926"
></A
><H3
><A
NAME="GTS-MATRIX-INVERSE"
></A
>gts_matrix_inverse ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_inverse              (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1937"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1944"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a pointer to a newly created <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> inverse of <CODE
CLASS="PARAMETER"
>m</CODE
> or <TT
CLASS="LITERAL"
>NULL</TT
>
if <CODE
CLASS="PARAMETER"
>m</CODE
> is not invertible.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1954"
></A
><H3
><A
NAME="GTS-MATRIX3-INVERSE"
></A
>gts_matrix3_inverse ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix3_inverse             (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1965"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a 3x3 <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1972"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a pointer to a newly created 3x3 <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> inverse of <CODE
CLASS="PARAMETER"
>m</CODE
> or <TT
CLASS="LITERAL"
>NULL</TT
>
if <CODE
CLASS="PARAMETER"
>m</CODE
> is not invertible.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN1982"
></A
><H3
><A
NAME="GTS-MATRIX-PRODUCT"
></A
>gts_matrix_product ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
>*  gts_matrix_product              (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m1,
                                             <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m2);</PRE
><P
></P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN1994"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m1</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2001"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m2</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> another <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2008"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a new <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>, product of <CODE
CLASS="PARAMETER"
>m1</CODE
> and <CODE
CLASS="PARAMETER"
>m2</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2017"
></A
><H3
><A
NAME="GTS-MATRIX-COMPATIBLE-ROW"
></A
>gts_matrix_compatible_row ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       gts_matrix_compatible_row       (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *A,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> b,
                                             <GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
> n,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> A1,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> b1);</PRE
><P
>Given a system of <CODE
CLASS="PARAMETER"
>n</CODE
> constraints <CODE
CLASS="PARAMETER"
>A.x</CODE
>=<CODE
CLASS="PARAMETER"
>b</CODE
> adds to it the compatible
constraints defined by <CODE
CLASS="PARAMETER"
>A1.x</CODE
>=<CODE
CLASS="PARAMETER"
>b1</CODE
>. The compatibility is determined
by insuring that the resulting system is well-conditioned (see
Lindstrom and Turk (1998, 1999)).</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2037"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>A</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2044"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>b</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2051"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>n</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the number of previous constraints of <CODE
CLASS="PARAMETER"
>A.x</CODE
>=<CODE
CLASS="PARAMETER"
>b</CODE
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2058"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>A1</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2065"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>b1</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2072"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the number of constraints of the resulting system.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2077"
></A
><H3
><A
NAME="GTS-MATRIX-QUADRATIC-OPTIMIZATION"
></A
>gts_matrix_quadratic_optimization ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
>       gts_matrix_quadratic_optimization
                                            (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *A,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> b,
                                             <GTKDOCLINK
HREF="GUINT"
>guint</GTKDOCLINK
> n,
                                             <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *H,
                                             <GTKDOCLINK
HREF="GTSVECTOR"
>GtsVector</GTKDOCLINK
> c);</PRE
><P
>Solve a quadratic optimization problem: Given a quadratic objective function
f which can be written as: f(x) = x^t.<CODE
CLASS="PARAMETER"
>H.x</CODE
> + <CODE
CLASS="PARAMETER"
>c</CODE
>^t.x + k, where <CODE
CLASS="PARAMETER"
>H</CODE
> is the 
symmetric positive definite Hessian of f and k is a constant, find the
minimum of f subject to the set of <CODE
CLASS="PARAMETER"
>n</CODE
> prior linear constraints, defined by
the first <CODE
CLASS="PARAMETER"
>n</CODE
> rows of <CODE
CLASS="PARAMETER"
>A</CODE
> and <CODE
CLASS="PARAMETER"
>b</CODE
> (<CODE
CLASS="PARAMETER"
>A.x</CODE
> = <CODE
CLASS="PARAMETER"
>b</CODE
>). The new constraints given by
the minimization are added to <CODE
CLASS="PARAMETER"
>A</CODE
> and <CODE
CLASS="PARAMETER"
>b</CODE
> only if they are linearly
independent as determined by <A
HREF="gts-vectors-and-matrices.html#GTS-MATRIX-COMPATIBLE-ROW"
><CODE
CLASS="FUNCTION"
>gts_matrix_compatible_row()</CODE
></A
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2105"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>A</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2112"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>b</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2119"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>n</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the number of constraints (must be smaller than 3).</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2124"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>H</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a symmetric positive definite Hessian.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2129"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>c</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <GTKDOCLINK
HREF="GTSVECTOR"
><SPAN
CLASS="TYPE"
>GtsVector</SPAN
></GTKDOCLINK
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2136"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the new number of constraints defined by <CODE
CLASS="PARAMETER"
>A</CODE
> and <CODE
CLASS="PARAMETER"
>b</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2143"
></A
><H3
><A
NAME="GTS-MATRIX-PRINT"
></A
>gts_matrix_print ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_matrix_print                (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m,
                                             <GTKDOCLINK
HREF="FILE:CAPS"
>FILE</GTKDOCLINK
> *fptr);</PRE
><P
>Print <CODE
CLASS="PARAMETER"
>m</CODE
> to file <CODE
CLASS="PARAMETER"
>fptr</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2157"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2164"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>fptr</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a file descriptor.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN2169"
></A
><H3
><A
NAME="GTS-MATRIX-DESTROY"
></A
>gts_matrix_destroy ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_matrix_destroy              (<A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
>Free all the memory allocated for <CODE
CLASS="PARAMETER"
>m</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN2181"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
></DIV
><TABLE
CLASS="navigation"
WIDTH="100%"
SUMMARY="Navigation footer"
CELLPADDING="2"
CELLSPACING="2"
><TR
VALIGN="middle"
><TD
ALIGN="left"
><A
ACCESSKEY="p"
HREF="gts-first-in-first-out-heaps.html"
><B
>&lt;&lt;&lt;&nbsp;First In First Out heaps</B
></A
></TD
><TD
ALIGN="right"
><A
ACCESSKEY="n"
HREF="gts-simple-statistics.html"
><B
>Simple statistics&nbsp;&gt;&gt;&gt;</B
></A
></TD
></TR
></TABLE
></BODY
></HTML
>