Cytosim PI Cytoskeleton Simulator

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Namespace List
- Namespace Members

Classes | Functions | Variables
gle Namespace Reference

Simple geometrical objects drawn with OpenGL. More...

## Classes
class | named_color
| Holds the name and the RGBA components of a color. More...

## Functions
void | initialize ()
| initialize the arrays
void | release ()
| release any memory
void | initializeDL ()
| initialize the Display lists
void | releaseDL ()
| release Display lists
void | gleScale (real x)
void | gleScale (real x, real y, real z)
void | gleVertex (const Vector1 &v)
void | gleVertex (const Vector2 &v)
void | gleVertex (const Vector3 &v)
void | gleVertex (real x, real y)
void | gleVertex (real x, real y, real z)
void | gleNormal (const Vector1 &v)
void | gleNormal (const Vector2 &v)
void | gleNormal (const Vector3 &v)
void | gleTranslate (const Vector1 &v)
void | gleTranslate (const Vector2 &v)
void | gleTranslate (const Vector3 &v)
void | gleTranslate (real x, real y, real z)
void | gleRotate (real x, real y, real z, real t)
void | gleLoadMatrix (real *m)
void | gleRasterPos (const Vector1 &v)
void | gleRasterPos (const Vector2 &v)
void | gleRasterPos (const Vector3 &v)
void | gleVertex3v (const float *v)
void | gleVertex3v (const double *v)
void | gleNormal3v (const float *v)
void | gleNormal3v (const double *v)
void | gleAlignX (const Vector2 &v1)
| align the X-axis to the given vector, by rotating around Z
void | gleAlignZ (const Vector2 &A, const Vector2 &B)
| translate by A, then rotate to align Z with AB (which is in the XY-plane) More...
void | gleAlignZ (const Vector2 &A, const Vector2 &B, real ts)
| translate by A, then rotate to align Z with AB, Z replaces X. The X-Y plane is scaled by ts More...
void | gleRotate (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3, bool inverse=false)
| align the view to the three orthogonal vectors given
void | gleTransRotate (const Vector3 &v1, const Vector3 &v2, const Vector3 &v3, const Vector3 &T)
| translate by T, then rotate to align X with v1, Y with v2 and Z with v3
void | gleCircle0 ()
| call glVertex() along a centered 2D circle of radius 1 in plane XY
void | gleCircleL ()
void | gleCircleS ()
void | gleTriangle0 ()
| draw a triangle of radius 1 in plane XY, normals pointing in +Z
void | gleTriangleS ()
void | gleTriangleL ()
void | gleNabla0 ()
| draw a triangle of radius 1 in plane XY, normals pointing in +Z
void | gleNablaS ()
void | gleNablaL ()
void | gleSquare0 ()
| draw a square of radius 1 in plane XY, normals pointing in +Z
void | gleSquareL ()
void | gleSquareS ()
void | gleRectangle0 ()
| draw a square of radius 1 in plane XY, normals pointing in +Z
void | gleRectangleL ()
void | gleRectangleS ()
void | glePlusS ()
| draw a PLUS of radius 1 in plane XY, normals pointing in +Z
void | glePlusL ()
void | glePentagon0 ()
| draw a pentagon of radius 1 in plane XY, normals pointing in +Z
void | glePentagonS ()
void | glePentagonL ()
void | gleHexagon0 ()
| draw an hexagon of surface M_PI in plane XY, normals pointing in +Z More...
void | gleHexagonS ()
void | gleHexagonL ()
void | gleStar0 ()
| draw a star of radius 1 in plane XY, normals pointing in +Z
void | gleStarS ()
void | gleStarL ()
void | gleSphereN (int)
| draw a sphere of radius 1 at origin, using a refined icosahedron
void | gleSphere1 ()
| draw a sphere of radius 1 at origin
void | gleSphere2 ()
| draw a nice sphere of radius 1 at origin
void | gleSphere4 ()
| draw a very nice sphere of radius 1 at origin
void | gleIcosahedron1 ()
| draw a icosahedron of radius 1
void | gleTube0 (GLfloat a, GLfloat b, int fin)
| a tube from `a` to `b` , radius 1 drawn with finesse `fin`
void | gleTube1 ()
| draw an open tube along Z, of diameter 1 and length 1, Z=[0, 1]
void | gleLongTube1 ()
| draw a tube along Z, of diameter 1 and length 2, Z=[-0.5, 1.5]
void | gleTube2 ()
| draw a nicer open tube along Z, of diameter 1 and length 1
void | gleLongTube2 ()
| draw a tube along Z, of diameter 1 and length 2, Z=[-0.5, 1.5]
void | gleCylinder1 ()
| draw a closed tube along Z, or diameter 1 and length 1
void | gleTubeZ (GLfloat za, GLfloat ra, gle_color, GLfloat zb, GLfloat rb, gle_color)
| draw a tube along Z, of length 1, with specified radius and colors at the extermities
void | gleBarrel1 ()
| draw a 3-portion cylinder with a larger central section
void | gleCone1 ()
| display a cone directed along Z, of radius 1 in Z=[-1, +2]
void | gleCylinderH ()
| display an flat-head at the origin, directed along Z, of length 1, radius 1 in Z=[-0.5, +0.5]
void | gleDumbbell1 ()
| display a dumbbell align with the Z axis, or radius 1/3, lenth 1
void | gleArrowTail1 ()
| display a arrowtail aligned with the Z axis, or radius 1, lenth 2, Z=[-0.5, 1.5]
void | gleArrowTail2 ()
| display 3 arrow fins aligned with the Z axis, or radius 1, lenth 2, Z=[-0.5, 1.5] More...
void | gleArrowedBand (GLfloat width)
| draw a circular band composed of triangles More...
void | gleDecoratedSphere ()
| gleSphere4() with 3 ArrowedBands separating 8 quadrants
void | gleRectangle (const int rect[4])
| a rectangle ( rect = [ left, bottom, right, top ] ) More...
void | gleNiceRectangle (const int rect[4], int)
| a rectangle with cut corners
void | gleCircleLB ()
void | gleCircleSB ()
void | gleTube1B ()
void | gleTube2B ()
void | gleLongTube1B ()
void | gleLongTube2B ()
void | gleCone1B ()
void | gleCylinderHB ()
void | gleDumbbell1B ()
void | gleIcosahedron1B ()
void | gleArrowTail1B ()
void | gleArrowTail2B ()
void | gleSphere1B ()
void | gleSphere2B ()
void | gleSphere4B ()
void | gleRevolution (GLfloat(*radius)(GLfloat))
| display a surface of revolution around the Z axis More...
void | gleDualPass (void primitive())
| display back first, and then front More...
void | gleObject (real radius, void(*obj)())
| draw the object specified by obj, scaled by radius
void | gleObject (const Vector1 &x, real radius, void(*obj)())
| draw 'obj' scaled by radius at position 'x'
void | gleObject (const Vector2 &x, real radius, void(*obj)())
void | gleObject (const Vector3 &x, real radius, void(*obj)())
void | gleObject (const Vector1 &x, const Vector1 &d, real radius, void(*obj)())
| draw 'obj' scaled by radius at position 'x', oriented along 'd'
void | gleObject (const Vector2 &x, const Vector2 &d, real radius, void(*obj)())
void | gleObject (const Vector3 &x, const Vector3 &d, real radius, void(*obj)())
void | gleObject (const Vector1 &a, const Vector1 &b, void(*obj)())
| draw 'obj' scaled by radius at position 'x', oriented along 'd'
void | gleObject (const Vector2 &a, const Vector2 &b, void(*obj)())
void | gleObject (const Vector3 &a, const Vector3 &b, void(*obj)())
void | gleObject (const Vector1 &x, const Vector1 &d, real radius, real length, void(*obj)())
| draw 'obj' scaled by radius at position 'x', oriented along 'd'
void | gleObject (const Vector2 &x, const Vector2 &d, real radius, real length, void(*obj)())
void | gleObject (const Vector3 &x, const Vector3 &d, real radius, real length, void(*obj)())
void | gleTube (const Vector1 &a, const Vector1 &b, real radius, void(*obj)()=gleTube1B)
| draw 'obj' with its ends at [a,b], of specified radius
void | gleTube (const Vector2 &a, const Vector2 &b, real radius, void(*obj)()=gleTube1B)
void | gleTube (const Vector3 &a, const Vector3 &b, real radius, void(*obj)()=gleTube1B)
void | gleTube (const Vector1 &a, real, gle_color, const Vector1 &b, real, gle_color)
| draw an open tube between A and B, with specified color and radius in A and B
void | gleTube (const Vector2 &a, real, gle_color, const Vector2 &b, real, gle_color)
void | gleTube (const Vector3 &a, real, gle_color, const Vector3 &b, real, gle_color)
void | gleBand (const Vector1 &a, real, const Vector1 &b, real)
| draw a band from A to B, with specified radius in A and B
void | gleBand (const Vector2 &a, real, const Vector2 &b, real)
void | gleBand (const Vector1 &a, real, gle_color, const Vector1 &b, real, gle_color)
| draw a band from A to B, with specified radius and colors in A and B
void | gleBand (const Vector2 &a, real, gle_color, const Vector2 &b, real, gle_color)
void | gleDumbbell (const Vector2 &a, const Vector2 &b, real diameter)
| draw two discs in A and B, connected with a line More...
void | gleDumbbell (const Vector3 &a, const Vector3 &b, real diameter)
| draw two spheres in A and B, connected with a cylinder
void | gleCone (const Vector1 &center, const Vector1 &dir, real scale)
| display cone, dir should be normalized
void | gleCone (const Vector2 &center, const Vector2 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleCone (const Vector3 &center, const Vector3 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleCylinder (const Vector1 &center, const Vector1 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleCylinder (const Vector2 &center, const Vector2 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleCylinder (const Vector3 &center, const Vector3 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleArrowTail (const Vector1 &center, const Vector1 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleArrowTail (const Vector2 &center, const Vector2 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleArrowTail (const Vector3 &center, const Vector3 &dir, real scale)
| display arrow-head, dir should be normalized
void | gleArrow (const Vector1 &a, const Vector1 &b, real radius)
| draw an arrow with ends [a,b], of specified radius
void | gleArrow (const Vector2 &a, const Vector2 &b, real radius)
void | gleArrow (const Vector3 &a, const Vector3 &b, real radius)
int | gleLineHeight (void *font)
| return height in pixel of GLUT font
int | gleComputeTextSize (const char text[], void *font, int &lines)
| compute size of text More...
void | gleDisplayText (const char text[], void *font, gle_color bcol, int position, int width, int height)
| display text on a rectangle of color `bcol`, in a corner of the center of the display window More...
void | gleDrawText (const char text[], void *font, GLfloat vshift=-13)
| draw text at the current OpenGL raster position (specified by glRasterPos) More...
void | gleDrawText (const Vector1 &pos, const char text[], void *font)
| draw `text` at position `pos`
void | gleDrawText (const Vector2 &pos, const char text[], void *font)
| draw `text` at position `pos`
void | gleDrawText (const Vector3 &pos, const char text[], void *font)
| draw `text` at position `pos` More...
void | gleDrawPixels (int width, int height, int nbc, GLubyte rgba[], Vector2 pos, Vector2 dx, Vector2 dy)
| draw pixel array `rgba` containing 4 bytes per pixels More...
void | gleDrawRectangle (const int rect[4], int window_width, int window_height)
| display rectangle specified in pixel-coordinates
void | gleDrawResizeBox (gle_color, int window_width, int window_height)
| draw a rectangle to indicate the GLUT window-resize handle
void | gleDrawAxes (GLfloat size, int dim=3)
| draw a set of 2 or 3 axes, depending on `dim`
void | gleReportErrors (FILE *, const char *msg)
| check and print OpenGL error(s) More...
void | RGBtoHSV (GLfloat r, GLfloat g, GLfloat b, GLfloat *h, GLfloat *s, GLfloat *v)
| conversion function from RGB to HSV color space More...
void | HSVtoRGB (GLfloat h, GLfloat s, GLfloat v, GLfloat *r, GLfloat *g, GLfloat *b)
| conversion functions from HSV to RGB color space
void | setHueColor (GLfloat &r, GLfloat &g, GLfloat &b, GLfloat h)
| set a RGB color from a factor in [0, 1], continuously varying through all colors More...
gle_color | hueColor (GLfloat h, GLfloat a)
| return colors aturated color with given Hue in [0, 1]
void | gleHueColor (GLfloat h)
| set saturated color with given Hue in [0, 1]
void | gleHueColor (GLfloat h, GLfloat a)
| set saturated color with given Hue in [0, 1] and transparency `a`
void | setJetColor (GLfloat &r, GLfloat &g, GLfloat &b, GLfloat h, GLfloat min)
| set a RGB color from a factor in [0, 1], continuously varying through blue, green, red, white More...
void | gleJetColor (GLfloat h, GLfloat alpha, GLfloat min=0.25)
| set the current color from a factor in [0, 1]
gle_color | jetColor (GLfloat h, GLfloat alpha, GLfloat min=0.25)
| return color
gle_color | nice_color (unsigned indx)
| a small set of contrasted colors (indx is wrapped to the number of colors)
gle_color | std_color (unsigned indx)
| a set of standard colors (indx is wrapped to the number of colors)
gle_color | std_color (const std::string &name)
| a set of standard colors
int | select_colors (gle_color *array, unsigned asize, GLfloat minb, GLfloat maxb)
| extract all Crayola colors having a brightness between `minb` and `maxb` More...
gle_color | bright_color (unsigned indx, GLfloat minb=0.6, GLfloat maxb=3.0)
| one of the crayola color, with a brightness() > threshold More...
void | print_colors (std::ostream &, named_color *list, unsigned list_size)
| print a list of colors
void | print_std_colors (std::ostream &)
| print the list of standard colors
gle_color | alt_color (unsigned indx)
| a large set of colors from Crayola crayons

## Variables
const int | finesse = 8
| this defines the number of triangles used to draw shapes, bigger = nicer More...
GLuint | dlist = 0
| index of OpenGL display lists

## Detailed Description

Todo:
  namespace gle should be a class -> we use GL.vertex(v) Problem: the gle prefix is already used by standard OpenGL elements

## Function Documentation

gle_color bright_color | ( | unsigned | indx,
|  | GLfloat | minb = `0.6`,
|  | GLfloat | maxb = `3.0`
| ) |  |

return `indx`-th color from the crayola list, that has a brightness between `minb` and `maxb`

void gleAlignZ | ( | const Vector2 & | A,
|  | const Vector2 & | B
| ) |  |

Graphical elements are aligned in 3D along Z and this function is used to rotate them in the XY plane for the 2D display. The rotation is chosen such that the Y face of the rotated object points down the Z axis. In this way, the lower part of the object is drawn first, such that the upper half overwrites it and become the only visible part. The display is thus correct even if DEPTH_TEST is disabled.

void gleAlignZ | ( | const Vector2 & | A,
|  | const Vector2 & | B,
|  | real | ts
| ) |  |

ts is the transverse scaling done in the XY plane after rotation

void gleArrowedBand | ( | GLfloat | width | ) |

A cylindrical band of specified width drawn on the equator of a sphere of radius 1. The band is in the XY plane. The axis of the cylinder is Z.

void gleArrowTail2 | ( |  | ) |

Draw three fins like in the tail of an arrow

int gleComputeTextSize | ( | const char | text[],
|  | void * | font,
|  | int & | lines
| ) |  |

Compute the max width of all the lines in the given text This uses GLUT, which should be initialized.

void gleDisplayText | ( | const char | text[],
|  | void * | font,
|  | gle_color | bcol,
|  | int | position,
|  | int | width,
|  | int | height
| ) |  |

The text is displayed in the current color. A background rectangle is displayed only if `bcol` is visible.

glColor3f(1,1,1);
gleDisplayText(fKeyString, GLUT_BITMAP_8_BY_13, 0x0, 1);

Possible values for `position`:

- 0: bottom-left, text going up
- 1: bottom-right, text going up
- 2: top-right, text going down
- 3: top-left, text going down
- 4: center, text going down

Note: width and height are the current size of the viewport (window)

void gleDrawPixels | ( | int | width,
|  | int | height,
|  | int | nbc,
|  | GLubyte | rgba[],
|  | Vector2 | pos,
|  | Vector2 | dx,
|  | Vector2 | dy
| ) |  |

Draw an array of pixels using GL_TRIANGLE_STRIP

The array rgba[] should ( nbc * width * height ) bytes, containing nbc-components (eg. RGBA) per pixel and stored by columns:

color(i,j) = rgba[ nbc*(i+height*j) ]
0 <= i < height
0 <= j < width

`pos` is the position of the top-left corner `dx` is the direction of the width `dy` is the direction of the height The magnitudes of `dx` and `dy` indicates the dimensions of a pixel. They may be of different magnitudes, and not necessarily orthogonal.

void gleDrawText | ( | const char | text[],
|  | void * | font,
|  | GLfloat | vshift = `-13`
| ) |  |

draw the string character per character using: glutBitmapCharacter()

void gleDrawText | ( | const Vector3 & | vec,
|  | const char | text[],
|  | void * | font
| ) |  |

set the current raster position to `w`

void gleDualPass | ( | void | primitive() | ) |

draw back first, and then front of object, GL_CULL_FACE should be enabled

void gleDumbbell | ( | const Vector2 & | a,
|  | const Vector2 & | b,
|  | real | diameter
| ) |  |

Two hexagons linked by a rectangle

void gleHexagon0 | ( |  | ) |

draw hexagon that has the same surface as the disc or Radius 1.

void gleRectangle | ( | const int | rect[4] | ) |

rectangle should be specified as [ left, bottom, right, top ]

The rectangle will be drawn counter-clockwise

void gleReportErrors | ( | FILE * | out,
|  | const char * | msg
| ) |  |

This is similart to glutReportError, but the additional argument can provide useful feedback for debugging

void gleRevolution | ( | GLfloat(*)(GLfloat) | radius | ) |

Draw a surface of revolution around the Z-axis. The surface goes from Z=0 to Z=1, and its radius is given by the function `radius`(z) provided as argument.

void RGBtoHSV | ( | GLfloat | r,
|  | GLfloat | g,
|  | GLfloat | b,
|  | GLfloat * | h,
|  | GLfloat * | s,
|  | GLfloat * | v
| ) |  |

r,g,b values are from 0 to 1 h = [0, 360], s = [0,1], v = [0,1] if s == 0, then h = -1 (undefined)

int select_colors | ( | gle_color * | array,
|  | unsigned | asize,
|  | GLfloat | minb,
|  | GLfloat | maxb
| ) |  |

extract all colors from the crayola list, that have a brightness between `minb` and `maxb`

void setHueColor | ( | GLfloat & | r,
|  | GLfloat & | g,
|  | GLfloat & | b,
|  | GLfloat | h
| ) |  |

set a RGB color as a function of a Hue value `h` in [0, 1]. The colors are in the order: red, green, blue, red

void setJetColor | ( | GLfloat & | r,
|  | GLfloat & | g,
|  | GLfloat & | b,
|  | GLfloat | h,
|  | GLfloat | min
| ) |  |

set a RGB color as a function of a value h in [0, 4]. The result vary from black, blue, cyan, yellow, orange to red.

## Variable Documentation

const int finesse = 8

finesse = 8 is good, 16 is nice, 32 should be very nice. To be able to change it during a run, we would need to update all the display lists