diff options
Diffstat (limited to 'dev/a3-earthquake/earth.cc')
-rw-r--r-- | dev/a3-earthquake/earth.cc | 114 |
1 files changed, 0 insertions, 114 deletions
diff --git a/dev/a3-earthquake/earth.cc b/dev/a3-earthquake/earth.cc deleted file mode 100644 index db43b10..0000000 --- a/dev/a3-earthquake/earth.cc +++ /dev/null @@ -1,114 +0,0 @@ -/** CSci-4611 Assignment 3: Earthquake - */ - -#include "earth.h" -#include "config.h" - -#include <vector> - -// for M_PI constant -#define _USE_MATH_DEFINES -#include <math.h> - - -Earth::Earth() { -} - -Earth::~Earth() { -} - -void Earth::Init(const std::vector<std::string> &search_path) { - // init shader program - shader_.Init(); - - // init texture: you can change to a lower-res texture here if needed - earth_tex_.InitFromFile(Platform::FindFile("earth-2k.png", search_path)); - - // init geometry - const int nslices = 10; - const int nstacks = 10; - - // TODO: This is where you need to set the vertices and indiceds for earth_mesh_. - - // As a demo, we'll add a square with 2 triangles. - std::vector<unsigned int> indices; - std::vector<Point3> vertices; - - // four vertices - vertices.push_back(Point3(0,0,0)); - vertices.push_back(Point3(1,0,0)); - vertices.push_back(Point3(1,1,0)); - vertices.push_back(Point3(0,1,0)); - - // indices into the arrays above for the first triangle - indices.push_back(0); - indices.push_back(1); - indices.push_back(2); - - // indices for the second triangle, note some are reused - indices.push_back(0); - indices.push_back(2); - indices.push_back(3); - - earth_mesh_.SetVertices(vertices); - earth_mesh_.SetIndices(indices); - earth_mesh_.UpdateGPUMemory(); -} - - - -void Earth::Draw(const Matrix4 &model_matrix, const Matrix4 &view_matrix, const Matrix4 &proj_matrix) { - // Define a really bright white light. Lighting is a property of the "shader" - DefaultShader::LightProperties light; - light.position = Point3(10,10,10); - light.ambient_intensity = Color(1,1,1); - light.diffuse_intensity = Color(1,1,1); - light.specular_intensity = Color(1,1,1); - shader_.SetLight(0, light); - - // Adust the material properties, material is a property of the thing - // (e.g., a mesh) that we draw with the shader. The reflectance properties - // affect the lighting. The surface texture is the key for getting the - // image of the earth to show up. - DefaultShader::MaterialProperties mat; - mat.ambient_reflectance = Color(0.5, 0.5, 0.5); - mat.diffuse_reflectance = Color(0.75, 0.75, 0.75); - mat.specular_reflectance = Color(0.75, 0.75, 0.75); - mat.surface_texture = earth_tex_; - - // Draw the earth mesh using these settings - if (earth_mesh_.num_triangles() > 0) { - shader_.Draw(model_matrix, view_matrix, proj_matrix, &earth_mesh_, mat); - } -} - - -Point3 Earth::LatLongToSphere(double latitude, double longitude) const { - // TODO: We recommend filling in this function to put all your - // lat,long --> sphere calculations in one place. - return Point3(0,0,0); -} - -Point3 Earth::LatLongToPlane(double latitude, double longitude) const { - // TODO: We recommend filling in this function to put all your - // lat,long --> plane calculations in one place. - return Point3(0,0,0); -} - - - -void Earth::DrawDebugInfo(const Matrix4 &model_matrix, const Matrix4 &view_matrix, const Matrix4 &proj_matrix) { - // This draws a cylinder for each line segment on each edge of each triangle in your mesh. - // So it will be very slow if you have a large mesh, but it's quite useful when you are - // debugging your mesh code, especially if you start with a small mesh. - for (int t=0; t<earth_mesh_.num_triangles(); t++) { - std::vector<unsigned int> indices = earth_mesh_.read_triangle_indices_data(t); - std::vector<Point3> loop; - loop.push_back(earth_mesh_.read_vertex_data(indices[0])); - loop.push_back(earth_mesh_.read_vertex_data(indices[1])); - loop.push_back(earth_mesh_.read_vertex_data(indices[2])); - quick_shapes_.DrawLines(model_matrix, view_matrix, proj_matrix, - Color(1,1,0), loop, QuickShapes::LinesType::LINE_LOOP, 0.005f); - } -} - |