Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <cmath>
- class Point1d {
- protected:
- double* PosX;
- public:
- Point1d(double x) {
- *PosX = x;
- }
- virtual ~Point1d() {
- delete PosX;
- }
- virtual double x() { return *PosX; }
- virtual void SetX(double value) { *PosX = value; }
- double CountDistance(Point1d OtherPoint) {
- return fabs(OtherPoint.x() - *PosX);
- }
- void SetPoint(double x) {
- *PosX = x;
- }
- };
- class Point2d : public Point1d {
- protected:
- double* PosY;
- public:
- Point2d(double x, double y):
- Point1d{ x } {
- *PosY = y;
- }
- virtual ~Point2d() {
- delete PosX;
- delete PosY;
- }
- void SetPoint(double x, double y) {
- *PosX = x;
- *PosY = y;
- }
- virtual double x() { return *PosX; }
- virtual double y() { return *PosY; }
- virtual void SetX(double value) { *PosX = value; }
- virtual void SetY(double value) { *PosY = value; }
- double CountDistance(Point2d OtherPoint) {
- return sqrt(pow(Point1d::CountDistance(OtherPoint), 2) + pow(OtherPoint.y() - *PosY, 2));
- }
- };
- class Point3d : public Point2d {
- protected:
- double* PosZ;
- public:
- Point3d() = default;
- Point3d(double x, double y, double z):
- Point2d{ x,y } {
- *PosZ = z;
- }
- ~Point3d() {
- delete PosX;
- delete PosY;
- delete PosZ;
- }
- virtual double x() { return *PosX; }
- virtual double y() { return *PosY; }
- virtual double z() { return *PosZ; }
- virtual void SetX(double value) { *PosX = value; }
- virtual void SetY(double value) { *PosY = value; }
- virtual void SetZ(double value) { *PosZ = value; }
- void SetPoint(double x, double y, double z) {
- *PosX = x;
- *PosY = y;
- *PosZ = z;
- }
- double CountDistance(Point3d OtherPoint) {
- return sqrt(pow(Point2d::CountDistance(OtherPoint), 2) + pow(OtherPoint.z() - *PosZ, 2));
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment