$Id: TODO.txt,v 1.21 2009-03-17 07:36:33 geuzaine Exp $

********************************************************************

extrude along a given curve (use curve->closestPoint for each xyz in
ExtrudeParams and extrude along the tangent? not that simple: this
could lead to self-intersection if curvature >>)

********************************************************************

define HAVE_NO_MESH to remove mesh algorithms from build

********************************************************************

Should we take embedded vertices into account in extrusions?

********************************************************************

Store Octree in PViewDataList and modify OctreePost to use it (the
same way PViewDataGModel uses the Octree stored in GModel)

********************************************************************

LMGC & co: allow arbitrary glyphs to represent data (like our 3D
arrows). Glyph can be loaded as a mesh or a geometry; create vertex
array or display list for each; select glyph in Point/Vector/Tensor
display dialog. define number of values to transform glyph (quaternion
+ scale{x,y,z}?). Definition: Glyph = drawable rigid object with a
single associated scalar/vector or tensor value.

********************************************************************

clarify physical names/ids : physical names are directly mapped to
integers, without the notion of dimension -> hence, some physical are
impossible to name (e.g. if Physical Line(1)={..} and Physical
Surface(1)={...});

********************************************************************

Read all the components from postpro datasets, even if > 9. Provide a
"interpretation" option allowing to select which components to draw
and to force their interpretation as scalar, vector or tensor

********************************************************************

Add a global "transparency slider" for the mesh; if value != 1, fill a
global triangle vertex array in GModel instead of in each separate
entity, and sort like in post-processing.

********************************************************************

fix tetgen for non manifold geometries: with a single surface
connected to a volume and tetgen modifies the volume boundary mesh, we
get hanging nodes

Also: we need to fix the 1D mesh in all cases!

********************************************************************

Add list of recently loaded files in the GUI

********************************************************************

add cleanup fct to remove duplicate elements in
GModel->checkMeshCoherence

********************************************************************

3D Delaunay: precompute non-connected volumes and apply algo to each
non-connected aggregate. This will improve mesh quality and speed for
close non-connected objects.

********************************************************************

interface duplicate entity removal from opencascade

********************************************************************

add support for Patran mesh files

********************************************************************

interface GModel in surface creation in the parser

********************************************************************

add linear lc progression in 1D transfinite generator

Also: implement easier to understand "bump" function (double
progression?)

********************************************************************

add parameter to geo transforms to copy the meshes--this would allow
us to do symmetries and periodic meshes

********************************************************************

introduce Right/Left/Alternate for extruded meshes

********************************************************************

re-implement STL remeshing

********************************************************************

create pyramids on quad surfaces inside unstructured volume before
tetrahedralizing (to enable hex/tet hybrid grids)

********************************************************************

physical groups->add->line/surface: pressing '-' after/while selecting 
a surface should add it with reverse orientation?

********************************************************************

fill transfinite_vertices in meshGFaceExtrude/meshGRegionExtrude when
it makes sense (so that we can use extruded+recombined surfaces to
create Transfinite Volumes, or use the P3D output format)

********************************************************************

parse CORDxx entries in Nastran files to get coordinate system
definitions and use them when reading GRID + parse GRIDxx for axisym
points

********************************************************************

add Mesh>Edit>Change orientation>Lines & Surfaces

********************************************************************

implement better algo to determine which axes to draw
(cf. mathematica)

********************************************************************

Custom range on "filled iso" 3D views produces ugly plots, where one
sees inside the cut elements. (In the meantime, one can use
Plugin(CutMap) with "ExtractVolume" set to 1 (or -1): this will
generate a new view with an actual "cut" on the front (an
"iso-volume"). Then one could use Plugin(Skin) to extract the outer
surface.)

********************************************************************

add "sprite" option to draw fake 3D spheres in post-pro (so that we
can draw millions of spheres)

********************************************************************

add option to cutmesh to cap the mesh instead of displaying "whole"
elements

********************************************************************

add option to draw "filled isos" using 1D textures?

********************************************************************

add GUI for translate+rotate extrusions and for mesh extrusion (layer
stuff)

********************************************************************

Labels:
- add dynamic variables? E.g., if a string contains %string.string,
replace it dynamically in Draw_Text2D/3D by calling
Get_OptionsCategory/Get_OptionValue. (provide a global option to
disable all replacements)
- position with the mouse
- select/move once positioned?
- add ability to add arrows

********************************************************************

keep a table (stack) with the N last file positions when add_infile()
is called; we could then easily implement a simple (but real) UNDO
strategy

********************************************************************

add/restore Parametric curve type using MathEval

********************************************************************

add ternary operator and <,>,<=,>=,== tests in MathEval

********************************************************************

on Macs, datasets with a bounding box < 1.e-06 don't display properly
(probably because all the OpenGL stuff is done internally in single
precision...). Rescale?

********************************************************************

find a better way to display the time/timestep in the scale... (would
be solved if we had dynamic labels?)

********************************************************************

rewrite ColorTable as a C++ class

********************************************************************

create "Volume visualization" range type? (interpolate on regular grid
+ create cut planes // to viewpoint with transparency; can be done in
a straightforward way or using 3D textures)
