// 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(); }
//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(); }
//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(); }
// Your initialization code goes here. void InitializeMyStuff() { gRat.setMaze(&gMaze); gFirstPerson = true; initTextures(); }
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; }
//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; } }
// 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(); }
Rat operator*(const Rat& r) //*を計算する { return Rat((GetNumer() * r.GetNumer()), (GetDenom() * r.GetDenom())); }
Rat operator+(const Rat& r) //+を計算する { return Rat(((GetNumer() * r.GetDenom()) + (GetDenom() * r.GetNumer())), (GetDenom() * r.GetDenom())); }
// Your initialization code goes here. void InitializeMyStuff() { gRat.setMaze(&gMaze); gFirstPerson = true; }
// 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(); }
void lowestTerms(Rat &t) { int x = t.gcd(t.getN(), t.getD()); t.n/=x; t.d/=x; }