Пример #1
0
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));
}
Пример #2
0
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));
											
}
Пример #3
0
void Camera::setViewpoint(double x, double y, double z) {
  setViewpoint(Viewpoint(x, y, z));
}
Пример #4
0
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);

  }

}
Пример #5
0
 static Viewpoint fromto(V3d from,V3d to,V3d up) {
   return Viewpoint(from,Ori::xz(V3d::normcross(up,to-from),to-from));
 }
Пример #6
0
 Avatar() {
     v=Viewpoint(V3d(0,0,-4),V3d(0,1.5,0),V3d::j);
 }
Пример #7
0
 Viewpoint orientor() {
   // Returns an viewpoint to frame where plane is x,y plane
   return Viewpoint(pos,Ori::indir(nor));
 }