FAQ

  1. What's  about these  Triple and Cell things ?
  2. The .ui files for the examples don't match my Qt version, what can I do ?
  3. How can I change the axes tic length ?
  4. What is the algorithm behind the axis switching feature ?


What's about these Triple and Cell things ?

This relates to the use of  SurfacePlot::loadFromData(Qwt3D::TripleField const& data, Qwt3D::CellField const& poly). data is simply a vector of your points in R^3 and poly defines the polygons (surfaces) build from these points. Without the poly vector you would end up with a pure point cloud.

Example:

TripleField:

0: (2,6,7)
1: (0.34,5,3)
2: (-2,-12,9)
3:   and so on ...


CellField:

0: (0,2,3)     // the Points 0,2 and 3 from the TripleField
1: (1,6,5,3)   //  "         1,6,5 and 3   "
2: (3,4,2)     //


The sequence of points defines a counter-clockwise ordering, that means for CellField[1]:

Draw an edge from  TripleField[1] to TripleField[6], afterwards from 6 to 5, from 5 to 3 and close the cell with an edge from 3 to 1.

The resulting polygon must be convex. Triangulation is deliberately not part of the library.

It's up to the user to set up the both vectors. The Mesh2MainWindow::openMesh() function from the mesh2 example demonstrates an user-defined Reader for FEM data. The raw data for this example are organized in 2 different files for cells and triple respectively.

The .ui files for the examples don't match my Qt version. What can I do ?

The reason not to change this is a complex interaction between designer, uic and moc between different (also minor versions) of Qt.
Sometimes a workaround is to manually change the "UI version" tag on top of the .ui file. The only difference I will care for is the port from Qt3 to Qt4. In any other cases you are on your own.

How can I change the axes tic length ?

The 12 possible axes reside in the CoordinateSystem::axes vector. The vector is public, so all of the axes public properties are individually addressable.

What is the algorithm behind the axis switching feature ?

  1. Reduce the problem and project all coordinate axes (a) to the viewport plane
  2. Continue in reduction by building the convex hull for the projection and removing inner axes  --->  (b)
  3. Make a choice from resp. two axes (x0,x1  y0,y1 ...)  - check CoordinateSystem::chooseAxes() for details regarding comparison criteria.
  4. Adjust tic direction and label position (not yet perfect)   (CoordinateSystem::autoDecorateExposedAxis())


a)


b)