コード例 #1
0
void TriMesh2D::compute_tris() {
   
   tri_circumcentres.clear();
   tri_barycentres.clear();
   
   for(unsigned int i = 0; i < tris.size(); ++i) {
      //compute area
      Vec2f v0 = vertices[tris[i][0]];
      Vec2f v1 = vertices[tris[i][1]];
      Vec2f v2 = vertices[tris[i][2]];
      
      float area = 0.5f*cross(v1-v0,v2-v0);
      
      //flip vertex order if necessary for consistency
      if(area < 0) {
         int t = tris[i][1];
         tris[i][1] = tris[i][2];
         tris[i][2] = t;
         area = -area;
      }
      tri_areas.push_back(area);
      tri_circumcentres.push_back(circumcentre(v0,v1,v2));
      tri_barycentres.push_back(barycentre(v0,v1,v2));      
   }
   
}
コード例 #2
0
ファイル: tet.cpp プロジェクト: Fandekasp/steps
std::vector<double> stetmesh::Tet::getBarycenter(void) const
{
	double * v0 = pTetmesh->_getVertex(pVerts[0]);
	double * v1 = pTetmesh->_getVertex(pVerts[1]);
	double * v2 = pTetmesh->_getVertex(pVerts[2]);
	double * v3 = pTetmesh->_getVertex(pVerts[3]);
	/*double v0[3], v1[3], v2[3], v3[3];		// Defunct code- now use internal
	for (uint i=0; i < 3; ++i)					// method which returns pointer
	{
		v0[i] = v0vec[i];
		v1[i] = v1vec[i];
		v2[i] = v2vec[i];
		v3[i] = v3vec[i];
	}*/
	steps::math::tet_barycenter(v0, v1, v2, v3, pBaryc);
	std::vector<double> barycentre(3);
	barycentre[0] = pBaryc[0];
	barycentre[1] = pBaryc[1];
	barycentre[2] = pBaryc[2];
	return barycentre;
 }
コード例 #3
0
ファイル: nuage.hpp プロジェクト: liardety/pratical
 public: Polaire operator () (const Nuage<Point, std::vector> & nuage) { return Polaire(barycentre(nuage)); }
コード例 #4
0
ファイル: nuage.hpp プロジェクト: liardety/pratical
 public: Cartesien operator () (const Nuage<Point, std::vector> & nuage) { return barycentre(nuage); }