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

OpenGL

开发平台:

Visual C++

  1. // opencluster.cpp
  2. //
  3. // Copyright (C) 2003, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #include <algorithm>
  10. #include <stdio.h>
  11. #include "celestia.h"
  12. #include <celmath/mathlib.h>
  13. #include <celutil/util.h>
  14. #include <celutil/debug.h>
  15. #include "astro.h"
  16. #include "opencluster.h"
  17. #include "meshmanager.h"
  18. #include "gl.h"
  19. #include "vecgl.h"
  20. #include "render.h"
  21. using namespace std;
  22. OpenCluster::OpenCluster()
  23. {
  24. }
  25. const char* OpenCluster::getType() const
  26. {
  27.     return "Open cluster";
  28. }
  29. void OpenCluster::setType(const std::string& /*typeStr*/)
  30. {
  31. }
  32. size_t OpenCluster::getDescription(char* buf, size_t bufLength) const
  33. {
  34.     return snprintf(buf, bufLength, _("%s"), getType());
  35. }
  36. const char* OpenCluster::getObjTypeName() const
  37. {
  38.     return "opencluster";
  39. }
  40. bool OpenCluster::pick(const Ray3d& ray,
  41.                        double& distanceToPicker,
  42.                        double& cosAngleToBoundCenter) const
  43. {
  44.     // The preconditional sphere-ray intersection test is enough for now:
  45.     return DeepSkyObject::pick(ray, distanceToPicker, cosAngleToBoundCenter);
  46. }
  47. bool OpenCluster::load(AssociativeArray* params, const string& resPath)
  48. {
  49.     // No parameters specific to open cluster, though a list of member stars
  50.     // could be useful.
  51.     return DeepSkyObject::load(params, resPath);
  52. }
  53. void OpenCluster::render(const GLContext&,
  54.                          const Vec3f&,
  55.                          const Quatf&,
  56.                          float,
  57.                          float)
  58. {
  59.     // Nothing to do right now; open clusters are only visible as their
  60.     // constituent stars and a label when labels are turned on.  A good idea
  61.     // would be to add an 'sky chart' mode, in which clusters are rendered as
  62.     // circles.
  63. }
  64. unsigned int OpenCluster::getRenderMask() const
  65. {
  66.     return Renderer::ShowOpenClusters;
  67. }
  68. unsigned int OpenCluster::getLabelMask() const
  69. {
  70.     return Renderer::OpenClusterLabels;
  71. }