*** empty log message ***
This commit is contained in:
parent
10eb316ac5
commit
d3a98af017
apps/sample/edgemesh_grid
|
@ -0,0 +1,62 @@
|
|||
#include <stdio.h>
|
||||
#include <vcg/space/color4.h>
|
||||
#include <vcg/space/index/grid_static_ptr.h>
|
||||
#include <vcg/simplex/vertex/with/afvn.h>
|
||||
#include <vcg/simplex/edge/with/emef.h>
|
||||
#include <vcg/complex/edgemesh/base.h>
|
||||
#include <vcg/complex/edgemesh/allocate.h>
|
||||
#include <vcg/complex/edgemesh/update/bounding.h>
|
||||
#include <vcg/complex/edgemesh/closest.h>
|
||||
|
||||
//
|
||||
//using namespace std;
|
||||
//
|
||||
class MyFace;
|
||||
class MyEdge;
|
||||
class MyVertex : public vcg::VertexAFVN<float,MyEdge, MyFace> {};
|
||||
class MyEdge : public vcg::EdgeEMEF<MyEdge, MyVertex> {};
|
||||
class MyEdgeMesh: public vcg::edge::EdgeMesh< std::vector<MyVertex>, std::vector<MyEdge> > {};
|
||||
|
||||
typedef vcg::GridStaticPtr<MyEdge, MyEdge::ScalarType> EdgeMeshGrid;
|
||||
|
||||
#define VERT_NUMB 100
|
||||
|
||||
int main(int , char **)
|
||||
{
|
||||
//create a random mesh of edge
|
||||
MyEdgeMesh em;
|
||||
srand(1000);
|
||||
em.vert.reserve(VERT_NUMB);
|
||||
for (int i=0;i<VERT_NUMB;i=i+2)
|
||||
{
|
||||
float x0=((float)rand()/(float)RAND_MAX)*1000.f;
|
||||
float y0=((float)rand()/(float)RAND_MAX)*1000.f;
|
||||
float z0=((float)rand()/(float)RAND_MAX)*1000.f;
|
||||
float x1=((float)rand()/(float)RAND_MAX)*1000.f;
|
||||
float y1=((float)rand()/(float)RAND_MAX)*1000.f;
|
||||
float z1=((float)rand()/(float)RAND_MAX)*1000.f;
|
||||
em.vert.push_back(MyVertex());
|
||||
MyVertex *v0=&em.vert.back();
|
||||
em.vert.push_back(MyVertex());
|
||||
MyVertex *v1=&em.vert.back();
|
||||
v0->P().X()=x0;
|
||||
v0->P().Y()=y0;
|
||||
v0->P().Z()=z0;
|
||||
v1->P().X()=x1;
|
||||
v1->P().Y()=y1;
|
||||
v1->P().Z()=z1;
|
||||
em.edges.push_back(MyEdge());
|
||||
MyEdge *e=&em.edges.back();
|
||||
e->V(0)=v0;
|
||||
e->V(1)=v1;
|
||||
}
|
||||
vcg::edge::UpdateBounding<MyEdgeMesh>::Box(em);
|
||||
EdgeMeshGrid static_grid;
|
||||
static_grid.Set(em.edges.begin(), em.edges.end());
|
||||
float dist;
|
||||
vcg::Point3f p;
|
||||
MyEdge *e=vcg::edgemesh::GetClosestEdge<MyEdgeMesh,EdgeMeshGrid>(em,static_grid,vcg::Point3f(500,500,500),1000,dist,p);
|
||||
std::vector<MyEdge*> ret;
|
||||
int num=vcg::edgemesh::GetInBoxEdge<MyEdgeMesh,EdgeMeshGrid,std::vector<MyEdge*> >(em,static_grid,em.bbox,ret);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue