Tucano  0.1
A library for rapid prototyping with modern OpenGL and GLSL
Tucano::Shapes::Cylinder Class Reference

A simple cylinder shape. More...

#include <cylinder.hpp>

Inheritance diagram for Tucano::Shapes::Cylinder:
Tucano::Mesh Tucano::Model

Public Member Functions

 Cylinder (float r=1.0, float h=2.0, int subs_xy=32, int subs_z=8, bool cap=true)
 Default Constructor. More...
 
void render (const Tucano::Camera &camera, const Tucano::Camera &light)
 Render cylinder. More...
 
float getHeight (void)
 Returns cylinder cylinder_height. More...
 
float getRadius (void)
 Returns cylinder cylinder_radius. More...
 
- Public Member Functions inherited from Tucano::Mesh
 Mesh (void)
 Default Constructor. More...
 
int getNumberOfElements (void)
 Returns the number of elements (primitives such as triangles) of the mesh. More...
 
int getNumberOfVertices (void)
 Returns the number of vertices in the mesh. More...
 
void resetLocations (void)
 Resets all vertex attributes locations to -1. More...
 
void reset (void)
 
void loadVertices (vector< Eigen::Vector4f > &vert)
 Load vertices (x,y,z,w) and creates appropriate vertex attribute. The default attribute name is "in_Position". Computes bounding box and centroid and normalization factors (scale). More...
 
void loadNormals (vector< Eigen::Vector3f > &norm)
 Load normals (x,y,z) as a vertex attribute. More...
 
void loadTexCoords (vector< Eigen::Vector2f > &tex, bool normalize=false)
 Load tex coords (u,v) as a vertex attribute. Optionally normalizes coords in range [0,1]. More...
 
void loadColors (vector< Eigen::Vector4f > &clrs)
 Load colors (r,g,b,a) as a vertex attribute. More...
 
void loadIndices (vector< GLuint > &ind)
 Load indices into indices array. More...
 
void setDefaultAttribLocations (void)
 Sets default attribute locations. vertex coords -> location 0 normals -> location 1 colors -> location 2 texCoords -> location 3. More...
 
bool hasAttribute (const string &name) const
 Returns wether an attribute exists or not. More...
 
VertexAttributegetAttribute (const string &name)
 Returns a pointer to an attribute Given an attribute name, searches to see if it exists, if so, returns a pointer to it. More...
 
void setAttributeLocation (Shader *shader)
 Automatically sets the attribute locations for a given Shader. More...
 
void setAttributeLocation (const Shader &shader)
 
void setAttributeLocation (string name, GLint loc)
 Sets the location of a generic vertex attribute. More...
 
VertexAttributecreateAttribute (string name, vector< Eigen::Vector4f > &attrib)
 Creates and loads a new mesh attribute of 4 floats. More...
 
VertexAttributecreateAttribute (string name, vector< Eigen::Vector3f > &attrib)
 Creates and loads a new mesh attribute of 3 floats. More...
 
VertexAttributecreateAttribute (string name, vector< Eigen::Vector2f > &attrib)
 Creates and loads a new mesh attribute of 2 floats. More...
 
virtual void bindBuffers (void)
 Binds all buffers. More...
 
virtual void unbindBuffers (void)
 Unbinds all buffers. More...
 
virtual void renderPoints (void)
 Render only points without index buffer. More...
 
virtual void renderElements (void)
 Call the draw method for rendering triangles. This method requires that a index buffer has been created. More...
 
virtual void renderLineLoop (void)
 Render all vertices as a continous line loop. More...
 
virtual void renderPatches (void)
 Call the draw method for rendering patches. This method requires that a index buffer has been created. More...
 
virtual void render (void)
 Render the mesh triangles. The method binds the buffers, calls the method to render triangles, and then unbinds all buffers. Note that a index buffer is necessary. More...
 
void createParallelepiped (float x, float y, float z)
 Sets the mesh as a Parallelpiped with given dimensions, scales so larger side is equal to 1. More...
 
void createQuad (void)
 Sets the mesh as Unit Quad. More...
 
- Public Member Functions inherited from Tucano::Model
 Model (void)
 
Eigen::Vector4f getColor (void)
 Returns the default color of the model. More...
 
void setColor (const Eigen::Vector4f &color)
 Sets the default color of the model. More...
 
virtual Eigen::Vector3f getObjectCenter (void) const
 Returns the center of the axis-aligned bounding box. More...
 
virtual Eigen::Vector3f getCentroid (void) const
 Returns the centroid of the model. More...
 
virtual float getBoundingSphereRadius (void) const
 
Eigen::Affine3f getModelMatrix (void) const
 Returns the model matrix. More...
 
Eigen::Affine3f * modelMatrix (void)
 Returns a pointer to the model matrix. More...
 
void setModelMatrix (const Eigen::Affine3f &m)
 Sets the model matrix. More...
 
float getScale (void) const
 Returns the scale factor for fitting the model inside a unit cube. More...
 
void normalizeModelMatrix (void)
 Normalize model matrix to center and scale model. The model matrix will include a translation to place model's centroid at the origin, and scale the model to fit inside a unit sphere. More...
 
void desnormalizeModelMatrix (void)
 Desnormalize model matrix. More...
 
void resetModelMatrix (void)
 Resets the model matrix. More...
 

Private Member Functions

void createGeometry (int subs_xy, int subs_z)
 Define cylinder geometry. More...
 

Private Attributes

Tucano::Shader cylinder_shader
 Shader to render cylinder. More...
 
float cylinder_height = 2.0
 Cylinder cylinder_height. More...
 
float cylinder_radius = 1.0
 Cylinder cylinder_radius. More...
 
bool with_cap = true
 flag to create or not caps More...
 

Additional Inherited Members

- Protected Attributes inherited from Tucano::Mesh
vector< Tucano::VertexAttributevertex_attributes
 Array of generic attributes. More...
 
unsigned int numberOfVertices = 0
 Number of vertices in vertices array. More...
 
unsigned int numberOfNormals = 0
 Number of normals in normals array. More...
 
unsigned int numberOfElements = 0
 Number of indices in indices array. More...
 
unsigned int numberOfTexCoords = 0
 Number of texture coordinates in texCoords array. More...
 
unsigned int numberOfColors = 0
 Number of colors in colors array. More...
 
GLuint index_buffer_id = 0
 Index Buffer. More...
 
GLuint vao_id = 0
 Vertex Array Object ID (VAO is just a descriptor, does not contain any data) More...
 
bool willTessellate = false
 Variable indicating if there will be tessellation. More...
 
std::shared_ptr< GLuint > index_buffer_sptr = 0
 Shared pointer for index buffer. More...
 
std::shared_ptr< GLuint > vao_sptr = 0
 Shared pointer for vertex array object. More...
 
- Protected Attributes inherited from Tucano::Model
Eigen::Affine3f model_matrix
 Model matrix, holds information about the models location and orientation. More...
 
Eigen::Vector3f objectCenter
 Center of the mesh object. More...
 
Eigen::Vector3f centroid
 Object's centroid (different from center of bounding box) More...
 
float radius
 Radius of the mesh bounding sphere. More...
 
float scale
 The normalization scale factor, scales the model matrix to fit the model inside a unit cube. More...
 
Eigen::Vector4f default_color = Eigen::Vector4f (0.7, 0.7, 0.7, 1.0)
 Default color. More...
 

Detailed Description

A simple cylinder shape.

Constructor & Destructor Documentation

Tucano::Shapes::Cylinder::Cylinder ( float  r = 1.0,
float  h = 2.0,
int  subs_xy = 32,
int  subs_z = 8,
bool  cap = true 
)
inline

Default Constructor.

Member Function Documentation

void Tucano::Shapes::Cylinder::createGeometry ( int  subs_xy,
int  subs_z 
)
inlineprivate

Define cylinder geometry.

Cylinder is created by creating two disks (caps) and generating triangles between them

float Tucano::Shapes::Cylinder::getHeight ( void  )
inline

Returns cylinder cylinder_height.

float Tucano::Shapes::Cylinder::getRadius ( void  )
inline

Returns cylinder cylinder_radius.

void Tucano::Shapes::Cylinder::render ( const Tucano::Camera camera,
const Tucano::Camera light 
)
inline

Render cylinder.

Member Data Documentation

float Tucano::Shapes::Cylinder::cylinder_height = 2.0
private

Cylinder cylinder_height.

float Tucano::Shapes::Cylinder::cylinder_radius = 1.0
private

Cylinder cylinder_radius.

Tucano::Shader Tucano::Shapes::Cylinder::cylinder_shader
private

Shader to render cylinder.

bool Tucano::Shapes::Cylinder::with_cap = true
private

flag to create or not caps


The documentation for this class was generated from the following file: