<!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 -- point object and related functions.</DIV ><DIV CLASS="REFSYNOPSISDIV" ><A NAME="AEN4353" ></A ><H2 >Synopsis</H2 ><PRE CLASS="SYNOPSIS" > #include <gts.h> #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 > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a descendant of 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="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 > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a descendant of the <A HREF="gts-points.html#GTSPOINT" ><SPAN CLASS="TYPE" >GtsPoint</SPAN ></A >. </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 > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >a pointer to test. </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 > <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 > <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 > <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 > <CODE CLASS="STRUCTFIELD" >z</CODE >;</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >z coordinate. </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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</SPAN ></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P >the upper-right back corner of the box. </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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 > :</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 ><<< Containee classes</B ></A ></TD ><TD ALIGN="right" ><A ACCESSKEY="n" HREF="gts-vertices.html" ><B >Vertices >>></B ></A ></TD ></TR ></TABLE ></BODY ></HTML >