Recast Navigation  1.0.35
RecastMeshDetail.cpp File Reference
#include <float.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include "Recast.h"
#include "RecastAlloc.h"
#include "RecastAssert.h"

Classes

struct  rcHeightPatch
 

Macros

#define _USE_MATH_DEFINES
 

Enumerations

enum  EdgeValues { EV_UNDEF = -1, EV_HULL = -2 }
 

Functions

float vdot2 (const float *a, const float *b)
 
float vdistSq2 (const float *p, const float *q)
 
float vdist2 (const float *p, const float *q)
 
float vcross2 (const float *p1, const float *p2, const float *p3)
 
static bool circumCircle (const float *p1, const float *p2, const float *p3, float *c, float &r)
 
static float distPtTri (const float *p, const float *a, const float *b, const float *c)
 
static float distancePtSeg (const float *pt, const float *p, const float *q)
 
static float distancePtSeg2d (const float *pt, const float *p, const float *q)
 
static float distToTriMesh (const float *p, const float *verts, const int, const int *tris, const int ntris)
 
static float distToPoly (int nvert, const float *verts, const float *p)
 
static unsigned short getHeight (const float fx, const float fy, const float fz, const float, const float ics, const float ch, const rcHeightPatch &hp)
 
static int findEdge (const int *edges, int nedges, int s, int t)
 
static int addEdge (rcContext *ctx, int *edges, int &nedges, const int maxEdges, int s, int t, int l, int r)
 
static void updateLeftFace (int *e, int s, int t, int f)
 
static int overlapSegSeg2d (const float *a, const float *b, const float *c, const float *d)
 
static bool overlapEdges (const float *pts, const int *edges, int nedges, int s1, int t1)
 
static void completeFacet (rcContext *ctx, const float *pts, int npts, int *edges, int &nedges, const int maxEdges, int &nfaces, int e)
 
static void delaunayHull (rcContext *ctx, const int npts, const float *pts, const int nhull, const int *hull, rcIntArray &tris, rcIntArray &edges)
 
static float polyMinExtent (const float *verts, const int nverts)
 
int prev (int i, int n)
 
int next (int i, int n)
 
static void triangulateHull (const int nverts, const float *verts, const int nhull, const int *hull, rcIntArray &tris)
 
float getJitterX (const int i)
 
float getJitterY (const int i)
 
static bool buildPolyDetail (rcContext *ctx, const float *in, const int nin, const float sampleDist, const float sampleMaxError, const rcCompactHeightfield &chf, const rcHeightPatch &hp, float *verts, int &nverts, rcIntArray &tris, rcIntArray &edges, rcIntArray &samples)
 
static void getHeightDataSeedsFromVertices (const rcCompactHeightfield &chf, const unsigned short *poly, const int npoly, const unsigned short *verts, const int bs, rcHeightPatch &hp, rcIntArray &stack)
 
static void getHeightData (const rcCompactHeightfield &chf, const unsigned short *poly, const int npoly, const unsigned short *verts, const int bs, rcHeightPatch &hp, rcIntArray &stack, int region)
 
static unsigned char getEdgeFlags (const float *va, const float *vb, const float *vpoly, const int npoly)
 
static unsigned char getTriFlags (const float *va, const float *vb, const float *vc, const float *vpoly, const int npoly)
 
bool rcBuildPolyMeshDetail (rcContext *ctx, const rcPolyMesh &mesh, const rcCompactHeightfield &chf, const float sampleDist, const float sampleMaxError, rcPolyMeshDetail &dmesh)
 Builds a detail mesh from the provided polygon mesh. More...
 
bool rcMergePolyMeshDetails (rcContext *ctx, rcPolyMeshDetail **meshes, const int nmeshes, rcPolyMeshDetail &mesh)
 Merges multiple detail meshes into a single detail mesh. More...
 

Variables

static const unsigned RC_UNSET_HEIGHT = 0xffff
 

Macro Definition Documentation

#define _USE_MATH_DEFINES

Enumeration Type Documentation

enum EdgeValues
Enumerator
EV_UNDEF 
EV_HULL 

Function Documentation

static int addEdge ( rcContext ctx,
int *  edges,
int &  nedges,
const int  maxEdges,
int  s,
int  t,
int  l,
int  r 
)
static
static bool buildPolyDetail ( rcContext ctx,
const float *  in,
const int  nin,
const float  sampleDist,
const float  sampleMaxError,
const rcCompactHeightfield chf,
const rcHeightPatch hp,
float *  verts,
int &  nverts,
rcIntArray tris,
rcIntArray edges,
rcIntArray samples 
)
static
static bool circumCircle ( const float *  p1,
const float *  p2,
const float *  p3,
float *  c,
float &  r 
)
static
static void completeFacet ( rcContext ctx,
const float *  pts,
int  npts,
int *  edges,
int &  nedges,
const int  maxEdges,
int &  nfaces,
int  e 
)
static
static void delaunayHull ( rcContext ctx,
const int  npts,
const float *  pts,
const int  nhull,
const int *  hull,
rcIntArray tris,
rcIntArray edges 
)
static
static float distancePtSeg ( const float *  pt,
const float *  p,
const float *  q 
)
static
static float distancePtSeg2d ( const float *  pt,
const float *  p,
const float *  q 
)
static
static float distPtTri ( const float *  p,
const float *  a,
const float *  b,
const float *  c 
)
static
static float distToPoly ( int  nvert,
const float *  verts,
const float *  p 
)
static
static float distToTriMesh ( const float *  p,
const float *  verts,
const int  ,
const int *  tris,
const int  ntris 
)
static
static int findEdge ( const int *  edges,
int  nedges,
int  s,
int  t 
)
static
static unsigned char getEdgeFlags ( const float *  va,
const float *  vb,
const float *  vpoly,
const int  npoly 
)
static
static unsigned short getHeight ( const float  fx,
const float  fy,
const float  fz,
const float  ,
const float  ics,
const float  ch,
const rcHeightPatch hp 
)
static
static void getHeightData ( const rcCompactHeightfield chf,
const unsigned short *  poly,
const int  npoly,
const unsigned short *  verts,
const int  bs,
rcHeightPatch hp,
rcIntArray stack,
int  region 
)
static
static void getHeightDataSeedsFromVertices ( const rcCompactHeightfield chf,
const unsigned short *  poly,
const int  npoly,
const unsigned short *  verts,
const int  bs,
rcHeightPatch hp,
rcIntArray stack 
)
static
float getJitterX ( const int  i)
inline
float getJitterY ( const int  i)
inline
static unsigned char getTriFlags ( const float *  va,
const float *  vb,
const float *  vc,
const float *  vpoly,
const int  npoly 
)
static
int next ( int  i,
int  n 
)
inline
static bool overlapEdges ( const float *  pts,
const int *  edges,
int  nedges,
int  s1,
int  t1 
)
static
static int overlapSegSeg2d ( const float *  a,
const float *  b,
const float *  c,
const float *  d 
)
static
static float polyMinExtent ( const float *  verts,
const int  nverts 
)
static
int prev ( int  i,
int  n 
)
inline
static void triangulateHull ( const int  nverts,
const float *  verts,
const int  nhull,
const int *  hull,
rcIntArray tris 
)
static
static void updateLeftFace ( int *  e,
int  s,
int  t,
int  f 
)
static
float vcross2 ( const float *  p1,
const float *  p2,
const float *  p3 
)
inline
float vdist2 ( const float *  p,
const float *  q 
)
inline
float vdistSq2 ( const float *  p,
const float *  q 
)
inline
float vdot2 ( const float *  a,
const float *  b 
)
inline

Variable Documentation

const unsigned RC_UNSET_HEIGHT = 0xffff
static