Пример #1
0
void
TriangleMesh::merge(const TriangleMesh* mesh)
{
    // reset stats and metadata
    int number_of_facets = this->stl.stats.number_of_facets;
    stl_invalidate_shared_vertices(&this->stl);
    this->repaired = false;
    
    // update facet count and allocate more memory
    this->stl.stats.number_of_facets = number_of_facets + mesh->stl.stats.number_of_facets;
    this->stl.stats.original_num_facets = this->stl.stats.number_of_facets;
    stl_reallocate(&this->stl);
    
    // copy facets
    for (int i = 0; i < mesh->stl.stats.number_of_facets; i++) {
        this->stl.facet_start[number_of_facets + i] = mesh->stl.facet_start[i];
    }
    
    // update size
    stl_get_size(&this->stl);
}
Пример #2
0
Файл: util.c Проект: 4ZM/Slic3r
void
stl_translate(stl_file *stl, float x, float y, float z)
{
  int i;
  int j;
  
  for(i = 0; i < stl->stats.number_of_facets; i++)
    {
      for(j = 0; j < 3; j++)
	{
	  stl->facet_start[i].vertex[j].x += x;
	  stl->facet_start[i].vertex[j].y += y;
	  stl->facet_start[i].vertex[j].z += z;
	}
    }
  stl->stats.min.x += x;
  stl->stats.min.y += y;
  stl->stats.min.z += z;
  stl->stats.max.x += x;
  stl->stats.max.y += y;
  stl->stats.max.z += z;
  
  stl_invalidate_shared_vertices(stl);
}
Пример #3
0
Файл: util.c Проект: 4ZM/Slic3r
void
stl_scale(stl_file *stl, float factor)
{
  int i;
  int j;
  
  // scale extents
  stl->stats.min.x *= factor;
  stl->stats.min.y *= factor;
  stl->stats.min.z *= factor;
  stl->stats.max.x *= factor;
  stl->stats.max.y *= factor;
  stl->stats.max.z *= factor;
  
  // scale size
  stl->stats.size.x *= factor;
  stl->stats.size.y *= factor;
  stl->stats.size.z *= factor;
  
  // scale volume
  if (stl->stats.volume > 0.0) {
    stl->stats.volume *= (factor * factor * factor);
  }
  
  for(i = 0; i < stl->stats.number_of_facets; i++)
    {
      for(j = 0; j < 3; j++)
	{
	  stl->facet_start[i].vertex[j].x *= factor;
	  stl->facet_start[i].vertex[j].y *= factor;
	  stl->facet_start[i].vertex[j].z *= factor;
	}
    }
   
   stl_invalidate_shared_vertices(stl);
}