Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members   Examples  

/home/xchen/xia/src/glrender/demoSubdivision.cc

#include <View.H>
#include <TensorBlossom.H>



namespace xchen
{


  void tensor_blossom_srf(View* v)
  {
    TensorBlossom<2> *srf = new TensorBlossom<2>(3,5, 1,3);
    srf->ControlMesh() = 
      E3(0, 0, 1),      E3(0, 1, 0),    E3(0, 2, 1),    
      E3(1, 0, 0),      E3(1, 1, 2),    E3(1, 2, 0),    
      E3(2, 0, 2),      E3(2, 1, 0),    E3(2, 2, 2),    
      E3(3, 0, 0),      E3(3, 1, 2),    E3(3, 2, 0),    
      E3(4, 0, 1),      E3(4, 1, 0),    E3(4, 2, 1);

    new glModel(v, srf);

    srf->Subdivide(3);
  }
  

  void quadraticBzrBasis(View* v)
  {
    TensorBlossom<1,4> *bzr = new TensorBlossom<1,4>(2, 3);
    bzr->ControlMesh() = E4(0,0,0,1), E4(.5,.5,.0,1.5), E4(1,0,0,1);
    bzr->KnotVector() = 2., 3, 4, 5;
    bzr->IsRational() = true;
    
    new glModel(v, bzr);
    bzr->Subdivide(5);

    TensorBlossom<1,4> *bzr2 = new TensorBlossom<1,4>(2, 3);
    bzr2->ControlMesh() = E4(0,0,0,1), E4(.5,.5,.0,1.5)*2, E4(1,0,0,1)*2;
    bzr2->KnotVector() = 3., 4, 6, 8;
    bzr2->IsRational() = true;
    
    new glModel(v, bzr2);
    bzr2->Subdivide(5);
  }
  
  void testSubdivisionCrvOpen2FloatingEnds(View* v)
  {

    //     SubdivisionManifold<1>* bsp_crv = new SubdivisionManifold<1>(8,9);
    //     bsp_crv->ControlMesh() =  
    //       E3(-.5, -.3,0), E3(-.3, .2,0), E3(-.1, .4, 0), E3(.1, .8,0), E3(.3, .5,0),E3(.5,.2,0), E3(.17,.4,0), E3(.9, -.3, 0), E3(1.1, -.8,0);
    //     new glModel(v, bsp_crv);
    //     bsp_crv->Subdivide(10);

    //     TensorBlossom<1>::mesh_t msh;
    //     msh = E3(-.5, -.3,0), E3(-.3, .2,0), E3(-.1, .4, 0), E3(.1, .8,0), E3(.3, .5,0),E3(.5,.2,0), E3(.17,.4,0), E3(.9, -.3, 0), E3(1.1, -.8,0);
    //     TensorBlossom<1>* bzr_crv = new TensorBlossom<1>(msh);
    //     new glModel(v, bzr_crv);
    //     bzr_crv->Subdivide(10);
  }


  void quadraticBSplineSrf(View* v)
  {
    //     SubdivisionManifold<2>* bsp_srf = new SubdivisionManifold<2>(2,4, 2,4);

    //     bsp_srf->ControlMesh() =
    //       E3( 0,  0,  .0), E3(.3,  .2, .1), E3(.6, .2, .1), E3(1.,   0, .0),
    //       E3(-.1,.3,  .1), E3( .2, .5, .3), E3(.5, .5, .3), E3( .9, .3, .1),
    //       E3(-.1, .6, .1), E3( .2, .8, .3), E3(.5, .9, .3), E3( .9, .6, .1),
    //       E3( 0, .9,  .0), E3(.3,  1., .1), E3(.6, 1., .1), E3(1.,  .9, .0);

    //     new glModel(v, bsp_srf);
    //     bsp_srf->Subdivide(5);
  }
  
  void testSubdivisionSrfOpen2FloatingEnds(View* v)
  {
    //     TensorBlossom<2,3> :: mesh_t msh;
    //     msh =
    //       E3( 0,  0,.0),  E3(.5, .1,.0),  E3(1.0, 0,.0), 
    //       E3(-.1,.5,.0),  E3( .4,.6,.0),  E3( .9,.5,.0), 
    //       E3( 0,  .9,.0), E3(.5, 1.0,.0), E3(1.0, .9,.0);

    //     TensorBlossom<2,3> *bzr_srf = new TensorBlossom<2,3>(msh);

    // //       E3( 0,  0, .0),  E3(.5, .0,.0),  E3(1.0,  0,.0), 
    // //       E3( 0,  .5,.0),  E3(.5, .5,.0),  E3(1.0, .5,.0), 
    // //       E3( 0,  1.,.0),  E3(.5, 1.,.0),  E3(1.0, 1.,.0), 
    //     new glModel(v, bzr_srf);
    //     bzr_srf->Subdivide(5);

    //     SubdivisionManifold<2,3> *bsp_srf = new SubdivisionManifold<2,3>(2,3,2,3);

    //     bsp_srf->ControlMesh() = 
    //       E3( 0,  0,.0),  E3(.5, .1,.0),  E3(1.0, 0,.0), 
    //       E3(-.1,.5,.0),  E3( .4,.6,.0),  E3( .9,.5,.0), 
    //       E3( 0,  .9,.0), E3(.5, 1.0,.0), E3(1.0, .9,.0);

    //     new glModel(v, bsp_srf);
    //     bsp_srf->Subdivide(5);
  }

  void triQuadraticBzrVolume(View* v)  
  {
    //     TensorArray<E3, 3> mesh(3,3,3);
    //     mesh =       
    //       E3( 0,  0,.0),  E3(.5, .1,.0),  E3(1.0, 0,.0), 
    //       E3(-.1,.5,.0),  E3( .4,.6,.0), E3( .9,.5,.0), 
    //       E3( 0,  .9,.0), E3(.5, 1.0,.0), E3(1.0, .9,.0), 
    //       E3( 0,  0,.5) + E3(-.3,0,0), E3(.5, .1,.5) + E3(-.3,0,0), E3(1.0, 0,.5) + E3(-.3,0,0), 
    //       E3(-.1,.5,.5) + E3(-.3,0,0), E3( .4,.6,.5) + E3(-.3,0,0), E3( .9,.5,.5) + E3(-.3,0,0), 
    //       E3( 0,  .9,.5) +E3(-.3,0,0), E3(.5, 1.0,.5) + E3(-.3,0,0), E3(1.0, .9,.5) + E3(-.3,0,0), 
    //       E3( 0,  0,1.0), E3(.5, .1,1.0), E3(1.0, 0,1.0), 
    //       E3(-.1,.5,1.0), E3( .4,.6,1.0), E3( .9,.5,1.0), 
    //       E3( 0,  .9,1.0),E3(.5, 1.0,1.0), E3(1.0, .9,1.0);

    //     TensorBlossom<3,3> *bzr_vol = new TensorBlossom<3,3>(2,2,2);
    //     bzr_vol->ControlMesh() = mesh;
    //     new glModel(v, bzr_vol);
    //     bzr_vol->Subdivide(3);

    //     SubdivisionManifold<3,3> *bsp_vol = new SubdivisionManifold<3,3>(2,3, 2,3, 2,3);
    //     bsp_vol->ControlMesh() = mesh;
    //     new glModel(v, bsp_vol);
    //     bsp_vol->Subdivide(3);
  }



  void new_glModel(View* v) 
  {


    //     testSubdivisionCrvOpen2FloatingEnds(v);
    //     testSubdivisionSrfOpen2FloatingEnds(v);
    //     tensor_blossom_srf(v);
    //     bspcircle(v);
    //     bsphalfcircle(v);
    //     bspsph_rev(v);

    //     triQuadraticBzrVolume(v);
    //    quadraticBzrBasis(v1);
  }



}//end namespace xchen

Generated on Wed Apr 7 21:40:48 2004 by doxygen1.2.18