Beispiel #1
0
// This callback function gets called by the Glut
// system whenever it decides things need to be redrawn.
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	if (current_view == perspective_view) {
		glEnable(GL_DEPTH_TEST);
		glLoadIdentity();
		gluLookAt(-3,-3,7,   3,3,0,   0,0,1);
	}
	else if (current_view == top_view){
		glDisable(GL_DEPTH_TEST);
		glLoadIdentity();
	}
	else if (current_view == rat_view){
		glEnable(GL_DEPTH_TEST);
		glLoadIdentity();
		double z_level = .25;
		double x = gRat.getX();
		double y = gRat.getY();
		//problem with dx and dy
		double dx = gRat.getdX();
		double dy = gRat.getdY();
		//double at_x = x + dx;
		//double at_y = y + dy;
		double at_x =gRat.getNextX() ;
		double at_y =gRat.getNextY() ;
		double at_z = z_level;
		//std::cout<<dx<<"   "<<at_x<<"----"<<dy<<"    "<<at_y<<std::endl;
		gluLookAt(x,y,z_level,  at_x, at_y, at_z,  0,0,1);
		//gluLookAt(x,y,z_level,  360, 360, at_z,  0,0,1);
	}


	gMaze.Draw(current_view);

	if(gMiddleButtonDown) {
		gRat.Scuttle(gMaze); 
		glutPostRedisplay();
	}
	if(gLeftButtonDown){
		gRat.SpinLeft(); 
		glutPostRedisplay();
	}
	if(gRightButtonDown){
		gRat.SpinRight(); 
		glutPostRedisplay();
	}
	gRat.Draw(current_view);

	glutSwapBuffers();
}
Beispiel #2
0
//accepts rational numbers and returns their sum
const Rat operator +(const Rat& r1, const Rat& r2){
	int denom = lcm(r1.getDenom(), r2.getDenom());
	int num = (r1.getNum()*denom/r1.getDenom()) + (r2.getNum()*denom/r2.getDenom());

	Rat sum = Rat(num, denom);
	
	return sum.reduce();
}
Beispiel #3
0
//accepts rational numbers and returns their difference
const Rat operator -(const Rat& r1, const Rat& r2){	
	int denom = lcm(r1.getDenom(), r2.getDenom());
	int num = (r1.getNum()*denom/r1.getDenom()) - (r2.getNum()*denom/r2.getDenom());

	Rat dif = Rat(num, denom);
	
	return dif.reduce();
}
Beispiel #4
0
// Your initialization code goes here.
void InitializeMyStuff()
{
  gRat.setMaze(&gMaze);
  gFirstPerson = true;

  initTextures();
}
Beispiel #5
0
int main() {
    Rat a = Rat(1,2);
    Rat b = Rat(3,4);
    
    Rat add = a.operator+(b);
    cout << add.getN() << "/" << add.getD() << endl;
    
    Rat mult = a.operator*(b);
    cout << mult.getN() << "/" << mult.getD() << endl;
    
    Rat div = a.operator/(b);
    cout << div.getN() << "/" << div.getD() << endl;
}
Beispiel #6
0
//accepts rational numbers and returns their product
const Rat operator *(const Rat& r1, const Rat& r2){	
	int denom = r1.getDenom() * r2.getDenom();
	int num = r1.getNum() * r2.getNum();

	Rat prod = Rat(num, denom);
	
	return prod.reduce();
}
void Carnivore::hunt(){
	vector<Creature *>* list_of_animals = environment->getCreaturesAround(typeid(Deer), position_x, position_y);
	//cout<<list_of_animals->size()<<"count\n";
	if(list_of_animals->size() !=0){
		Deer * deer = (Deer *)(list_of_animals->at(0));
		this->addFoodLevel(deer->getConsumed(0));
		return;
	}	
	list_of_animals = environment->getCreaturesAround(typeid(Rabbit), position_x, position_y);
	//cout<<list_of_animals->size()<<"count\n";
	if(list_of_animals->size() !=0){
		Rabbit * rabbit = (Rabbit *)(list_of_animals->at(0));
		this->addFoodLevel(rabbit->getConsumed(0));
		return;
	}
	list_of_animals = environment->getCreaturesAround(typeid(Rat), position_x, position_y);
	//cout<<list_of_animals->size()<<"count\n";
	if(list_of_animals->size() !=0){
		Rat * rat = (Rat *)(list_of_animals->at(0));
		this->addFoodLevel(rat->getConsumed(0));
		return;
	}
}
Beispiel #8
0
// This callback function gets called by the Glut
// system whenever it decides things need to be redrawn.
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glEnable(GL_DEPTH_TEST);

  glLoadIdentity();
  double dt = GetDeltaTime();
  if (gFirstPerson)
  {
    double rad = gRat.getDegrees()/180.0 * M_PI;
    double dx = cos(rad) * MOVE_SPEED * dt;
    double dy = sin(rad) * MOVE_SPEED * dt;
    gluLookAt(gRat.getX(), gRat.getY(), gRatHeight, gRat.getX() + dx, gRat.getY() + dy, gRatHeight, 0, 0, 1);
    // when doing rat, calculate at point but z will stay.
  }
  else
  {
    gluLookAt(M*.5, -N*.5, 15, M*.5, N*.5, 0, 0, 0, 1); // 3 eye, 3 at point, 3 z-axis up
  }

	gMaze.draw();
  gRat.draw(gFirstPerson);

  if (gLeft) gRat.spinLeft(dt);
  if (gRight) gRat.spinRight(dt);
  if (gMiddle) gRat.move(dt);

  if (gFirstPerson)
  {
    gluPerspective(.02, (double)screen_x/screen_y, .0001, .0001);
  }
  else
  {
    gluPerspective(40, (double)screen_x/screen_y, N*.5, 3*(M+N));
  }

	glutSwapBuffers();
	glutPostRedisplay();

}
Beispiel #9
0
	Rat operator*(const Rat& r)  //*を計算する
	{
		return Rat((GetNumer() * r.GetNumer()),
				   (GetDenom() * r.GetDenom()));
	}
Beispiel #10
0
	Rat operator+(const Rat& r)  //+を計算する
	{
		return Rat(((GetNumer() * r.GetDenom()) + 
					(GetDenom() * r.GetNumer())),
					(GetDenom() * r.GetDenom()));
	}
Beispiel #11
0
// Your initialization code goes here.
void InitializeMyStuff()
{
    gRat.setMaze(&gMaze);
    gFirstPerson = true;
}
Beispiel #12
0
// This callback function gets called by the Glut
// system whenever it decides things need to be redrawn.
void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);

    glLoadIdentity();
    double dt = GetDeltaTime();
    if (gFirstPerson)
    {
        double rad = gRat.getDegrees()/180.0 * M_PI;
        double dx = cos(rad) * MOVE_SPEED * dt;
        double dy = sin(rad) * MOVE_SPEED * dt;

        double hover = 2.0;
        double terrainHeight = gMaze.getZ(gRat.getX() + dx, gRat.getY() + dy);
        double waterHeight = gWaterHeight + .4;
        double H = fmax(terrainHeight, waterHeight) + hover;
        double currentTerrainHeight = fmax(waterHeight, gMaze.getZ(gRat.getX(), gRat.getY()));
        double tilt = (fmax(terrainHeight, waterHeight) - currentTerrainHeight);
        double lookZ = H + tilt;
        gluLookAt(gRat.getX(), gRat.getY(), H, gRat.getX() + dx, gRat.getY() + dy, lookZ, 0, 0, 1);
        // when doing rat, calculate at point but z will stay.
    }
    else
    {
        gluLookAt(M*.5, -N*.5, 15, M*.5, N*.5, 0, 0, 0, 1); // 3 eye, 3 at point, 3 z-axis up
    }

	gMaze.draw(gWaterHeight);
    gRat.draw(gFirstPerson);
    if (gLeft) gRat.spinLeft(dt);
    if (gRight) gRat.spinRight(dt);
    if (gMiddle) gRat.move(dt);

    if (gFirstPerson)
    {
        gluPerspective(.02, (double)screen_x/screen_y, .0001, .0001);
    }
    else
    {
        gluPerspective(40, (double)screen_x/screen_y, RES*.5, 3*(RES+RES));
    }

	glutSwapBuffers();
	glutPostRedisplay();
}
Beispiel #13
0
 void lowestTerms(Rat &t) {
     int x = t.gcd(t.getN(), t.getD());
     t.n/=x;
     t.d/=x;
 }