Viewpoint AutoCPSensing::current_viewpoint() { geometry_msgs::Quaternion orientation = ToGeometryMsgsQuaternion( camera_->getOrientation()); geometry_msgs::Point position = ToGeometryMsgsPoint(camera_->getPosition()); geometry_msgs::Point focus; QuaternionToFocus(orientation, position, &focus); return Viewpoint(ToOgreVector3(position), ToOgreVector3(focus)); }
void ACMIView::Exec() { Tpoint pos; if( !acmiDraw || !_tapeHasLoaded || Tape() == NULL || !Tape()->IsLoaded()) return; if(fcount++ % 10 == 0) { frameStart = timeGetTime(); frameTime = frameStart - lastFrame; lastFrame = frameStart; } //update the tape Tape()->Update( -1.0 ); // set the camera's position and rotation matrix UpdateViewPosRot(); pos.x = _camWorldPos.x + _camPos.x; pos.y = _camWorldPos.y + _camPos.y; pos.z = _camWorldPos.z + _camPos.z; // check view isn't below ground float groundZ= _renderer->viewpoint->GetGroundLevel( pos.x, pos.y ); if ( pos.z > groundZ - 10.0f ) pos.z = groundZ - 10.0f; Viewpoint()->Update(&pos); // draw the ACMI View // Draw(); // ruurrr? TheTimeManager.SetTime(DWORD(Tape()->SimTime() * 1000)); }
void Camera::setViewpoint(double x, double y, double z) { setViewpoint(Viewpoint(x, y, z)); }
void main(int argc,String *argv) { ArgParser a=ArgParser(argc,argv); size=a.intafter("-gs","grid size",20); float rotspeed=a.floatafter("-rs","rotation speed",pi/80.0); float elevang=a.floatafter("-ea","elevation angle",pi/7.0); float waterlevel=a.floatafter("-wl","water level",-0.2); bool funky=a.argexists("-f","funky"); bool groovy=a.argexists("-g","groovy"); a.done(); int scrwid=800; int scrhei=600; //printf("z\n"); allegrosetup(scrwid,scrhei); //printf("a\n"); PPsetup(scrwid,scrhei,4.0,4.0); //printf("b\n"); mypalette(0,myRGB(0,0,0)); mypalette(255,myRGB(0,255,0)); makepalette(&greypalette); alt=Map2d<float>(size,size,0.0); randomise(); drv=Map2d<float>(size,size,&myrnd); vel=Map2d<float>(size,size,0.0); vs=Map2d<V3d>(size,size); int time=0; dogeol(300); while (!keypressed()) { //printf("d\n"); time++; // Generate new mountain alt.pos[0][0]=drv.pos[0][0]; alt.pos[size-1][0]=drv.pos[size-1][0]; alt.pos[0][size-1]=drv.pos[0][size-1]; alt.pos[size-1][size-1]=drv.pos[size-1][size-1]; makemountain(0,0,size-1,size-1); // Render mountain PPclear(); Matrix ma=Matrix::rotation(V3d(0,1,0),rotspeed*(float)time); Matrix mb=Matrix::rotation(V3d(1,0,0),elevang); //printf("!"); Octree<Renderable*> o=Octree<Renderable*>(V3d::o,2.0,&getpos); for (int i=0;i<size;i++) for (int j=0;j<size;j++) { //printf(">"); V3d x=V3d((float)i/(float)size*2.0-1.0,alt.pos[i][j],(float)j/(float)size*2.0-1.0); // x.y=x.y*ramp((float)i/(float)size*2.0); x=x*V3d(1,2,1)-V3d(0,1,0); bool wat; if (x.y<waterlevel) { x.y=waterlevel; wat=true; } else wat=false; x=ma*x; x=mb*x; vs.pos[i][j]=x; if (i>0 && j>0) { o.add(new Triangle3d(x,vs.pos[i-1][j],vs.pos[i][j-1])); o.add(new Triangle3d(vs.pos[i-1][j],vs.pos[i][j-1],vs.pos[i-1][j-1])); } } Ori ori; Viewpoint v=Viewpoint(V3d(0,0,-4),ori); // Viewpoint v=Viewpoint(mb*(ma*V3d(0,0,-4)),mb*(ma*ori)); render(&o,&v); o.freedom(); // PPshow(); // alt.display(); // Change drivers dogeol(1); } }
static Viewpoint fromto(V3d from,V3d to,V3d up) { return Viewpoint(from,Ori::xz(V3d::normcross(up,to-from),to-from)); }
Avatar() { v=Viewpoint(V3d(0,0,-4),V3d(0,1.5,0),V3d::j); }
Viewpoint orientor() { // Returns an viewpoint to frame where plane is x,y plane return Viewpoint(pos,Ori::indir(nor)); }