\doxysection{vpred.\+h File Reference}
\label{a00026}\index{vpred.h@{vpred.h}}


Header file for the Geometric Predicates.  


{\ttfamily \#include $<$maloc/maloc\+\_\+base.\+h$>$}\newline
Include dependency graph for vpred.\+h\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{a00027}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=224pt]{a00028}
\end{center}
\end{figure}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ INEXACT}~/$\ast$ Nothing $\ast$/
\begin{DoxyCompactList}\small\item\em Parameters and constants "{}\+INEXACT"{}. \end{DoxyCompactList}\item 
\#define \textbf{ REAL}~double
\begin{DoxyCompactList}\small\item\em float or double \end{DoxyCompactList}\item 
\#define \textbf{ REALPRINT}~doubleprint
\begin{DoxyCompactList}\small\item\em Print the bit representation of a double. \end{DoxyCompactList}\item 
\#define \textbf{ REALRAND}~doublerand
\begin{DoxyCompactList}\small\item\em Generate a double with random 53-\/bit significand and a random exponent in [0, 511]. \end{DoxyCompactList}\item 
\#define \textbf{ NARROWRAND}~narrowdoublerand
\begin{DoxyCompactList}\small\item\em Generate a double with random 53-\/bit significand and a random exponent in [0, 7]. \end{DoxyCompactList}\item 
\#define \textbf{ UNIFORMRAND}~uniformdoublerand
\begin{DoxyCompactList}\small\item\em Generate a double with random 53-\/bit significand. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
void \textbf{ Vpred\+\_\+exactinit} (void)
\begin{DoxyCompactList}\small\item\em Initialize the variables used for exact arithmetic. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+orient2d} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc)
\begin{DoxyCompactList}\small\item\em Adaptive exact 2D orientation test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+orient2dfast} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc)
\begin{DoxyCompactList}\small\item\em Approximate 2D orientation test. Nonrobust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+orient2dexact} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc)
\begin{DoxyCompactList}\small\item\em Exact 2D orientation test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+orient3d} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd)
\begin{DoxyCompactList}\small\item\em Adaptive exact 3D orientation test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+orient3dfast} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd)
\begin{DoxyCompactList}\small\item\em Approximate 3D orientation test. Nonrobust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+orient3dexact} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd)
\begin{DoxyCompactList}\small\item\em Exact 3D orientation test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+incircle} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd)
\begin{DoxyCompactList}\small\item\em Adaptive exact 2D incircle test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+incirclefast} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd)
\begin{DoxyCompactList}\small\item\em Approximate 2D incircle test. Nonrobust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+incircleexact} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd)
\begin{DoxyCompactList}\small\item\em Exact 2D incircle test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+insphere} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd, \textbf{ REAL} $\ast$pe)
\begin{DoxyCompactList}\small\item\em Adaptive exact 3D insphere test. Robust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+inspherefast} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd, \textbf{ REAL} $\ast$pe)
\begin{DoxyCompactList}\small\item\em Approximate 3D insphere test. Nonrobust. \end{DoxyCompactList}\item 
\textbf{ REAL} \textbf{ Vpred\+\_\+insphereexact} (\textbf{ REAL} $\ast$pa, \textbf{ REAL} $\ast$pb, \textbf{ REAL} $\ast$pc, \textbf{ REAL} $\ast$pd, \textbf{ REAL} $\ast$pe)
\begin{DoxyCompactList}\small\item\em Exact 3D insphere test. Robust. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Header file for the Geometric Predicates. 

\begin{DoxyVersion}{Version}

\end{DoxyVersion}
\begin{DoxyParagraph}{Id}
\doxyref{vpred.\+h}{p.}{a00026},v 1.\+4 2010/08/12 05\+:40\+:37 fetk Exp 
\end{DoxyParagraph}
\begin{DoxyAuthor}{Author}
Michael Holst
\end{DoxyAuthor}
\begin{DoxyAttention}{Attention}
\begin{DoxyVerb}*
* MALOC = < Minimal Abstraction Layer for Object-oriented C >
* Copyright (C) 1994-- Michael Holst
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* 
*  \end{DoxyVerb}
 
\end{DoxyAttention}


\doxysubsection{Macro Definition Documentation}
\index{vpred.h@{vpred.h}!INEXACT@{INEXACT}}
\index{INEXACT@{INEXACT}!vpred.h@{vpred.h}}
\doxysubsubsection{INEXACT}
{\footnotesize\ttfamily \label{a00026_ad49beae4f708cdfe26352d865ed2eb95} 
\#define INEXACT~/$\ast$ Nothing $\ast$/}



Parameters and constants "{}\+INEXACT"{}. 

\index{vpred.h@{vpred.h}!NARROWRAND@{NARROWRAND}}
\index{NARROWRAND@{NARROWRAND}!vpred.h@{vpred.h}}
\doxysubsubsection{NARROWRAND}
{\footnotesize\ttfamily \label{a00026_a573b0e3df6fc0f000607eca1c5569f68} 
\#define NARROWRAND~narrowdoublerand}



Generate a double with random 53-\/bit significand and a random exponent in [0, 7]. 

\index{vpred.h@{vpred.h}!REAL@{REAL}}
\index{REAL@{REAL}!vpred.h@{vpred.h}}
\doxysubsubsection{REAL}
{\footnotesize\ttfamily \label{a00026_a4b654506f18b8bfd61ad2a29a7e38c25} 
\#define REAL~double}



float or double 

\index{vpred.h@{vpred.h}!REALPRINT@{REALPRINT}}
\index{REALPRINT@{REALPRINT}!vpred.h@{vpred.h}}
\doxysubsubsection{REALPRINT}
{\footnotesize\ttfamily \label{a00026_a08c32ee2465d67f098ab09bdf0e2eb59} 
\#define REALPRINT~doubleprint}



Print the bit representation of a double. 

\index{vpred.h@{vpred.h}!REALRAND@{REALRAND}}
\index{REALRAND@{REALRAND}!vpred.h@{vpred.h}}
\doxysubsubsection{REALRAND}
{\footnotesize\ttfamily \label{a00026_a810b77dd5b3d884e1d2641a2e597df22} 
\#define REALRAND~doublerand}



Generate a double with random 53-\/bit significand and a random exponent in [0, 511]. 

\index{vpred.h@{vpred.h}!UNIFORMRAND@{UNIFORMRAND}}
\index{UNIFORMRAND@{UNIFORMRAND}!vpred.h@{vpred.h}}
\doxysubsubsection{UNIFORMRAND}
{\footnotesize\ttfamily \label{a00026_a151c130268f15ea9975886f0750f3079} 
\#define UNIFORMRAND~uniformdoublerand}



Generate a double with random 53-\/bit significand. 



\doxysubsection{Function Documentation}
\index{vpred.h@{vpred.h}!Vpred\_exactinit@{Vpred\_exactinit}}
\index{Vpred\_exactinit@{Vpred\_exactinit}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_exactinit()}
{\footnotesize\ttfamily \label{a00026_a8dbedbfe17e2280b77117d1b9b4cc0b5} 
void Vpred\+\_\+exactinit (\begin{DoxyParamCaption}\item[{void}]{}{}\end{DoxyParamCaption})}



Initialize the variables used for exact arithmetic. 

\begin{DoxyNote}{Note}
`epsilon' is the largest power of two such that 1.\+0 + epsilon = 1.\+0 in floating-\/point arithmetic. `epsilon' bounds the relative roundoff error. It is used for floating-\/point error analysis. `splitter' is used to split floating-\/point numbers into two half-\/ length significands for exact multiplication. I imagine that a highly optimizing compiler might be too smart for its own good, and somehow cause this routine to fail, if it pretends that floating-\/point arithmetic is too much like real arithmetic. Don\textquotesingle{}t change this routine unless you fully understand it. 
\end{DoxyNote}
\index{vpred.h@{vpred.h}!Vpred\_incircle@{Vpred\_incircle}}
\index{Vpred\_incircle@{Vpred\_incircle}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_incircle()}
{\footnotesize\ttfamily \label{a00026_add3df6a8e6fa33d79b0af9054a675241} 
\textbf{ REAL} Vpred\+\_\+incircle (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{}\end{DoxyParamCaption})}



Adaptive exact 2D incircle test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_incircleexact@{Vpred\_incircleexact}}
\index{Vpred\_incircleexact@{Vpred\_incircleexact}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_incircleexact()}
{\footnotesize\ttfamily \label{a00026_aa4e7d7af15ac70194aad8a5d7fdbe0fb} 
\textbf{ REAL} Vpred\+\_\+incircleexact (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{}\end{DoxyParamCaption})}



Exact 2D incircle test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_incirclefast@{Vpred\_incirclefast}}
\index{Vpred\_incirclefast@{Vpred\_incirclefast}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_incirclefast()}
{\footnotesize\ttfamily \label{a00026_adda50e6f7416902e79bf391adc0f191d} 
\textbf{ REAL} Vpred\+\_\+incirclefast (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{}\end{DoxyParamCaption})}



Approximate 2D incircle test. Nonrobust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pd lies inside the circle passing through pa, pb, and pc; a negative value if it lies outside; and zero if the four points are cocircular. The points pa, pb, and pc must be in counterclockwise order, or the sign of the result will be reversed. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_insphere@{Vpred\_insphere}}
\index{Vpred\_insphere@{Vpred\_insphere}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_insphere()}
{\footnotesize\ttfamily \label{a00026_ac4811e37c08e6aa1069066be5d77c9f1} 
\textbf{ REAL} Vpred\+\_\+insphere (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{, }\item[{\textbf{ REAL} $\ast$}]{pe}{}\end{DoxyParamCaption})}



Adaptive exact 3D insphere test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
{\em pe} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_insphereexact@{Vpred\_insphereexact}}
\index{Vpred\_insphereexact@{Vpred\_insphereexact}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_insphereexact()}
{\footnotesize\ttfamily \label{a00026_a7a354011003573a544c661bc8c9629bb} 
\textbf{ REAL} Vpred\+\_\+insphereexact (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{, }\item[{\textbf{ REAL} $\ast$}]{pe}{}\end{DoxyParamCaption})}



Exact 3D insphere test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
{\em pe} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_inspherefast@{Vpred\_inspherefast}}
\index{Vpred\_inspherefast@{Vpred\_inspherefast}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_inspherefast()}
{\footnotesize\ttfamily \label{a00026_a584298eaa7bbdc87d619555403c7d061} 
\textbf{ REAL} Vpred\+\_\+inspherefast (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{, }\item[{\textbf{ REAL} $\ast$}]{pe}{}\end{DoxyParamCaption})}



Approximate 3D insphere test. Nonrobust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pe lies inside the sphere passing through pa, pb, pc, and pd; a negative value if it lies outside; and zero if the five points are cospherical. The points pa, pb, pc, and pd must be ordered so that they have a positive orientation (as defined by orient3d()), or the sign of the result will be reversed. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
{\em pe} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_orient2d@{Vpred\_orient2d}}
\index{Vpred\_orient2d@{Vpred\_orient2d}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_orient2d()}
{\footnotesize\ttfamily \label{a00026_a0bc8c96f96cc9ad2a6fa911e6f426f75} 
\textbf{ REAL} Vpred\+\_\+orient2d (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{}\end{DoxyParamCaption})}



Adaptive exact 2D orientation test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_orient2dexact@{Vpred\_orient2dexact}}
\index{Vpred\_orient2dexact@{Vpred\_orient2dexact}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_orient2dexact()}
{\footnotesize\ttfamily \label{a00026_acc0ab2f55dd3e1132e1bb34bb64d14e1} 
\textbf{ REAL} Vpred\+\_\+orient2dexact (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{}\end{DoxyParamCaption})}



Exact 2D orientation test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_orient2dfast@{Vpred\_orient2dfast}}
\index{Vpred\_orient2dfast@{Vpred\_orient2dfast}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_orient2dfast()}
{\footnotesize\ttfamily \label{a00026_ac486c720889544acae5950a94be4876e} 
\textbf{ REAL} Vpred\+\_\+orient2dfast (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{}\end{DoxyParamCaption})}



Approximate 2D orientation test. Nonrobust. 

\begin{DoxyReturn}{Returns}
a positive value if the points pa, pb, and pc occur in counterclockwise order; a negative value if they occur in clockwise order; and zero if they are collinear. The result is also a rough approximation of twice the signed area of the triangle defined by the three points. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_orient3d@{Vpred\_orient3d}}
\index{Vpred\_orient3d@{Vpred\_orient3d}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_orient3d()}
{\footnotesize\ttfamily \label{a00026_a69ab7e33e86529fdf82c56a4d0086af6} 
\textbf{ REAL} Vpred\+\_\+orient3d (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{}\end{DoxyParamCaption})}



Adaptive exact 3D orientation test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "{}below"{} is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_orient3dexact@{Vpred\_orient3dexact}}
\index{Vpred\_orient3dexact@{Vpred\_orient3dexact}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_orient3dexact()}
{\footnotesize\ttfamily \label{a00026_a4fd309b85b6eba9b2b949e8cd408d077} 
\textbf{ REAL} Vpred\+\_\+orient3dexact (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{}\end{DoxyParamCaption})}



Exact 3D orientation test. Robust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "{}below"{} is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
\index{vpred.h@{vpred.h}!Vpred\_orient3dfast@{Vpred\_orient3dfast}}
\index{Vpred\_orient3dfast@{Vpred\_orient3dfast}!vpred.h@{vpred.h}}
\doxysubsubsection{Vpred\_orient3dfast()}
{\footnotesize\ttfamily \label{a00026_a20697c6349d030052c71e083c23348cb} 
\textbf{ REAL} Vpred\+\_\+orient3dfast (\begin{DoxyParamCaption}\item[{\textbf{ REAL} $\ast$}]{pa}{, }\item[{\textbf{ REAL} $\ast$}]{pb}{, }\item[{\textbf{ REAL} $\ast$}]{pc}{, }\item[{\textbf{ REAL} $\ast$}]{pd}{}\end{DoxyParamCaption})}



Approximate 3D orientation test. Nonrobust. 

\begin{DoxyReturn}{Returns}
a positive value if the point pd lies below the plane passing through pa, pb, and pc; "{}below"{} is defined so that pa, pb, and pc appear in counterclockwise order when viewed from above the plane. Returns a negative value if pd lies above the plane. Returns zero if the points are coplanar. The result is also a rough approximation of six times the signed volume of the tetrahedron defined by the four points. 
\end{DoxyReturn}

\begin{DoxyParams}{Parameters}
{\em pa} & Pointer to a real parameter \\
\hline
{\em pb} & Pointer to a real parameter \\
\hline
{\em pc} & Pointer to a real parameter \\
\hline
{\em pd} & Pointer to a real parameter \\
\hline
\end{DoxyParams}
