20 #ifndef _triangle_mesh_h_
21 #define _triangle_mesh_h_
185 void subdivide(
const XYZ& variation,uint level,uint levels);
188 void subdivide(uint subdivisions,uint flat_subdivisions,
const XYZ& variation);
191 void write_povray(std::ofstream& out,
bool exclude_alternate_colour,
bool double_illuminate,
bool no_shadow)
const;
TriangleMeshFlat(ParametersObject::ObjectType obj, float z, uint seed, Progress *progress)
Constructor.
Definition: triangle_mesh.cpp:385
const Vertex & vertex(uint i) const
Accessor.
Definition: triangle_mesh.h:84
void progress_start(uint steps, const std::string &info) const
Convenience wrapper with null test.
Definition: triangle_mesh.cpp:33
void progress_step(uint step) const
Convenience wrapper with null test.
Definition: triangle_mesh.cpp:41
float vertex_height(uint i) const
Return height of a vertex.
Definition: triangle_mesh.h:100
An icosahedron.
Definition: triangle_mesh.h:268
ObjectType
What kind of object will be generated.
Definition: parameters_object.h:39
void write_povray(std::ofstream &out, bool exclude_alternate_colour, bool double_illuminate, bool no_shadow) const
Dump the mesh to the file in a form suitable for use by POVRay.
Definition: triangle_mesh.cpp:206
std::vector< Triangle > _triangle
The triangles of this mesh.
Definition: triangle_mesh.h:202
Class to represent red-green-blue-alpha colours stored with 8-bit resolution.
Definition: rgb.h:136
float triangle_height_min(uint i) const
Return minimum height of a triangle's vertices.
Definition: triangle_mesh.h:114
float triangle_height_average(uint i) const
Return mean height of a triangle's vertices.
Definition: triangle_mesh.h:138
const Triangle & triangle(uint i) const
Accessor.
Definition: triangle_mesh.h:90
uint _triangle_switch_colour
The index of the triangle at which we switch to the alternate colour.
Definition: triangle_mesh.h:205
Contains vertices and triangles of a triangle mesh.
Definition: triangle_mesh.h:49
float _emissive
The emission level for vertices with the _emissive flag set.
Definition: triangle_mesh.h:208
A subdivided icosahedron.
Definition: triangle_mesh.h:292
TriangleMeshIcosahedron(float radius, uint seed, Progress *progress)
Constructor.
Definition: triangle_mesh.cpp:429
void add_triangle(const Triangle &t)
Append a triangle.
Definition: triangle_mesh.h:78
const XYZ & position() const
Accessor.
Definition: vertex.h:62
virtual const Geometry & geometry() const
Returns the specific geometry.
Definition: triangle_mesh.h:280
const XYZ triangle_normal(uint i) const
Compute and return the normal to a triangle.
Definition: triangle_mesh.cpp:50
void progress_stall(const std::string &reason) const
Convenience wrapper with null test.
Definition: triangle_mesh.cpp:37
Progress *const _progress
Pointer to the progress object to which progress reports should be made.
Definition: triangle_mesh.h:211
void set_emissive(float e)
Accessor.
Definition: triangle_mesh.h:60
void set_vertex_height(uint i, float h)
Set height of a vertex.
Definition: triangle_mesh.h:106
Class to provide abstract interface to different world geometries.
Definition: geometry.h:36
uint which_colour_for_triangle(uint t) const
Return which vertex colour to use for a triangle.
Definition: triangle_mesh.h:153
uint vertices() const
Returns number of vertices in mesh.
Definition: triangle_mesh.h:159
std::vector< Vertex > _vertex
The vertices of this mesh.
Definition: triangle_mesh.h:199
Class to hold vectors in 3D cartesian co-ordinates.
Definition: xyz.h:34
Interface for class Progress.
Mix-in class for call-backs from long operations.
Definition: progress.h:30
Triangle & triangle(uint i)
Accessor.
Definition: triangle_mesh.h:220
void add_vertex(const Vertex &v)
Append a vertex.
Definition: triangle_mesh.h:72
Vertex & vertex(uint i)
Accessor.
Definition: triangle_mesh.h:214
virtual void set_height(XYZ &p, float v) const =0
Move the specified point vertically until.
void write_blender(std::ofstream &out, const std::string &mesh_name, const FloatRGBA *fake_alpha) const
Dump the mesh to the file in a form suitable for use by Blender.
Definition: triangle_mesh.cpp:302
virtual ~TriangleMesh()
Destructor.
Definition: triangle_mesh.cpp:30
float triangle_height_max(uint i) const
Return maximum height of a triangle's vertices.
Definition: triangle_mesh.h:126
uint triangles_of_colour1() const
Returns number of triangles in mesh indexing colour[1] of vertices.
Definition: triangle_mesh.h:176
void compute_vertex_normals()
(Re-)computes vertex normals.
Definition: triangle_mesh.cpp:62
void subdivide(const XYZ &variation, uint level, uint levels)
Perform a single subdivision pass with perturbations up to the specified size.
Definition: triangle_mesh.cpp:103
Interface for class Triangle.
Interface for class Vertex.
~TriangleMeshSubdividedIcosahedron()
Destructor.
Definition: triangle_mesh.h:300
void progress_complete(const std::string &info) const
Convenience wrapper with null test.
Definition: triangle_mesh.cpp:45
virtual const Geometry & geometry() const =0
Access the geometry of this class (needed to abstract concepts like "mid-point" and "height")...
TriangleMesh(Progress *progress)
Constructor.
Definition: triangle_mesh.cpp:24
Class to store triangle state.
Definition: triangle.h:34
~TriangleMeshIcosahedron()
Destructor.
Definition: triangle_mesh.h:276
uint triangles() const
Returns number of triangles in mesh.
Definition: triangle_mesh.h:164
virtual float height(const XYZ &p) const =0
Return the height of the given point.
Concrete class providing a flat geometry (in the XY-plane, with Z up).
Definition: geometry.h:109
Interface for class ParametersSave.
virtual const Geometry & geometry() const
Returns the specific geometry.
Definition: triangle_mesh.h:256
const uint & vertex(uint i) const
Return a reference to the vertex because GL will want it's address.
Definition: triangle.h:56
~TriangleMeshFlat()
Destructor.
Definition: triangle_mesh.h:252
Interface for class TriangleEdge.
Class to represent red-green-blue-alpha colours stored to floating point accuracy.
Definition: rgb.h:173
float emissive() const
Accessor.
Definition: triangle_mesh.h:66
Interface for class Random and derived classes.
uint triangles_of_colour0() const
Returns number of triangles in mesh indexing colour[0] of vertices.
Definition: triangle_mesh.h:170
Interface for class Geometry and derived classes.
TriangleMeshSubdividedIcosahedron(float radius, uint subdivisions, uint flat_subdivisions, uint seed, const XYZ &variation, Progress *progress)
Constructor.
Definition: triangle_mesh.cpp:483
Concrete class providing a flat geometry (a sphere with nominal radius 1, equator in the XY-plane...
Definition: geometry.h:186
Interface for class ParametersTerrain.
Class to store vertex state information.
Definition: vertex.h:35
A single triangle lying in the z-plane.
Definition: triangle_mesh.h:244