Nav(const Nav& nav) : Pose(nav.pos(), nav.quat() ), mMove0(nav.mMove0), mMove1(nav.mMove1), // linear velocities (raw, smoothed) mSpin0(nav.mSpin0), mSpin1(nav.mSpin1), // angular velocities (raw, smoothed) mTurn(nav.mTurn), mNudge(nav.mNudge), // mSmooth(nav.smooth()), mVelScale(nav.mVelScale) { updateDirectionVectors(); }
int main(){ double world_radius = 50; nav.smooth(0.8); lens.near(1).far(world_radius); // set up mesh: mesh.primitive(Graphics::TRIANGLES); double tri_size = 2; int count = 4000; for (int i=0; i<count; i++) { double x = rnd::uniformS(world_radius); double y = rnd::uniformS(world_radius); double z = rnd::uniformS(world_radius); for (int v=0; v<3; v++) { mesh.color(HSV(float(i)/count, v!=2, 1)); mesh.vertex(x+rnd::uniformS(tri_size), y+rnd::uniformS(tri_size), z+rnd::uniformS(tri_size)); } } // set up grid: grid.primitive(Graphics::LINES); double stepsize = 1./2; for (double x=-1; x<=1; x+= stepsize) { for (double y=-1; y<=1; y+= stepsize) { grid.vertex(x, y, 1); grid.vertex(x, y, -1); }} for (double x=-1; x<=1; x+= stepsize) { for (double z=-1; z<=1; z+= stepsize) { grid.vertex(x, 1, z); grid.vertex(x, -1, z); }} for (double y=-1; y<=1; y+= stepsize) { for (double z=-1; z<=1; z+= stepsize) { grid.vertex(1, y, z); grid.vertex(-1, y, z); }} grid.scale(world_radius); // set up cube: cube.color(1,1,1,1); cube.primitive(Graphics::TRIANGLES); addCube(cube); cube.generateNormals(); win.create(Window::Dim(100, 0, 640, 480), "Cube Map FBO Example", 60); win.displayMode(win.displayMode() | Window::STEREO_BUF); win.add(new StandardWindowKeyControls); win.add(new NavInputControl(nav)); MainLoop::start(); return 0; }
int utSpatial(){ { Pose a; } { Nav a; a.smooth(0); a.home(); a.move(1,0,0); a.step(); assert(a.vec() == Vec3d(1.0,0,0)); a.step(); assert(a.vec() == Vec3d(2.0,0,0)); a.step(0.5); assert(a.vec() == Vec3d(2.5,0,0)); } return 0; }
bool onFrame(){ nav.smooth(0.8); nav.step(1.); stereo.draw(gl, lens, nav, Viewport(width(), height()), *this); if(evolve){ if((phase += 0.0002) > 2*M_PI) phase -= 2*M_PI; for(int k=0; k<N; ++k){ double z = double(k)/N * 4*M_PI; for(int j=0; j<N; ++j){ double y = double(j)/N * 4*M_PI; for(int i=0; i<N; ++i){ double x = double(i)/N * 4*M_PI; volData[k*N*N + j*N + i] = cos(x * cos(phase*7)) + cos(y * cos(phase*8)) + cos(z * cos(phase*9)); }}} } return true; }