surfaces_points

surfaces_points — Define a structure to store a set of triangles defining a surface.

Synopsis

#define             VISU_SURFACES_POINTS_OFFSET_NORMAL
#define             VISU_SURFACES_POINTS_OFFSET_TRANSLATION
#define             VISU_SURFACES_POINTS_OFFSET_USER
struct              VisuSurfacesPoints;
void                visu_surfaces_points_allocate       (VisuSurfacesPoints *points,
                                                         int nsurf,
                                                         int npolys,
                                                         int npoints);
void                visu_surfaces_points_check          (VisuSurfacesPoints *points);
void                visu_surfaces_points_free           (VisuSurfacesPoints *points);
void                visu_surfaces_points_init           (VisuSurfacesPoints *points,
                                                         int bufferSize);
void                visu_surfaces_points_remove         (VisuSurfacesPoints *points,
                                                         guint pos);
void                visu_surfaces_points_transform      (VisuSurfacesPoints *points,
                                                         float trans[3][3]);
void                visu_surfaces_points_translate      (VisuSurfacesPoints *points,
                                                         float xyz[3]);

Description

This structure is used to store and draw polyedges as a set of XYZ points and a set of link to them.

Details

VISU_SURFACES_POINTS_OFFSET_NORMAL

#define VISU_SURFACES_POINTS_OFFSET_NORMAL 3

The offset to read the normal values in poly_points.


VISU_SURFACES_POINTS_OFFSET_TRANSLATION

#define VISU_SURFACES_POINTS_OFFSET_TRANSLATION 6

The offset to read the translation values in poly_points.


VISU_SURFACES_POINTS_OFFSET_USER

#define VISU_SURFACES_POINTS_OFFSET_USER 9

The offset to read the user values in poly_points.


struct VisuSurfacesPoints

struct VisuSurfacesPoints {
  /* Number of different surfaces. */
  guint nsurf;
  /* This is the size of additional data on each points in addition to
     (x,y,z) coordinates, normal and translation. Then poly_points is
     allocated to (num_points * (9 + bufferSize)). */
  guint bufferSize;

  /* Number of polygons */
  guint num_polys, num_points;

  /* Number of polygons per surface. */
  guint *num_polys_surf;

  /* Give the number of the surface when the number of the
     polygon is given. */
  int *poly_surf_index;

  /* Return the number of vertices when the id of
     the polygon is given. */
  guint *poly_num_vertices;

  /* Return the id in poly_points_data of the vertice j of polygon i. */
  guint **poly_vertices;

  /* Vectors giving points and normal of the vertice i. */
  float **poly_points_data;
};

This structure stores geometric description of surfaces. Several surfaces are stored in a single structure for improved performances.

guint nsurf;

number of surfaces encoded in this structure ;

guint bufferSize;

number of stored float in addition to coordinates and normals ;

guint num_polys;

number of polygoins stored in this structure ;

guint num_points;

number of vertices stored in this structure ;

guint *num_polys_surf;

number of visible polygons stored in this structure per surface ;

int *poly_surf_index;

gives the id of the surface for each polygon, this value ranges from - nsurf to + nsurf. abs(id - 1) gives the index of the surface the polygon is attached to. If values are negative, then the polygon is currently not used ;

guint *poly_num_vertices;

gives the number of vertices used by each polygons ;

guint **poly_vertices;

returns the id j of the vertices of polygon i ;

float **poly_points_data;

vectors giving additional data of vertex i.

visu_surfaces_points_allocate ()

void                visu_surfaces_points_allocate       (VisuSurfacesPoints *points,
                                                         int nsurf,
                                                         int npolys,
                                                         int npoints);

Allocate the arrays to store a set of points.

points :

a pointer on a set of points (not allocated) ;

nsurf :

the number of stored surfaces ;

npolys :

the number of stored polygons ;

npoints :

the corresponding number of points ;

visu_surfaces_points_check ()

void                visu_surfaces_points_check          (VisuSurfacesPoints *points);

A debug routines to check that all pointers and size are relevant. It should not be used outside a debug area because it can be slow.

points :

a set of points.

visu_surfaces_points_free ()

void                visu_surfaces_points_free           (VisuSurfacesPoints *points);

Free all allocated arrays of the given set of points. The point structure itself is not freed.

points :

a set of points.

visu_surfaces_points_init ()

void                visu_surfaces_points_init           (VisuSurfacesPoints *points,
                                                         int bufferSize);

Initialise a VisuSurfacesPoints structure. It must be done before any use.

points :

a pointer on a set of points (not initialised) ;

bufferSize :

the number of additional data to coordinates and normals.

visu_surfaces_points_remove ()

void                visu_surfaces_points_remove         (VisuSurfacesPoints *points,
                                                         guint pos);

Remove the points belonging to surface number pos.

points :

a set of points ;

pos :

an integer between 0 and points->nsurf.

visu_surfaces_points_transform ()

void                visu_surfaces_points_transform      (VisuSurfacesPoints *points,
                                                         float trans[3][3]);

Apply trans matrix to all vertices coordinates stored by points.

points :

a set of points.

trans :

a matrix.

Since 3.7


visu_surfaces_points_translate ()

void                visu_surfaces_points_translate      (VisuSurfacesPoints *points,
                                                         float xyz[3]);

In devel...

points :

a set of points.

xyz :

a given translation in cartesian coordinates.