#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
1.2.18