summaryrefslogtreecommitdiff
path: root/thirdparty/thekla_atlas/nvmesh/raster/ClippedTriangle.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/thekla_atlas/nvmesh/raster/ClippedTriangle.h')
-rw-r--r--thirdparty/thekla_atlas/nvmesh/raster/ClippedTriangle.h159
1 files changed, 0 insertions, 159 deletions
diff --git a/thirdparty/thekla_atlas/nvmesh/raster/ClippedTriangle.h b/thirdparty/thekla_atlas/nvmesh/raster/ClippedTriangle.h
deleted file mode 100644
index 0947d4851c..0000000000
--- a/thirdparty/thekla_atlas/nvmesh/raster/ClippedTriangle.h
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright NVIDIA Corporation 2007 -- Denis Kovacs <den.kovacs@gmail.com>
-
-#pragma once
-#ifndef NV_MESH_CLIPPEDTRIANGLE_H
-#define NV_MESH_CLIPPEDTRIANGLE_H
-
-#include <nvmath/Vector.h>
-
-namespace nv
-{
-
- class ClippedTriangle
- {
- public:
- ClippedTriangle(Vector2::Arg a, Vector2::Arg b, Vector2::Arg c)
- {
- m_numVertices = 3;
- m_activeVertexBuffer = 0;
-
- m_verticesA[0]=a;
- m_verticesA[1]=b;
- m_verticesA[2]=c;
-
- m_vertexBuffers[0] = m_verticesA;
- m_vertexBuffers[1] = m_verticesB;
- }
-
- uint vertexCount()
- {
- return m_numVertices;
- }
-
- const Vector2 * vertices()
- {
- return m_vertexBuffers[m_activeVertexBuffer];
- }
-
- inline void clipHorizontalPlane(float offset, float clipdirection)
- {
- Vector2 * v = m_vertexBuffers[m_activeVertexBuffer];
- m_activeVertexBuffer ^= 1;
- Vector2 * v2 = m_vertexBuffers[m_activeVertexBuffer];
-
- v[m_numVertices] = v[0];
-
- float dy2, dy1 = offset - v[0].y;
- int dy2in, dy1in = clipdirection*dy1 >= 0;
- uint p=0;
-
- for (uint k=0; k<m_numVertices; k++)
- {
- dy2 = offset - v[k+1].y;
- dy2in = clipdirection*dy2 >= 0;
-
- if (dy1in) v2[p++] = v[k];
-
- if ( dy1in + dy2in == 1 ) // not both in/out
- {
- float dx = v[k+1].x - v[k].x;
- float dy = v[k+1].y - v[k].y;
- v2[p++] = Vector2(v[k].x + dy1*(dx/dy), offset);
- }
-
- dy1 = dy2; dy1in = dy2in;
- }
- m_numVertices = p;
-
- //for (uint k=0; k<m_numVertices; k++) printf("(%f, %f)\n", v2[k].x, v2[k].y); printf("\n");
- }
-
- inline void clipVerticalPlane(float offset, float clipdirection )
- {
- Vector2 * v = m_vertexBuffers[m_activeVertexBuffer];
- m_activeVertexBuffer ^= 1;
- Vector2 * v2 = m_vertexBuffers[m_activeVertexBuffer];
-
- v[m_numVertices] = v[0];
-
- float dx2, dx1 = offset - v[0].x;
- int dx2in, dx1in = clipdirection*dx1 >= 0;
- uint p=0;
-
- for (uint k=0; k<m_numVertices; k++)
- {
- dx2 = offset - v[k+1].x;
- dx2in = clipdirection*dx2 >= 0;
-
- if (dx1in) v2[p++] = v[k];
-
- if ( dx1in + dx2in == 1 ) // not both in/out
- {
- float dx = v[k+1].x - v[k].x;
- float dy = v[k+1].y - v[k].y;
- v2[p++] = Vector2(offset, v[k].y + dx1*(dy/dx));
- }
-
- dx1 = dx2; dx1in = dx2in;
- }
- m_numVertices = p;
-
- //for (uint k=0; k<m_numVertices; k++) printf("(%f, %f)\n", v2[k].x, v2[k].y); printf("\n");
- }
-
- void computeAreaCentroid()
- {
- Vector2 * v = m_vertexBuffers[m_activeVertexBuffer];
- v[m_numVertices] = v[0];
-
- m_area = 0;
- float centroidx=0, centroidy=0;
- for (uint k=0; k<m_numVertices; k++)
- {
- // http://local.wasp.uwa.edu.au/~pbourke/geometry/polyarea/
- float f = v[k].x*v[k+1].y - v[k+1].x*v[k].y;
- m_area += f;
- centroidx += f * (v[k].x + v[k+1].x);
- centroidy += f * (v[k].y + v[k+1].y);
- }
- m_area = 0.5f * fabs(m_area);
- if (m_area==0) {
- m_centroid = Vector2(0.0f);
- } else {
- m_centroid = Vector2(centroidx/(6*m_area), centroidy/(6*m_area));
- }
- }
-
- void clipAABox(float x0, float y0, float x1, float y1)
- {
- clipVerticalPlane ( x0, -1);
- clipHorizontalPlane( y0, -1);
- clipVerticalPlane ( x1, 1);
- clipHorizontalPlane( y1, 1);
-
- computeAreaCentroid();
- }
-
- Vector2 centroid()
- {
- return m_centroid;
- }
-
- float area()
- {
- return m_area;
- }
-
- private:
- Vector2 m_verticesA[7+1];
- Vector2 m_verticesB[7+1];
- Vector2 * m_vertexBuffers[2];
- uint m_numVertices;
- uint m_activeVertexBuffer;
- float m_area;
- Vector2 m_centroid;
- };
-
-} // nv namespace
-
-#endif // NV_MESH_CLIPPEDTRIANGLE_H