




GRAVITYBALL.H
Our new class, gravityBall, can add acceleration member variables and override the member function fall.
#include "ball.h"
class gravityBall :public ball
{
public:
gravityBall(void);
~gravityBall(void);
void fall(void);
void setAcceleration(float, float, float);
inline float getXAcceleration(void) { return xAcceleration; }
inline float getYAcceleration(void) { return yAcceleration; }
inline float getZAcceleration(void) { return zAcceleration; }
protected:
float xAcceration;
float yAcceration;
float zAcceration;
};
GRAVITYBALL.CXX
With the inclusion of acceleration, we can give our ball a realistic trajectory.
include "gravityBall.h"
gravityBall::gravityBall(void)
{
setAcceleration(0.0,0.0,-9.8);
}
gravityBall::~gravityBall(void)
{
}
void gravityBall::fall(void)
{
xPosition += xVelocity;
yPosition += yVelocity;
zPosition += zVelocity;
xVelocity += xAcceleration;
yVelocity += yAcceleration;
zVelocity += zAcceleration;
if (zVelocity < 0.0 && zPosition <= 0.0)
resetVelocity();
}
void gravityBall::setAcceleration(float xValue, float yValue, float zValue)
{
xAcceleration = xValue;
yAcceleration = yValue;
zAcceleration = zValue;
}