#include <View.H>
#include <TensorBlossom.H>
using namespace xchen;
void bspsph(View* v)
{
TensorBlossom<2,4> *sph = new TensorBlossom<2,4>(2,5, 2,8);
double w = sqrt(2.0) / 2;
E4 p(0, 1, 0, 1);
E4
p1 = p,
p2 = rZ(-45)(p).Szw(w),
p3 = rZ(-90)(p),
p4 = rZ(-135)(p).Szw(w),
p5 = rZ(-180)(p);
sph->ControlMesh() =
p1, rY(45)(p1).Syw(w), rY(90)(p1), rY(135)(p1).Syw(w), rY(180)(p1), rY(225)(p1).Syw(w),rY(270)(p1), rY(315)(p1).Syw(w),
p2, rY(45)(p2).Syw(w), rY(90)(p2), rY(135)(p2).Syw(w), rY(180)(p2), rY(225)(p2).Syw(w),rY(270)(p2), rY(315)(p2).Syw(w),
p3, rY(45)(p3).Syw(w), rY(90)(p3), rY(135)(p3).Syw(w), rY(180)(p3), rY(225)(p3).Syw(w),rY(270)(p3), rY(315)(p3).Syw(w),
p4, rY(45)(p4).Syw(w), rY(90)(p4), rY(135)(p4).Syw(w), rY(180)(p4), rY(225)(p4).Syw(w),rY(270)(p4), rY(315)(p4).Syw(w),
p5, rY(45)(p5).Syw(w), rY(90)(p5), rY(135)(p5).Syw(w), rY(180)(p5), rY(225)(p5).Syw(w),rY(270)(p5), rY(315)(p5).Syw(w);
sph->SetPeriodicEnd(0);
sph->KnotVector() =
0.,0, 1, 1, 2, 2, 3, 3, 4,
0.,0, 1, 1, 2, 2;
sph->IsRational() = true;
cout << "\n________________________________________________________________________________________________________________________";
cout << "\nSphere is \n" << *sph << endl;
new glModel(v, sph);
}
void new_glModel(View* v)
{
bspsph(v);
}