univcoord.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // univcoord.h
  2. //
  3. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  4. //
  5. // Universal coordinate is a high-precision fixed point coordinate for
  6. // locating objects in 3D space on scales ranging from millimeters to
  7. // thousands of light years.
  8. //
  9. // This program is free software; you can redistribute it and/or
  10. // modify it under the terms of the GNU General Public License
  11. // as published by the Free Software Foundation; either version 2
  12. // of the License, or (at your option) any later version.
  13. #ifndef _UNIVCOORD_H_
  14. #define _UNIVCOORD_H_
  15. #include <celutil/bigfix.h>
  16. #include <celmath/vecmath.h>
  17. class UniversalCoord
  18. {
  19.  public:
  20.     UniversalCoord();
  21.     UniversalCoord(BigFix, BigFix, BigFix);
  22.     UniversalCoord(double, double, double);
  23.     UniversalCoord(const Point3d&);
  24.     UniversalCoord(const Point3f&);
  25.     operator Point3d() const;
  26.     operator Point3f() const;
  27.     friend Vec3d operator-(const UniversalCoord&, const UniversalCoord&);
  28.     friend Vec3d operator-(const UniversalCoord&, const Point3d&);
  29.     friend Vec3d operator-(const Point3d&, const UniversalCoord&);
  30.     friend Vec3f operator-(const UniversalCoord&, const Point3f&);
  31.     friend Vec3f operator-(const Point3f&, const UniversalCoord&);
  32.     friend UniversalCoord operator+(const UniversalCoord&, const Vec3d&);
  33.     friend UniversalCoord operator+(const UniversalCoord&, const Vec3f&);
  34.     friend UniversalCoord operator-(const UniversalCoord&, const Vec3d&);
  35.     friend UniversalCoord operator-(const UniversalCoord&, const Vec3f&);
  36.     friend UniversalCoord operator+(const UniversalCoord&, const UniversalCoord&);
  37.     double distanceTo(const UniversalCoord&);
  38.     UniversalCoord difference(const UniversalCoord&) const;
  39.     BigFix x, y, z;
  40. };
  41. Vec3d operator-(const UniversalCoord&, const UniversalCoord&);
  42. Vec3d operator-(const UniversalCoord&, const Point3d&);
  43. Vec3d operator-(const Point3d&, const UniversalCoord&);
  44. Vec3f operator-(const UniversalCoord&, const Point3f&);
  45. Vec3f operator-(const Point3f&, const UniversalCoord&);
  46. UniversalCoord operator+(const UniversalCoord&, const Vec3d&);
  47. UniversalCoord operator+(const UniversalCoord&, const Vec3f&);
  48. UniversalCoord operator-(const UniversalCoord&, const Vec3d&);
  49. UniversalCoord operator-(const UniversalCoord&, const Vec3f&);
  50. // Not really proper--we can't add points.  But the only way around it is
  51. // to create a separate version of UniversalCoord that acts like a vector.
  52. UniversalCoord operator+(const UniversalCoord&, const UniversalCoord&);
  53. #endif // _UNIVCOORD_H_