Sophie

Sophie

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

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
>Points</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="Geometrical Object Hierarchy"
HREF="c2915.html"><LINK
REL="PREVIOUS"
TITLE="Containee classes"
HREF="gts-containee-classes.html"><LINK
REL="NEXT"
TITLE="Vertices"
HREF="gts-vertices.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-containee-classes.html"
><IMG
SRC="left.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Prev"></A
></TD
><TD
><A
ACCESSKEY="u"
HREF="c2915.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-vertices.html"
><IMG
SRC="right.png"
WIDTH="24"
HEIGHT="24"
BORDER="0"
ALT="Next"></A
></TD
></TR
></TABLE
><H1
><A
NAME="GTS-POINTS"
></A
>Points</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN4350"
></A
><H2
>Name</H2
>Points&nbsp;--&nbsp;point object and related functions.</DIV
><DIV
CLASS="REFSYNOPSISDIV"
><A
NAME="AEN4353"
></A
><H2
>Synopsis</H2
><PRE
CLASS="SYNOPSIS"
>&#13;#include &lt;gts.h&gt;


#define     <A
HREF="gts-points.html#GTS-POINT-CLASS:CAPS"
>GTS_POINT_CLASS</A
>                 (klass)
#define     <A
HREF="gts-points.html#GTS-POINT:CAPS"
>GTS_POINT</A
>                       (obj)
#define     <A
HREF="gts-points.html#GTS-IS-POINT:CAPS"
>GTS_IS_POINT</A
>                    (obj)
            <A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
>;
            <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
>;

<A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
>* <A
HREF="gts-points.html#GTS-POINT-CLASS"
>gts_point_class</A
>              (void);
<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
>*   <A
HREF="gts-points.html#GTS-POINT-NEW"
>gts_point_new</A
>                   (<A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
> *klass,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> x,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> y,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> z);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-points.html#GTS-POINT-SET"
>gts_point_set</A
>                   (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> x,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> y,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> z);
#define     <A
HREF="gts-points.html#GTS-POINT-IS-IN-RECTANGLE"
>gts_point_is_in_rectangle</A
>       (p, p1, p2)
<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
>*   <A
HREF="gts-points.html#GTS-SEGMENT-TRIANGLE-INTERSECTION"
>gts_segment_triangle_intersection</A
>
                                            (<A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t,
                                             <GTKDOCLINK
HREF="GBOOLEAN"
>gboolean</GTKDOCLINK
> boundary,
                                             <A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
> *klass);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-points.html#GTS-POINT-TRANSFORM"
>gts_point_transform</A
>             (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-DISTANCE"
>gts_point_distance</A
>              (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-DISTANCE2"
>gts_point_distance2</A
>             (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-ORIENTATION-3D"
>gts_point_orientation_3d</A
>        (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p4);
<GTKDOCLINK
HREF="GINT"
>gint</GTKDOCLINK
>        <A
HREF="gts-points.html#GTS-POINT-ORIENTATION-3D-SOS"
>gts_point_orientation_3d_sos</A
>    (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p4);
enum        <A
HREF="gts-points.html#GTSINTERSECT"
>GtsIntersect</A
>;
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-IN-CIRCLE"
>gts_point_in_circle</A
>             (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-IN-TRIANGLE-CIRCLE"
>gts_point_in_triangle_circle</A
>    (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);
<A
HREF="gts-points.html#GTSINTERSECT"
>GtsIntersect</A
> <A
HREF="gts-points.html#GTS-POINT-IS-IN-TRIANGLE"
>gts_point_is_in_triangle</A
>       (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-ORIENTATION"
>gts_point_orientation</A
>           (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3);
<GTKDOCLINK
HREF="GINT"
>gint</GTKDOCLINK
>        <A
HREF="gts-points.html#GTS-POINT-ORIENTATION-SOS"
>gts_point_orientation_sos</A
>       (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-SEGMENT-DISTANCE2"
>gts_point_segment_distance2</A
>     (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-SEGMENT-DISTANCE"
>gts_point_segment_distance</A
>      (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-points.html#GTS-POINT-SEGMENT-CLOSEST"
>gts_point_segment_closest</A
>       (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *closest);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-TRIANGLE-DISTANCE"
>gts_point_triangle_distance</A
>     (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);
<GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        <A
HREF="gts-points.html#GTS-POINT-TRIANGLE-CLOSEST"
>gts_point_triangle_closest</A
>      (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *closest);
<GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     <A
HREF="gts-points.html#GTS-POINT-TRIANGLE-DISTANCE2"
>gts_point_triangle_distance2</A
>    (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);
<GTKDOCLINK
HREF="GBOOLEAN"
>gboolean</GTKDOCLINK
>    <A
HREF="gts-points.html#GTS-POINT-IS-INSIDE-SURFACE"
>gts_point_is_inside_surface</A
>     (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <GTKDOCLINK
HREF="GNODE"
>GNode</GTKDOCLINK
> *tree,
                                             <GTKDOCLINK
HREF="GBOOLEAN"
>gboolean</GTKDOCLINK
> is_open);</PRE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN4462"
></A
><H2
>Description</H2
><P
>Three-dimensional points and a few geometrical functions.</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN4465"
></A
><H2
>Details</H2
><DIV
CLASS="REFSECT2"
><A
NAME="AEN4467"
></A
><H3
><A
NAME="GTS-POINT-CLASS:CAPS"
></A
>GTS_POINT_CLASS()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_POINT_CLASS(klass)</PRE
><P
>Casts <CODE
CLASS="PARAMETER"
>klass</CODE
> to <A
HREF="gts-points.html#GTSPOINTCLASS"
><SPAN
CLASS="TYPE"
>GtsPointClass</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4478"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a descendant of the <A
HREF="gts-points.html#GTSPOINTCLASS"
><SPAN
CLASS="TYPE"
>GtsPointClass</SPAN
></A
>.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4485"
></A
><H3
><A
NAME="GTS-POINT:CAPS"
></A
>GTS_POINT()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_POINT(obj)</PRE
><P
>Casts <CODE
CLASS="PARAMETER"
>obj</CODE
> to <A
HREF="gts-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4496"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>obj</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a descendant of the <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="AEN4503"
></A
><H3
><A
NAME="GTS-IS-POINT:CAPS"
></A
>GTS_IS_POINT()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     GTS_IS_POINT(obj)</PRE
><P
>Evaluates to <TT
CLASS="LITERAL"
>TRUE</TT
> if <CODE
CLASS="PARAMETER"
>obj</CODE
> is a descendant of a <A
HREF="gts-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>, <TT
CLASS="LITERAL"
>FALSE</TT
> otherwise.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4516"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>obj</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>a pointer to test.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4521"
></A
><H3
><A
NAME="GTSPOINTCLASS"
></A
>GtsPointClass</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef struct {
  GtsObjectClass parent_class;
  gboolean binary;
} GtsPointClass;</PRE
><P
>The class for <A
HREF="gts-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>. No virtual functions are associated.</P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4530"
></A
><H3
><A
NAME="GTSPOINT"
></A
>GtsPoint</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef struct {
  GtsObject object;

  gdouble x, y, z; /* must be contiguous (cast to robust functions) */
} GtsPoint;</PRE
><P
>The point object.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4538"><SPAN
STYLE="white-space: nowrap"
><A
HREF="gts-object-class.html#GTSOBJECT"
>GtsObject</A
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>object</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>The parent object.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4544"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>x</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>x coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4550"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>y</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>y coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4556"><SPAN
STYLE="white-space: nowrap"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>&nbsp;<CODE
CLASS="STRUCTFIELD"
>z</CODE
>;</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>z coordinate.&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4562"
></A
><H3
><A
NAME="GTS-POINT-CLASS"
></A
>gts_point_class ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
>* gts_point_class              (void);</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="AEN4572"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the <A
HREF="gts-points.html#GTSPOINTCLASS"
><SPAN
CLASS="TYPE"
>GtsPointClass</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4579"
></A
><H3
><A
NAME="GTS-POINT-NEW"
></A
>gts_point_new ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
>*   gts_point_new                   (<A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
> *klass,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> x,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> y,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> z);</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="AEN4593"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-points.html#GTSPOINTCLASS"
><SPAN
CLASS="TYPE"
>GtsPointClass</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4600"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>x</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the x-coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4605"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>y</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the y-coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4610"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>z</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the z-coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4615"><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-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4622"
></A
><H3
><A
NAME="GTS-POINT-SET"
></A
>gts_point_set ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_point_set                   (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> x,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> y,
                                             <GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
> z);</PRE
><P
>Sets the coordinates of <CODE
CLASS="PARAMETER"
>p</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4637"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN4644"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>x</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the x-coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4649"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>y</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the y-coordinate.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4654"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>z</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the z-coordinate.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4659"
></A
><H3
><A
NAME="GTS-POINT-IS-IN-RECTANGLE"
></A
>gts_point_is_in_rectangle()</H3
><PRE
CLASS="PROGRAMLISTING"
>#define     gts_point_is_in_rectangle(p, p1, p2)</PRE
><P
>Evaluates to <TT
CLASS="LITERAL"
>TRUE</TT
> if <CODE
CLASS="PARAMETER"
>p</CODE
> is contained in the box (boundary included) defined by its two corners <CODE
CLASS="PARAMETER"
>p1</CODE
> and <CODE
CLASS="PARAMETER"
>p2</CODE
>, <TT
CLASS="LITERAL"
>FALSE</TT
> otherwise.</P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4672"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN4679"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p1</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>the lower-left front corner of the box.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4684"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>the upper-right back corner of the box.
&#13;</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4689"
></A
><H3
><A
NAME="GTS-SEGMENT-TRIANGLE-INTERSECTION"
></A
>gts_segment_triangle_intersection ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
>*   gts_segment_triangle_intersection
                                            (<A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t,
                                             <GTKDOCLINK
HREF="GBOOLEAN"
>gboolean</GTKDOCLINK
> boundary,
                                             <A
HREF="gts-points.html#GTSPOINTCLASS"
>GtsPointClass</A
> *klass);</PRE
><P
>Checks if <CODE
CLASS="PARAMETER"
>s</CODE
> intersects <CODE
CLASS="PARAMETER"
>t</CODE
>. If this is the case, creates a new
point pi intersection of <CODE
CLASS="PARAMETER"
>s</CODE
> with <CODE
CLASS="PARAMETER"
>t</CODE
>.</P
><P
>This function is geometrically robust in the sense that it will not
return a point if <CODE
CLASS="PARAMETER"
>s</CODE
> and <CODE
CLASS="PARAMETER"
>t</CODE
> do not intersect and will return a
point if <CODE
CLASS="PARAMETER"
>s</CODE
> and <CODE
CLASS="PARAMETER"
>t</CODE
> do intersect. However, the point coordinates are
subject to round-off errors.</P
><P
>Note that this function will not return any point if <CODE
CLASS="PARAMETER"
>s</CODE
> is contained in
the plane defined 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="AEN4715"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>s</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-segments.html#GTSSEGMENT"
><SPAN
CLASS="TYPE"
>GtsSegment</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4722"><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="AEN4729"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>boundary</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> if <TT
CLASS="LITERAL"
>TRUE</TT
>, the boundary of <CODE
CLASS="PARAMETER"
>t</CODE
> is taken into account.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4736"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>klass</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-points.html#GTSPOINTCLASS"
><SPAN
CLASS="TYPE"
>GtsPointClass</SPAN
></A
> to be used for the new point.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4743"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a summit of <CODE
CLASS="PARAMETER"
>t</CODE
> (if <CODE
CLASS="PARAMETER"
>boundary</CODE
> is set to <TT
CLASS="LITERAL"
>TRUE</TT
>), one of the endpoints
of <CODE
CLASS="PARAMETER"
>s</CODE
> or a new <A
HREF="gts-points.html#GTSPOINT"
><SPAN
CLASS="TYPE"
>GtsPoint</SPAN
></A
>, intersection of <CODE
CLASS="PARAMETER"
>s</CODE
> with <CODE
CLASS="PARAMETER"
>t</CODE
> or <TT
CLASS="LITERAL"
>NULL</TT
> if <CODE
CLASS="PARAMETER"
>s</CODE
> 
and <CODE
CLASS="PARAMETER"
>t</CODE
> don't intersect.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4759"
></A
><H3
><A
NAME="GTS-POINT-TRANSFORM"
></A
>gts_point_transform ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_point_transform             (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
>GtsMatrix</A
> *m);</PRE
><P
>Transform the coordinates of <CODE
CLASS="PARAMETER"
>p</CODE
> according to <CODE
CLASS="PARAMETER"
>m</CODE
>. (p[] becomes m[][].p[]).</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4773"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN4780"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>m</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the <A
HREF="gts-vectors-and-matrices.html#GTSMATRIX"
><SPAN
CLASS="TYPE"
>GtsMatrix</SPAN
></A
> representing the transformation to 
apply to the coordinates of <CODE
CLASS="PARAMETER"
>p</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4788"
></A
><H3
><A
NAME="GTS-POINT-DISTANCE"
></A
>gts_point_distance ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_distance              (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2);</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="AEN4800"><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="AEN4807"><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
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4814"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the Euclidean distance between <CODE
CLASS="PARAMETER"
>p1</CODE
> and <CODE
CLASS="PARAMETER"
>p2</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4821"
></A
><H3
><A
NAME="GTS-POINT-DISTANCE2"
></A
>gts_point_distance2 ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_distance2             (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2);</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="AEN4833"><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="AEN4840"><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
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4847"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the square of the Euclidean distance between <CODE
CLASS="PARAMETER"
>p1</CODE
> and <CODE
CLASS="PARAMETER"
>p2</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4854"
></A
><H3
><A
NAME="GTS-POINT-ORIENTATION-3D"
></A
>gts_point_orientation_3d ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_orientation_3d        (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p4);</PRE
><P
>Checks if <CODE
CLASS="PARAMETER"
>p4</CODE
> lies above, below or on the plane passing through the
points <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
>. Below is defined so that <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
>
appear in counterclockwise order when viewed from above the
plane. The returned value is an approximation of six times the
signed volume of the tetrahedron defined by the four points. This
function uses adaptive floating point arithmetic and is
consequently geometrically robust.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4875"><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="AEN4882"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</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="AEN4889"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p3</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="AEN4896"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p4</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="AEN4903"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a positive value if <CODE
CLASS="PARAMETER"
>p4</CODE
> lies below, a negative value if
<CODE
CLASS="PARAMETER"
>p4</CODE
> lies above the plane, zero if the four points are coplanar.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4910"
></A
><H3
><A
NAME="GTS-POINT-ORIENTATION-3D-SOS"
></A
>gts_point_orientation_3d_sos ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GINT"
>gint</GTKDOCLINK
>        gts_point_orientation_3d_sos    (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p4);</PRE
><P
>Checks if <CODE
CLASS="PARAMETER"
>p4</CODE
> lies above or below the plane passing through the
points <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
>. Below is defined so that <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
>
appear in counterclockwise order when viewed from above the
plane. This function uses adaptive floating point arithmetic and is
consequently geometrically robust.</P
><P
>Simulation of Simplicity (SoS) is used to break ties when the
orientation is degenerate (i.e. <CODE
CLASS="PARAMETER"
>p4</CODE
> lies on the plane defined by
<CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
>).</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4936"><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="AEN4943"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</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="AEN4950"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p3</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="AEN4957"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p4</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="AEN4964"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> +1 if <CODE
CLASS="PARAMETER"
>p4</CODE
> lies below, -1 if <CODE
CLASS="PARAMETER"
>p4</CODE
> lies above the plane.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4971"
></A
><H3
><A
NAME="GTSINTERSECT"
></A
>enum GtsIntersect</H3
><PRE
CLASS="PROGRAMLISTING"
>typedef enum 
{ 
  GTS_OUT = -1,
  GTS_ON = 0,
  GTS_IN = 1
} GtsIntersect;</PRE
><P
></P
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN4978"
></A
><H3
><A
NAME="GTS-POINT-IN-CIRCLE"
></A
>gts_point_in_circle ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_in_circle             (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3);</PRE
><P
>Tests if the planar projection (x, y) of <CODE
CLASS="PARAMETER"
>p</CODE
> is inside or outside the
circle defined by the planar projection of <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN4996"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5003"><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="AEN5010"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</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="AEN5017"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p3</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="AEN5024"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a positive number if <CODE
CLASS="PARAMETER"
>p</CODE
> lies inside,
a negative number if <CODE
CLASS="PARAMETER"
>p</CODE
> lies outside and zero if <CODE
CLASS="PARAMETER"
>p</CODE
> lies on 
the circle.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5032"
></A
><H3
><A
NAME="GTS-POINT-IN-TRIANGLE-CIRCLE"
></A
>gts_point_in_triangle_circle ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_in_triangle_circle    (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);</PRE
><P
>Tests if the planar projection (x, y) of <CODE
CLASS="PARAMETER"
>p</CODE
> is inside or outside
the circumcircle of the planar projection of <CODE
CLASS="PARAMETER"
>t</CODE
>. This function is
geometrically robust.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5046"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5053"><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="AEN5060"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a positive number if <CODE
CLASS="PARAMETER"
>p</CODE
> lies inside,
a negative number if <CODE
CLASS="PARAMETER"
>p</CODE
> lies outside and zero if <CODE
CLASS="PARAMETER"
>p</CODE
> lies on 
the circumcircle of <CODE
CLASS="PARAMETER"
>t</CODE
>.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5069"
></A
><H3
><A
NAME="GTS-POINT-IS-IN-TRIANGLE"
></A
>gts_point_is_in_triangle ()</H3
><PRE
CLASS="PROGRAMLISTING"
><A
HREF="gts-points.html#GTSINTERSECT"
>GtsIntersect</A
> gts_point_is_in_triangle       (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);</PRE
><P
>Tests if the planar projection (x, y) of <CODE
CLASS="PARAMETER"
>p</CODE
> is inside, outside or
on the boundary of the planar projection of <CODE
CLASS="PARAMETER"
>t</CODE
>.  This function is
geometrically robust.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5083"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5090"><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="AEN5097"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> <TT
CLASS="LITERAL"
>GTS_IN</TT
> if <CODE
CLASS="PARAMETER"
>p</CODE
> is inside <CODE
CLASS="PARAMETER"
>t</CODE
>, <TT
CLASS="LITERAL"
>GTS_ON</TT
> if <CODE
CLASS="PARAMETER"
>p</CODE
> is on the boundary of
<CODE
CLASS="PARAMETER"
>t</CODE
>, <TT
CLASS="LITERAL"
>GTS_OUT</TT
> otherwise.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5109"
></A
><H3
><A
NAME="GTS-POINT-ORIENTATION"
></A
>gts_point_orientation ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_orientation           (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3);</PRE
><P
>Checks for orientation of the projection of three points on the
(x,y) plane. The result is also an approximation of twice the
signed area of the triangle defined by the three points. This
function uses adaptive floating point arithmetic and is
consequently geometrically robust.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5122"><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="AEN5129"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</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="AEN5136"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p3</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="AEN5143"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a positive value if <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
> appear in
counterclockwise order, a negative value if they appear in
clockwise order and zero if they are colinear.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5151"
></A
><H3
><A
NAME="GTS-POINT-ORIENTATION-SOS"
></A
>gts_point_orientation_sos ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GINT"
>gint</GTKDOCLINK
>        gts_point_orientation_sos       (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p1,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p2,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p3);</PRE
><P
>Checks for orientation of the projection of three points on the
(x,y) plane.</P
><P
>Simulation of Simplicity (SoS) is used to break ties when the
orientation is degenerate (i.e. <CODE
CLASS="PARAMETER"
>p3</CODE
> lies on the line defined by
<CODE
CLASS="PARAMETER"
>p1</CODE
> and <CODE
CLASS="PARAMETER"
>p2</CODE
>).</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5168"><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="AEN5175"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p2</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="AEN5182"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p3</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="AEN5189"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a positive value if <CODE
CLASS="PARAMETER"
>p1</CODE
>, <CODE
CLASS="PARAMETER"
>p2</CODE
> and <CODE
CLASS="PARAMETER"
>p3</CODE
> appear in
counterclockwise order or a negative value if they appear in
clockwise order.  </P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5197"
></A
><H3
><A
NAME="GTS-POINT-SEGMENT-DISTANCE2"
></A
>gts_point_segment_distance2 ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_segment_distance2     (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s);</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="AEN5209"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5216"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>s</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-segments.html#GTSSEGMENT"
><SPAN
CLASS="TYPE"
>GtsSegment</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5223"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the square of the minimun Euclidean distance between <CODE
CLASS="PARAMETER"
>p</CODE
> and <CODE
CLASS="PARAMETER"
>s</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5230"
></A
><H3
><A
NAME="GTS-POINT-SEGMENT-DISTANCE"
></A
>gts_point_segment_distance ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_segment_distance      (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s);</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="AEN5242"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5249"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>s</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-segments.html#GTSSEGMENT"
><SPAN
CLASS="TYPE"
>GtsSegment</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5256"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the minimun Euclidean distance between <CODE
CLASS="PARAMETER"
>p</CODE
> and <CODE
CLASS="PARAMETER"
>s</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5263"
></A
><H3
><A
NAME="GTS-POINT-SEGMENT-CLOSEST"
></A
>gts_point_segment_closest ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_point_segment_closest       (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-segments.html#GTSSEGMENT"
>GtsSegment</A
> *s,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *closest);</PRE
><P
>Set the coordinates of <CODE
CLASS="PARAMETER"
>closest</CODE
> to the coordinates of the point belonging
to <CODE
CLASS="PARAMETER"
>s</CODE
> closest to <CODE
CLASS="PARAMETER"
>p</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5279"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5286"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>s</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a <A
HREF="gts-segments.html#GTSSEGMENT"
><SPAN
CLASS="TYPE"
>GtsSegment</SPAN
></A
>.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5293"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>closest</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
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5300"
></A
><H3
><A
NAME="GTS-POINT-TRIANGLE-DISTANCE"
></A
>gts_point_triangle_distance ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_triangle_distance     (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);</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="AEN5312"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5319"><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="AEN5326"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the minimun Euclidean distance between <CODE
CLASS="PARAMETER"
>p</CODE
> and <CODE
CLASS="PARAMETER"
>t</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5333"
></A
><H3
><A
NAME="GTS-POINT-TRIANGLE-CLOSEST"
></A
>gts_point_triangle_closest ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="VOID"
>void</GTKDOCLINK
>        gts_point_triangle_closest      (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t,
                                             <A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *closest);</PRE
><P
>Set the coordinates of <CODE
CLASS="PARAMETER"
>closest</CODE
> to those of the point belonging to <CODE
CLASS="PARAMETER"
>t</CODE
> and 
closest to <CODE
CLASS="PARAMETER"
>p</CODE
>.</P
><P
></P
><P
></P
><TABLE
CLASS="variablelist"
BORDER="0"
CELLSPACING="0"
CELLPADDING="4"
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5349"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5356"><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="AEN5363"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>closest</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
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5370"
></A
><H3
><A
NAME="GTS-POINT-TRIANGLE-DISTANCE2"
></A
>gts_point_triangle_distance2 ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GDOUBLE"
>gdouble</GTKDOCLINK
>     gts_point_triangle_distance2    (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <A
HREF="gts-triangles.html#GTSTRIANGLE"
>GtsTriangle</A
> *t);</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="AEN5382"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5389"><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="AEN5396"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> the square of the minimun Euclidean distance between <CODE
CLASS="PARAMETER"
>p</CODE
> and <CODE
CLASS="PARAMETER"
>t</CODE
>.</P
></TD
></TR
></TBODY
></TABLE
></DIV
><HR><DIV
CLASS="REFSECT2"
><A
NAME="AEN5403"
></A
><H3
><A
NAME="GTS-POINT-IS-INSIDE-SURFACE"
></A
>gts_point_is_inside_surface ()</H3
><PRE
CLASS="PROGRAMLISTING"
><GTKDOCLINK
HREF="GBOOLEAN"
>gboolean</GTKDOCLINK
>    gts_point_is_inside_surface     (<A
HREF="gts-points.html#GTSPOINT"
>GtsPoint</A
> *p,
                                             <GTKDOCLINK
HREF="GNODE"
>GNode</GTKDOCLINK
> *tree,
                                             <GTKDOCLINK
HREF="GBOOLEAN"
>gboolean</GTKDOCLINK
> is_open);</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="AEN5416"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>p</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="AEN5423"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>tree</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> a bounding box tree of the faces of a closed, orientable
surface (see <A
HREF="gts-bounding-boxes-trees.html#GTS-BB-TREE-SURFACE"
><CODE
CLASS="FUNCTION"
>gts_bb_tree_surface()</CODE
></A
>).</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5430"><SPAN
STYLE="white-space: nowrap"
><CODE
CLASS="PARAMETER"
>is_open</CODE
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> <TT
CLASS="LITERAL"
>TRUE</TT
> if the surface defined by <CODE
CLASS="PARAMETER"
>tree</CODE
> is "open" i.e. its volume 
is negative, <TT
CLASS="LITERAL"
>FALSE</TT
> otherwise.</P
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="TOP"
><A
NAME="AEN5438"><SPAN
STYLE="white-space: nowrap"
><SPAN
CLASS="emphasis"
><I
CLASS="EMPHASIS"
>Returns</I
></SPAN
>&nbsp;:</SPAN
></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
> <TT
CLASS="LITERAL"
>TRUE</TT
> if <CODE
CLASS="PARAMETER"
>p</CODE
> is inside the surface defined by <CODE
CLASS="PARAMETER"
>tree</CODE
>, <TT
CLASS="LITERAL"
>FALSE</TT
>
otherwise.  </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-containee-classes.html"
><B
>&lt;&lt;&lt;&nbsp;Containee classes</B
></A
></TD
><TD
ALIGN="right"
><A
ACCESSKEY="n"
HREF="gts-vertices.html"
><B
>Vertices&nbsp;&gt;&gt;&gt;</B
></A
></TD
></TR
></TABLE
></BODY
></HTML
>