Example #1
0
Wtransf
compute_xf(CWpt_list& p)
{
   Wpt    c = p.average();
   double s = p.spread();

   ARRAY<Wvec> v(p.num());
   for (int i=0; i<p.num(); i++) {
      v += (p[i] - c)/s;
   }
   assert(v.num() == p.num());
   return Wtransf::translation(c) * compute_xf(v) * Wtransf::translation(-c);
}
Example #2
0
Wtransf
compute_xf(CWpt_list& p)
{
   Wpt    c = p.average();
   double s = p.spread();

   vector<Wvec> v(p.size());
   for (Wpt_list::size_type i=0; i<p.size(); i++) {
      v[i] = (p[i] - c)/s;
   }
   assert(v.size() == p.size());
   return Wtransf::translation(c) * compute_xf(v) * Wtransf::translation(-c);
}
Example #3
0
int 
main(int argc, char *argv[])
{
   if (argc != 1) {
      cerr << "Usage: " << argv[0] << " < input.sm > output.sm" << endl;
      return 1;
   }

   BMESHptr mesh = BMESH::read_jot_stream(cin);
   if (!mesh || mesh->empty())
      return 1; // didn't work

   Wtransf xf = compute_xf(mesh->verts().pts());

   MOD::tick();
   mesh->transform(xf, MOD());

   mesh->write_stream(cout);

   return 0;
}