https://github.com/ialhashim/topo-blend
Revision 39b13612ebd645a65eda854771b517371f2f858a authored by ennetws on 13 March 2015, 18:17:18 UTC, committed by ennetws on 13 March 2015, 18:17:18 UTC
1 parent c702819
Raw File
Tip revision: 39b13612ebd645a65eda854771b517371f2f858a authored by ennetws on 13 March 2015, 18:17:18 UTC
Create README.md
Tip revision: 39b1361
SimilarSampling.h
#pragma once

#include "SurfaceMeshHelper.h"
using namespace SurfaceMesh;

struct SimilarSampler{

	// Similar Triangles sampling. [Meshlab]
	// Skip vertex and edges
    static QVector<Vector3> FaceSamples(SurfaceMeshModel * m, int sampleNum, QVector<Vector3> & samplesNormals, double * avgSpacing = NULL);
    static QVector<Vector3> FaceSamples(SurfaceMeshModel * m, int sampleNum = 100000)
	{
        QVector<Vector3> samplesNormals;
		return FaceSamples(m, sampleNum, samplesNormals);
	}

	static QVector<Vector3> EdgeUniformFixed(SurfaceMeshModel * m, QVector<Vector3> & samplesNormals, double spacing);
    static QVector<Vector3> EdgeUniform(SurfaceMeshModel * m, int sampleNum, QVector<Vector3> & samplesNormals);
    static QVector<Vector3> EdgeUniform(SurfaceMeshModel * m, int sampleNum = 100000)
	{
        QVector<Vector3> samplesNormals;
		return EdgeUniform(m, sampleNum, samplesNormals);
	}

    static QVector<Vector3> Vertices(SurfaceMeshModel * m, QVector<Vector3> & samplesNormals)
	{	
        QVector<Vector3> samples;

		// Mesh points
        Vector3VertexProperty points = m->vertex_property<Vector3>(VPOINT);

		// Normals
		m->update_face_normals();
		m->update_vertex_normals();
        Vector3VertexProperty normals = m->vertex_property<Vector3>(VNORMAL);

		foreach(Vertex v, m->vertices()) 
		{
			samples.push_back(points[v]);
			samplesNormals.push_back(normals[v]);
		}

		return samples;
	}
    static QVector<Vector3> Vertices(SurfaceMeshModel * m)
	{
        QVector<Vector3> samplesNormals;
		return Vertices(m, samplesNormals);
	}

    static QVector<Vector3> All(SurfaceMeshModel * m, int sampleNum, QVector<Vector3> & samplesNormals);
    static QVector<Vector3> All(SurfaceMeshModel * m, int sampleNum = 100000){
        QVector<Vector3> samplesNormals;
		return All(m,sampleNum,samplesNormals);
	}
};
back to top