// FallingObject.h
#ifndef _FALLING_OBJECT
#define _FALLING_OBJECT
class FallingObject {
private:
double InitialHeight, Gravity;
public:
FallingObject(double H, double G = 9.81);
double GetInitialHeight();
double GetGravity();
void SetInitialHeight(double H);
void SetGravity(double G);
double GetHeight(double Time);
double GetSpeed(double Time);
double GetFallTime();
};
#endif // _FALLING_OBJECT
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
// FallingObject.cpp
#include "FallingObject.h"
#include <cmath>
using namespace std;
FallingObject::FallingObject(double H, double G) {
SetInitialHeight(H);
SetGravity(G);
}
double FallingObject::GetInitialHeight() {
return InitialHeight;
}
double FallingObject::GetGravity() {
return Gravity;
}
void FallingObject::SetInitialHeight(double H) {
InitialHeight = H > 0 ? H : 1;
}
void FallingObject::SetGravity(double G) {
Gravity = G > 0 ? G : 1;
}
double FallingObject::GetHeight(double Time) {
if (Time > GetFallTime()) {
return 0;
} else {
return InitialHeight - (Gravity / 2) * (Time * Time);
}
}
double FallingObject::GetSpeed(double Time) {
if (Time > GetFallTime()) {
return 0;
} else {
return Gravity * Time;
}
}
double FallingObject::GetFallTime() {
return sqrt(InitialHeight / (2 * Gravity));
}