diff options
Diffstat (limited to 'dev/a3-earthquake/earth.h')
-rw-r--r-- | dev/a3-earthquake/earth.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/dev/a3-earthquake/earth.h b/dev/a3-earthquake/earth.h new file mode 100644 index 0000000..2091c11 --- /dev/null +++ b/dev/a3-earthquake/earth.h @@ -0,0 +1,57 @@ +/** CSci-4611 Assignment 3: Earthquake + */ + +#ifndef EARTH_H_ +#define EARTH_H_ + +#include <mingfx.h> +using namespace mingfx; + + +/** This class can draw a textured earth as either a plane or a sphere or + somewhere inbetween in order to support morphing from one shape to another. + */ +class Earth { +public: + Earth(); + virtual ~Earth(); + + /// Load texture and define geometry. Initializes the mesh to the planar + /// version of the earth. The searchPath is for finding the texture file. + void Init(const std::vector<std::string> &search_path); + + /// Draw the Earth to screen using the current version of the mesh set with + /// the last call to UpdateMesh. + void Draw(const Matrix4 &model_matrix, const Matrix4 &view_matrix, const Matrix4 &proj_matrix); + + /// Given latitude and longitude, calculate 3D position for the flat earth + /// model that lies on a plane + Point3 LatLongToPlane(double latitude, double longitude) const; + + /// Given latitude and longitude, calculate the 3D position for the spherical + /// earth model. + Point3 LatLongToSphere(double latitude, double longitude) const; + + /// This can be a helpful debugging aid when creating your triangle mesh. It + /// draws the triangles and normals for the current earth mesh. + void DrawDebugInfo(const Matrix4 &model_matrix, const Matrix4 &view_matrix, const Matrix4 &proj_matrix); + +protected: + + // Stores the earth texture map + Texture2D earth_tex_; + + // Stores the earth geometry as a renderable mesh + Mesh earth_mesh_; + + // Renders meshes with texture and some simple shading + DefaultShader shader_; + DefaultShader::MaterialProperties earth_material_; + + // Used only for the DrawDebugInfo() routine + QuickShapes quick_shapes_; +}; + + +#endif +
\ No newline at end of file |