Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- class point {
- double tab[3];
- public:
- point() { tab[0] = tab[1] = tab[2] = 0; }
- point(const double(&t)[3]) {
- tab[0] = t[0];
- tab[1] = t[1];
- tab[2] = t[2];
- }
- point(const double& x, const double& y, const double& z) {
- tab[0] = x;
- tab[1] = y;
- tab[2] = z;
- }
- double& operator[](size_t i) {
- return tab[i];
- }
- const double& operator[](size_t i)const {
- return tab[i];
- }
- const double distance(const point& p) const {
- double deltax = tab[0] - p[0];
- double deltay = tab[1] - p[1];
- double deltaz = tab[2] - p[2];
- return sqrt((deltax * deltax) + (deltay * deltay) + (deltaz * deltaz));
- }
- const point operator-(const point& pa) {
- return point(tab[0] - pa[0], tab[1] - pa[1], tab[2] - pa[2]);
- }
- const point operator*(const double& pa)const {
- return point(tab[0] * pa, tab[1] * pa, tab[2] * pa);
- }
- bool operator <(const point& pa) const {
- return distance(point()) < pa.distance(point());
- }
- bool operator ==(const point& pa) const {
- double eps = 1.0e-10;
- return abs(distance(point())-pa.distance(point())) < eps ? true : false;
- }
- };
- const point operator+(const point& la, const point& pa) {
- return point(la[0] - pa[0], la[1] - pa[1], la[2] - pa[2]);
- }
- const point operator*(const double& la, const point& pa) {
- return pa * la;
- }
- ostream& operator<<(ostream& out, const point& p) {
- return out << p[0] << " " << p[1] << " " << p[2]; //nie ma friend dlatego nie ma p.tab[1]
- }
- istream& operator>>(istream& in, point& p) {
- in >> p[0] >> p[1] >> p[2];
- return in;
- }
- int main()
- {
- double x[2][3] = { {1.0, 1.0, 1.0}, {1.0, 2.0, 3.0} };
- point p1(x[0]), p2(x[1]);
- const point p3(0.4, 0.2, 0.1);
- cout << p1 << ", " << p2 << '\n';
- cout << p3[0] << ' ' << p3[1] << ' ' << p3[2] << '\n';
- cout << p1.distance(point()) << ", " << p3.distance(p1) << '\n';
- cout << p1 + p2 << '\n';
- cout << p1.operator-(p3) << '\n';
- cout << 3.14 * p2 << ", " << p2 * 3.14 << '\n';
- cout << (p3 < p1) << endl;
- cout << (p1 < p3) << ", " << (p1 == point(1.0, 1.0, 1.0)) << '\n';
- cin >> p1;
- cout << p1 << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement