🛰️航天仿真算法库 SpaceAST 0.0.1
载入中...
搜索中...
未找到
GfxCelestialBody.hpp
浏览该文件的文档.
1
20
21#pragma once
22
23#include "AstGlobal.h"
24
25// OSG头文件
26#include <osg/Group>
27#include <osg/Node>
28#include <osg/PositionAttitudeTransform>
29#include <osg/ShapeDrawable>
30#include <osg/Material>
31#include <osg/Texture2D>
32#include <osg/Vec3>
33#include <osg/Vec4>
34
35namespace osg {
36 class Node;
37 class Group;
38 class PositionAttitudeTransform;
39 class Sphere;
40 class ShapeDrawable;
41 class Material;
42 class Texture2D;
43}
44
45AST_NAMESPACE_BEGIN
46
47class AST_GFX_API GfxCelestialBody {
48public:
53 GfxCelestialBody(const std::string& name, double radius, const osg::Vec4& color = osg::Vec4(1.0f, 1.0f, 1.0f, 1.0f));
54 GfxCelestialBody(const GfxCelestialBody&) = delete;
55 GfxCelestialBody& operator=(const GfxCelestialBody&) = delete;
56
59
61 bool initialize();
62
64 const std::string& getName() const;
65
67 void setPosition(const osg::Vec3d& position);
68
70 osg::Vec3d getPosition() const;
71
73 void setAttitude(const osg::Quat& attitude);
74
76 osg::Quat getAttitude() const;
77
79 void setRadius(double radius);
80
82 double getRadius() const;
83
85 void setColor(const osg::Vec4& color);
86
88 osg::Vec4 getColor() const;
89
91 void setRotationSpeed(double speed);
92
94 double getRotationSpeed() const;
95
97 void setOrbitalSpeed(double speed);
98
100 double getOrbitalSpeed() const;
101
103 void setOrbitalRadius(double radius);
104
106 double getOrbitalRadius() const;
107
110 bool setTexture(const std::string& textureFile);
111
114 void update(double deltaTime);
115
117 osg::Node* getNode();
118
122 osg::Node* createOrbitLine(const osg::Vec4& color = osg::Vec4(0.5f, 0.5f, 0.5f, 1.0f), int segments = 100);
123
124private:
126 std::string m_name;
127
129 double m_radius;
130
132 osg::Vec4 m_color;
133
135 double m_rotationSpeed;
136
138 double m_orbitalSpeed;
139
141 double m_orbitalRadius;
142
144 double m_currentRotation;
145
147 double m_currentOrbit;
148
150 osg::PositionAttitudeTransform* m_pat{};
151
153 osg::ShapeDrawable* m_shapeDrawable{};
154
156 osg::Material* m_material{};
157
159 osg::Texture2D* m_texture{};
160
162 bool createModel();
163};
164
165AST_NAMESPACE_END
定义 GfxCelestialBody.hpp:47