FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
Todo List
Class DreiBein
Derive from VSkeletonRenderObject instead
Member ExtractTrajectories
Implement option to interrupt the computation, especcially when slow disc access is enabled.
Namespace Fiber
rewrite createTree into two polymorphic functions
Member Fiber::AverageField< T >::AverageField (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::CellDirectionsFixed::CellDirectionsFixed (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::CellDirectionsVariable::CellDirectionsVariable (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::CellNeighborhoodFixed::CellNeighborhoodFixed (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::CellNeighborhoodVariable::CellNeighborhoodVariable (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::ComputeCellField< T >::ComputeCellField (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Curve::ArcLength::ArcLength (const CurveOperatorData &CurveData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Curve::Curvature::Curvature (const CurveOperatorData &CD, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Curve::CurveQuantity< FieldType >::CurveQuantity (const CurveOperatorData &CD, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Curve::ProperTime::ProperTime (const CurveOperatorData &CD, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Curve::StepSize::StepSize (const CurveOperatorData &CurveData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Curve::Torsion::Torsion (const CurveOperatorData &CD, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::DEPRECATED ("Use grid/types/RegularlyFragmentedGrid.hpp: instead", prepareRegularlyFragmentedGrid(BundlePtr bp, double time, const string &grid_name, int grid_dimensionality, const RefPtr< RegularlyFragmentedField< 3 > > &positions, const Eagle::BoundingBox &bb))
Check for already existent grid.
Member Fiber::DeviatoricRadius::DeviatoricRadius (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::DeviatoricStress::DeviatoricStress (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::DirectProductMemArrayBase< T, Category, MDIMS >::getIndex (const T &PointCoordinates) const
Warning: this code is wrong when the number of components differs from the number of coordinate components. Would be simple to fix, but need to check cautiously.
Member Fiber::EigenArrays::create (const RefPtr< MemBase > &Data)
this needs improval through using an OnDemandCreator
Struct Fiber::Expression< Operator >
Complete Iterator implementation for passing-Operator version
Member Fiber::Expression< Operator >::ternary (const Iterator< Data > &p, const Iterator< Data1 > &q, const Iterator< Data2 > &r)
This function should really have the signature
Member Fiber::FiberIO::HDF5::PrecisionTransformation::getFileType (const StorageTransformations::FilterSettings &FS, hid_t Mem_type_hid, const Fiber::Field &theField, F5Path *myPath)
: consistency check for other types
Member Fiber::FiberMap< ID >::operator[] (const ID &id)
revise to use FragmentProvider
Member Fiber::Field::setPersistentData (const RefPtr< MemBase > &Mb, const RefPtr< FragmentID > &=nullptr, const RefPtr< MemCore::Cache > &Cache=MemCore::Cache::MemCache(), const string &ProvenanceInfo={})
Revise this API
Class Fiber::FieldSelection
Add iterator class
Member Fiber::fillVertexSelection (RefPtr< Grid > &grid, RefPtr< MemArray< 1, VertexSelection_t > > &selection)
: - implement
  • this should be done better in 2D screen space, knowing the polygon and the camera matrix for transforming points.
Struct Fiber::FiniteDifferenceTrait< double >
Dims is a template parameter; probably doesnt make sense and should rather be fixed to be 1.
Struct Fiber::FragmentSearchBase

Make interpolator configurable

Make type registry for field types and interpolators

Member Fiber::getTangentialVectors (Grid &G, const string &FieldName=TangentialVectorFieldName)

Make use of timestamps of the involved fields

Define an exception class here to indicate the many reasons of failures here, instead of just returning a NullPtr.

Member Fiber::GridEvaluator::find (const RefPtr< MemBase > &DestinationCoords, const Field &SourcePositions, GridEvaluator::Context &theEvaluationContext)
Use an extensible type registry for different coordinate types.
Struct Fiber::GridField
support refinement levels
Struct Fiber::GridSaveParameters
Move this into StorageTransformation
Member Fiber::growVertexSelection (MemCore::RefPtr< Fiber::Grid > &grid, MemCore::RefPtr< Fiber::MemArray< 1, VertexSelection_t > > &selection, double radius)
: split up in 2 functions: - fill the selection by selecting all points inside the convex hull of the selection
  • grow selection by using the convex hull
Member Fiber::HyperslabParameters::count () const
Rename to size() for STL vector compatibility. Maybe.
Member Fiber::Invariant1::Invariant1 (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Invariant2::Invariant2 (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Invariant3::Invariant3 (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Class Fiber::Iterator< T >
Add an Iterator for constant data access.
Class Fiber::LineSet
Yet to be done:
  1. Do really support all differential geometric curve properties
  2. Support fragmented edge fields
  3. Support fragmented coordinate fields (not easy, need to take care of global indices and fragment ID's, if a curve if split among coordinate fragments, might not be able to continue at all, but rather require some recombination routine to be called)
  4. Support other point types than the default one, such to support double and float coordinates, also other dimensionalities and coordinate systems (this is going to become a template nightmare).
  5. Support a parallelization interface such that each curve in the line set can be computed independently by some Thread.
Member Fiber::LineSet::getTangentialVectors (const RefPtr< FragmentID > &f=NullPtr(), const string &FieldName=TangentialVectorFieldName)

Make use of timestamps of the involved fields (whatever this means)

Define an exception class here to indicate the many reasons of failures here, instead of just returning a NullPtr.

Member Fiber::LocalFromWorldPoint::get (const point &position, LocalPoint &result)

should just return a pair<> here as return value, and rather use a fragment ID itself instead of a string

CHECK WHETHER PARAMETERS REALLY NEED TO BE COPIED HERE

Member Fiber::LocalFromWorldPoint::getBorderIntersectionNormal (const point worldposition, const pair< point, string > localpoint, const tvector direction, point &intersection, bivector &normal)
CHECK WHETHER PARAMETERS REALLY NEED TO BE COPIED HERE
Member Fiber::LocalFromWorldPoint::numberOfBordersOfCell (const pair< point, string > localdata, int &hint1, int &hint2)
CHECK WHETHER PARAMETERS REALLY NEED TO BE COPIED HERE
Member Fiber::MeanStress::MeanStress (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::Mises::Mises (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member Fiber::MultiArrayBase< N, T >::getElement (const MultiIndex< N > &I) const
Creation of elements not tested!
Member Fiber::MultiIndex< Dims >::linear (const MultiIndex &Dimens) const
Optimize the implemented formula.
Member Fiber::MultiIndex< Dims >::MultiIndex (const MultiIndex< Dims-1 > &m, const index_t &Slice, int SliceDirection)
Optimize this to peform recursive construction!
Class Fiber::OnDemandCreator< Computer, Rank, result_value_type >
Revise, derive from CreativeArray and overload the Producer instead.
Member Fiber::Representation::getSize () const
Consider the case of unfragmented Positions with fragmented fields.
Member Fiber::StressTensorArrays::create (const RefPtr< MemBase > &Data)
this needs improval through using an OnDemandCreator
Member Fiber::TangentialVectorsAndCurveParameter::TangentialVectorsAndCurveParameter (Grid &G, const string &TangentFieldName=TangentialVectorFieldName, const string &LengthFieldName=CurveParameterFieldName)
Make use of timestamps of the involved fields
Struct Fiber::TriangularSurface
Compute area, curvature, ... http://en.wikipedia.org/wiki/Barycentric_coordinates_%28mathematics%29
Member Fiber::VertexCellNeighborhood::VertexCellNeighborhood (const FEMOperatorData &FEMData, const MemBase::Creator_t &C=MemCore::NullPtr())
Implement cache management
Member GL::ElementRenderer::sortByDepth (Wizt::VRenderContext &Context, const MemCore::RefPtr< Fiber::CreativeArrayBase > &VertexCoordinates, unsigned Discretization=2)
Add memory management
Class RandomPointDistribution
: add progress bar (done) parallelize? (but first try resulted in a even slower version) use on demand creators, and dont copy for fragmentation/spacialization
Class SelectionGridExtractor
: extract only one field. This should save some time....
Class SurfaceView
Derive from... some common base object?
Member Traum::AffineAcceleration< SpaceTime >::operator() (const Point_t &q, const Vector_t &dot_q) const
return negative acceleration, and make Gamma global.
Namespace UniformLib
The global range will be recalculated for each fragment because the type is not known a priori
Member UniGridMapper::localCellCoordinatesFromCurviGrid (const point &p, point &uvw, double grid_epsilon=0.0)
remove the un-nice epsilon grid boundary via neighbourhood
Class Wizt::AnalyticGrid

Generalize this to other grid types, and unify it with the Grid generators in the cephalus/ place, such as RandomPointDistribution, PointDistribution, etc. All Grid generators should go into a common "fiber base" location.

Must become a GridProviderObject

Member Wizt::ColorizedFloatSliceRenderer::vertex_shader (VRenderContext &Context) const override
Add light source handling
Class Wizt::EdgeRenderer
Current implementation does not support caching of multiple grids, e.g. time-dependent data.
Struct Wizt::FComputeNormalsTask
make use of class TriangularSurface here (from grid/types/ )
Class Wizt::FieldAnemone
Might want to rename this VertexFieldAnemone
Member Wizt::FieldOperatorObject::FieldOperation (VRequest &Context, Fiber::Field &, Fiber::Representation &)=0
Ease field identifier creation by sharing of identifier creators among representations.
Class Wizt::SplatRenderObject
Derive from class Programmable instead of doing same stuff here manually. Code is currently messy with VGLRenderContext and VRenderContext mixed. Also, need to replace GL_POINT_SPRITE with using billboards generated by a Geometry shader since point sprites are deprecated in OpenGL 3.
Member Wizt::SplatRenderObject::FragmentShaderPrefix (VRenderContext &) const
: This function should be removed by using the Programmable basis class. It was added here to emulate similar behaviour of the newer infrastructure.
Member Wizt::SurfaceRenderer::getAnemoneExplorer (VRenderContext &Context) const override
Use FloatingAnemoneExplorer here.
Class Wizt::TriangleRenderer
Current implementation does not support caching of multiple grids, e.g. time-dependent data.