1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /**********************************************************************
- *<
- FILE: meshadj.h
- DESCRIPTION: Adjacency list for meshes.
- CREATED BY: Rolf Berteig
- HISTORY:
- *> Copyright (c) 1994, All Rights Reserved.
- **********************************************************************/
- #ifndef __MESHADJ__
- #define __MESHADJ__
- #include "export.h"
- #define UNDEFINED 0xffffffff
- class MEdge {
- public:
- DWORD f[2];
- DWORD v[2];
- };
- class AdjEdgeList {
- public:
- DWORDTab *list; // 1 DWORDTab per vertex. The Tab is a list of indices into the edge list, 1 for each edge adjacent to the vertex
- Tab<MEdge> edges; // Table of edges
- int nverts; // size of 'list'.
- DllExport AdjEdgeList(Mesh& amesh);
- DllExport ~AdjEdgeList();
- AdjEdgeList& operator=(AdjEdgeList& a) {assert(0);return *this;}
- DllExport void AddEdge( DWORD fi, DWORD v1, DWORD v2 );
- DWORDTab& operator[](int i) { return list[i]; }
- DllExport int FindEdge(DWORD v0, DWORD v1);
- DllExport int FindEdge(DWORDTab& vmap,DWORD v0, DWORD v1);
- DllExport void TransferEdges(DWORD from,DWORD to,DWORD except1,DWORD except2,DWORD del);
- DllExport void RemoveEdge(DWORD from,DWORD e);
- };
- class AdjFace {
- public:
- DWORD f[3];
- AdjFace() {f[0] = f[1] = f[2] = UNDEFINED;}
- };
- class AdjFaceList {
- public:
- Tab<AdjFace> list;
- AdjFace& operator[](int i) {return list[i];}
- DllExport AdjFaceList(Mesh& mesh,AdjEdgeList& el);
- };
- class FaceElementList {
- public:
- // For each face, which element is it in
- DWORDTab elem;
- DWORD count;
- DllExport FaceElementList(Mesh &mesh,AdjFaceList& af);
- DWORD operator[](int i) {return elem[i];}
- };
- class FaceClusterList {
- public:
- // Cluster #, one for each face - non-selected faces have UNDEFINED for their id.
- DWORDTab clust;
- DWORD count;
-
- // This version separates cluster also using a minimum angle and optionally the selection set
- FaceClusterList(Mesh *mesh, AdjFaceList& adj,float angle,BOOL useSel=TRUE);
- // Uses selection set
- FaceClusterList(BitArray& fsel, AdjFaceList& adj);
-
- DWORD operator[](int i) { return clust[i]; }
- };
- #endif //__MESHADJ__
|