MVSim
Lightweight simulator for 2.5D vehicles and robots
ElevationMap.h
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2026 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
12 #include <mrpt/img/CImage.h>
13 #include <mrpt/opengl/CMesh.h>
14 #include <mvsim/WorldElements/WorldElementBase.h>
15 
16 #include <vector>
17 
18 namespace mvsim
19 {
28 {
29  DECLARES_REGISTER_WORLD_ELEMENT(ElevationMap)
30  public:
31  ElevationMap(World* parent, const rapidxml::xml_node<char>* root);
32  virtual ~ElevationMap();
33 
34  ElevationMap(const ElevationMap&) = delete;
35  ElevationMap& operator=(const ElevationMap&) = delete;
36  ElevationMap(ElevationMap&&) = delete;
37  ElevationMap& operator=(ElevationMap&&) = delete;
38 
39  virtual void loadConfigFrom(const rapidxml::xml_node<char>* root) override;
40 
41  virtual void simul_pre_timestep(const TSimulContext& context) override;
42  virtual void simul_post_timestep(const TSimulContext& context) override;
43 
44  std::optional<float> getElevationAt(const mrpt::math::TPoint2D& pt) const override;
45 
46  protected:
47  virtual void internalGuiUpdate(
48  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& viz,
49  const mrpt::optional_ref<mrpt::opengl::COpenGLScene>& physical, bool childrenOnly) override;
50 
53  std::vector<mrpt::opengl::CMesh::Ptr> gl_meshes_;
54  bool firstSceneRendering_ = true;
55  double resolution_ = 1.0f;
56 
57  double textureExtensionX_ = 0;
58  double textureExtensionY_ = 0;
59 
61  mrpt::math::CMatrixDouble meshCacheZ_;
62  double meshMinX_ = 0, meshMaxX_ = 0, meshMinY_ = 0, meshMaxY_ = 0;
63 
66  double model_split_size_ = .0f;
67 };
68 } // namespace mvsim
Definition: ElevationMap.h:28
double textureExtensionY_
0=auto
Definition: ElevationMap.h:58
mrpt::math::CMatrixDouble meshCacheZ_
Definition: ElevationMap.h:61
double textureExtensionX_
0=auto
Definition: ElevationMap.h:57
double model_split_size_
Definition: ElevationMap.h:66
virtual void simul_pre_timestep(const TSimulContext &context) override
std::vector< mrpt::opengl::CMesh::Ptr > gl_meshes_
Definition: ElevationMap.h:53
virtual void simul_post_timestep(const TSimulContext &context) override
Definition: WorldElementBase.h:28
Definition: World.h:132
Definition: basic_types.h:58