ViSP  2.7.0
vpPlot Class Reference

#include <vpPlot.h>

Public Member Functions

 vpPlot ()
 
 vpPlot (const unsigned int nbGraph, const unsigned int height=700, const unsigned int width=700, const int x=-1, const int y=-1, const char *title=NULL)
 
 ~vpPlot ()
 
void init (const unsigned int nbGraph, const unsigned int height=700, const unsigned int width=700, const int x=-1, const int y=-1, const char *title=NULL)
 
void initGraph (unsigned int graphNum, unsigned int curveNbr)
 
void initRange (const unsigned int graphNum, double xmin, double xmax, double ymin, double ymax)
 
void initRange (const unsigned int graphNum, double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
 
void setColor (const unsigned int graphNum, const unsigned int curveNum, vpColor color)
 
void setFont (const char *font)
 
void setTitle (const unsigned int graphNum, const char *title)
 
void setUnitX (const unsigned int graphNum, const char *unitx)
 
void setUnitY (const unsigned int graphNum, const char *unity)
 
void setUnitZ (const unsigned int graphNum, const char *unitz)
 
void setLegend (const unsigned int graphNum, const unsigned int curveNum, const char *legend)
 
void setThickness (const unsigned int graphNum, const unsigned int curveNum, const unsigned int thickness)
 
void plot (const unsigned int graphNum, const unsigned int curveNum, const double x, const double y)
 
void plot (const unsigned int graphNum, const double x, const vpColVector &v_y)
 
void plot (const unsigned int graphNum, const unsigned int curveNum, const double x, const double y, const double z)
 
void plot (const unsigned int graphNum, const double x, const vpColVector &v_y, const vpColVector &v_z)
 
void navigate (void)
 
void getPixelValue (const bool block)
 
void resetPointList (const unsigned int graphNum)
 
void resetPointList (const unsigned int graphNum, const unsigned int curveNum)
 
void saveData (const unsigned int graphNum, const char *dataFile)
 

Public Attributes

vpImage< unsigned char > I
 

Detailed Description

This class enables real time drawing of 2D or 3D graphics. An instance of the class open a window which contains between 1 and 4 graphics. Each one contains a desired number of curves.

Warning
This class is only available if one of the display functionalities (X11, GDI, GTK, OpenCV or Direct3D) is available. In visp/vpConfig.h header file, you should have VISP_HAVE_DISPLAY define.

The example below shows how to use the vpPlot class.

#include <visp/vpConfig.h>
#include <visp/vpPlot.h>
int main ()
{
#if defined(VISP_HAVE_DISPLAY)
//Create a window (700 by 700) at position (100, 200) with two graphics
vpPlot A(2, 700, 700, 100, 200, "Curves...");
//The first graphic contains 1 curve and the second graphic contains 2 curves
A.initGraph(0,1);
A.initGraph(1,2);
//The color of the curve in the first graphic is red
A.setColor(0,0,vpColor::red);
//The first curve in the second graphic is green
A.setColor(1,0,vpColor::green);
//The second curve in the second graphic is blue
A.setColor(1,1,vpColor::blue);
//Add the point (0,0) in the first graphic
A.plot(0,0,0,0);
//Add the point (0,1) to the first curve of the second graphic
A.plot(1,0,0,1);
//Add the point (0,2) to the second curve of the second graphic
A.plot(1,1,0,2);
for (int i = 0; i < 50; i++)
{
//Add the point (i,sin(i*pi/10) in the first graphic
A.plot(0,0,i,sin(i*M_PI/10));
//Add the point (i,1) to the first curve of the second graphic
A.plot(1,0,i,1);
//Add the point (i,2) to the second curve of the second graphic
A.plot(1,1,i,2);
}
return 0;
#endif
}
Examples:
plot2d.cpp, plot3d.cpp, servoMomentImage.cpp, servoPioneerPanSegment3D.cpp, servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp, and testFeatureSegment.cpp.

Definition at line 117 of file vpPlot.h.

Constructor & Destructor Documentation

vpPlot::vpPlot ( )

Default constructor.

Needs then a call to init().

Definition at line 67 of file vpPlot.cpp.

vpPlot::vpPlot ( const unsigned int  graphNbr,
const unsigned int  height = 700,
const unsigned int  width = 700,
const int  x = -1,
const int  y = -1,
const char *  title = NULL 
)

This constructor creates a new window where the curves will be drawn. The number of graphics in the window must be set.

Warning
You can modify the default window size, but this is not advised.
Under Unix, when X11 is used to display the curves, the default font is set to "-adobe-times-medium-i-normal--10-100-75-75-p-52-iso8859-*". Note that you can chose an other one using "xfontsel".
Parameters
graphNbr: The number of graph in the window.
height: Height of the window.
width: Width of the window.
x,y: The window is set at position x,y (column index, row index).
title: Window title.

Definition at line 91 of file vpPlot.cpp.

References init().

vpPlot::~vpPlot ( )

Basic destructor

Definition at line 147 of file vpPlot.cpp.

Member Function Documentation

void vpPlot::getPixelValue ( const bool  block)

This method displays the coordinates of the point pointed by the mouse pointer.

Parameters
block: If true, this method waits a click.

Definition at line 409 of file vpPlot.cpp.

References vpDisplay::getClick(), vpDisplay::getPointerPosition(), and I.

void vpPlot::init ( const unsigned int  graphNbr,
const unsigned int  height = 700,
const unsigned int  width = 700,
const int  x = -1,
const int  y = -1,
const char *  title = NULL 
)

Creates a new window where the curves will be drawn. The number of graphics in the window must be set.

Warning
You can modify the default window size, but this is not advised.
Parameters
graphNbr: The number of graph in the window.
height: Height of the window.
width: Width of the window.
x,y: The window is set at position x,y (column index, row index).
title: Window title.
Examples:
servoMomentImage.cpp.

Definition at line 116 of file vpPlot.cpp.

References vpDisplay::display(), I, vpImage< Type >::init(), and vpDisplay::init().

Referenced by vpPlot().

void vpPlot::initGraph ( unsigned int  graphNum,
unsigned int  curveNbr 
)

Function which enables to initialize the number of curves which belongs to a graphic.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNbr: The number of curves belonging to the graphic
Examples:
plot2d.cpp, plot3d.cpp, servoMomentImage.cpp, servoPioneerPanSegment3D.cpp, servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp, and testFeatureSegment.cpp.

Definition at line 217 of file vpPlot.cpp.

void vpPlot::initRange ( const unsigned int  graphNum,
double  xmin,
double  xmax,
double  ymin,
double  ymax 
)

This method enables to set the initial range of the selected graphic.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
xmin: The initial minimum value along the x axis given in the user coordinates.
xmax: The initial maximum value along the x axis given in the user coordinates.
ymin: The initial minimum value along the y axis given in the user coordinates.
ymax: The initial maximum value along the y axis given in the user coordinates.
Examples:
servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, and servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp.

Definition at line 242 of file vpPlot.cpp.

References I.

void vpPlot::initRange ( const unsigned int  graphNum,
double  xmin,
double  xmax,
double  ymin,
double  ymax,
double  zmin,
double  zmax 
)

This method enables to set the initial range of the selected graphic.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
xmin: The initial minimum value along the x axis given in the user coordinates.
xmax: The initial maximum value along the x axis given in the user coordinates.
ymin: The initial minimum value along the y axis given in the user coordinates.
ymax: The initial maximum value along the y axis given in the user coordinates.
zmin: The initial minimum value along the z axis given in the user coordinates.
zmax: The initial maximum value along the z axis given in the user coordinates.

Definition at line 261 of file vpPlot.cpp.

References I.

void vpPlot::navigate ( void  )

This method unable to move the point of view if you have a 3D graphic.

Definition at line 363 of file vpPlot.cpp.

References vpMouseButton::button1, vpMouseButton::button3, vpDisplay::getPointerPosition(), I, and vpImagePoint::inRectangle().

void vpPlot::plot ( const unsigned int  graphNum,
const unsigned int  curveNum,
const double  x,
const double  y 
)

This function enables you to add a new point in the curve. This point is drawn with the parameters of the curve.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNum: The index of the curve in the list of the curves belonging to the graphic.
x: The coordinate of the new point along the x axis and given in the user unit system.
y: The coordinate of the new point along the y axis and given in the user unit system.
Examples:
plot2d.cpp, plot3d.cpp, servoMomentImage.cpp, servoPioneerPanSegment3D.cpp, servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp, and testFeatureSegment.cpp.

Definition at line 300 of file vpPlot.cpp.

References I.

Referenced by plot().

void vpPlot::plot ( const unsigned int  graphNum,
const double  x,
const vpColVector v_y 
)

This function enables you to add new points in all curves of a plot. These points are drawn with the parameters of the curves.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
x: The coordinate of the new points along the x axis and given in the user unit system.
v_y: y coordinates vector. The coordinates of the new points along the y axis and given in the user unit system.

Definition at line 312 of file vpPlot.cpp.

References vpMatrix::getRows(), plot(), and vpTRACE.

void vpPlot::plot ( const unsigned int  graphNum,
const unsigned int  curveNum,
const double  x,
const double  y,
const double  z 
)

This function enables you to add a new point in the curve. This point is drawn with the parameters of the curve.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNum: The index of the curve in the list of the curves belonging to the graphic.
x: The coordinate of the new point along the x axis and given in the user unit system.
y: The coordinate of the new point along the y axis and given in the user unit system.
z: The coordinate of the new point along the z axis and given in the user unit system.

Definition at line 335 of file vpPlot.cpp.

References I, and plot().

void vpPlot::plot ( const unsigned int  graphNum,
const double  x,
const vpColVector v_y,
const vpColVector v_z 
)

This function enables you to add new points in all curves of a plot. These points are drawn with the parameters of the curves.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
x: The coordinate of the new points along the x axis and given in the user unit system.
v_y: y coordinates vector. The coordinates of the new points along the y axis and given in the user unit system.
v_z: z coordinates vector. The coordinates of the new points along the z axis and given in the user unit system.

Definition at line 348 of file vpPlot.cpp.

References vpMatrix::getRows(), plot(), and vpTRACE.

void vpPlot::resetPointList ( const unsigned int  graphNum)

This method enables to erase the list of points stored for the graphic number $ graphNum $.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.

Definition at line 491 of file vpPlot.cpp.

Referenced by resetPointList().

void vpPlot::resetPointList ( const unsigned int  graphNum,
const unsigned int  curveNum 
)

This method enables to erase the list of points stored for the curve number $ curveNum $ contained in the graphic number $ graphNum $.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNum: The index of the curve in the list of the curves belonging to the graphic.

Definition at line 517 of file vpPlot.cpp.

References resetPointList().

void vpPlot::saveData ( const unsigned int  graphNum,
const char *  dataFile 
)

This function enables to save in a text file all the plotted points of a graphic.

The first line of the text file is the graphic title. Then the points coordinates are given. If the graphic has to curves:

  • the first column corresponds to the x axis of the first curve
  • the second column corresponds to the y axis of the first curve
  • the third column corresponds to the z axis of the first curve
  • the fourth column corresponds to the x axis of the second curve
  • the fifth column corresponds to the y axis of the second curve
  • the sixth column corresponds to the z axis of the second curve

The column are delimited thanks to tabultaions.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
dataFile: Name of the text file.
Examples:
plot2d.cpp.

Definition at line 538 of file vpPlot.cpp.

void vpPlot::setColor ( const unsigned int  graphNum,
const unsigned int  curveNum,
vpColor  color 
)

This function enables you to choose the color used to draw a given curve.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNum: The index of the curve in the list of the curves belonging to the graphic.
color: The color you want to use
Examples:
plot2d.cpp, plot3d.cpp, servoMomentImage.cpp, servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, and servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp.

Definition at line 276 of file vpPlot.cpp.

void vpPlot::setFont ( const char *  font)
inline

Set the font of the characters. The display should be initialized before.

To know which font are available, on Unix you can use xselfonts or xlsfonts utilities.

Definition at line 155 of file vpPlot.h.

References vpDisplay::isInitialised(), and vpDisplay::setFont().

void vpPlot::setLegend ( const unsigned int  graphNum,
const unsigned int  curveNum,
const char *  legend 
)

Sets the legend of a curve.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNum: The index of the curve in the list of the curves belonging to the graphic.
legend: The legend of the curve.
Examples:
plot2d.cpp, plot3d.cpp, servoMomentImage.cpp, servoPioneerPanSegment3D.cpp, servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, and servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp.

Definition at line 480 of file vpPlot.cpp.

void vpPlot::setThickness ( const unsigned int  graphNum,
const unsigned int  curveNum,
const unsigned int  thickness 
)

This function enables you to choose the thickness used to draw a given curve.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
curveNum: The index of the curve in the list of the curves belonging to the graphic.
thickness: The thickness you want to use

Definition at line 505 of file vpPlot.cpp.

void vpPlot::setTitle ( const unsigned int  graphNum,
const char *  title 
)

Sets the title of a graphic.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
title: The graphic title.
Examples:
plot2d.cpp, plot3d.cpp, servoMomentImage.cpp, servoPioneerPanSegment3D.cpp, servoViper850Point2DArtVelocity-jointAvoidance-basic.cpp, and servoViper850Point2DArtVelocity-jointAvoidance-gpa.cpp.

Definition at line 431 of file vpPlot.cpp.

void vpPlot::setUnitX ( const unsigned int  graphNum,
const char *  unitx 
)

Sets the unit system of the x axis.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
unitx: The name of the unit of the x axis.
Examples:
plot2d.cpp, and plot3d.cpp.

Definition at line 443 of file vpPlot.cpp.

void vpPlot::setUnitY ( const unsigned int  graphNum,
const char *  unity 
)

Sets the unit system of the y axis.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
unity: The name of the unit of the y axis.
Examples:
plot2d.cpp, and plot3d.cpp.

Definition at line 455 of file vpPlot.cpp.

void vpPlot::setUnitZ ( const unsigned int  graphNum,
const char *  unitz 
)

Sets the unit system of the z axis.

Parameters
graphNum: The index of the graph in the window. As the number of graphic in a window is less or equal to 4, this parameter is between 0 and 3.
unitz: The name of the unit of the z axis.
Examples:
plot3d.cpp.

Definition at line 467 of file vpPlot.cpp.

Member Data Documentation

vpImage<unsigned char> vpPlot::I
Examples:
plot2d.cpp.

Definition at line 120 of file vpPlot.h.

Referenced by getPixelValue(), init(), initRange(), navigate(), and plot().