- Class Boxtree
- Die verschiedenen MaxNVertices konsolidieren.
- Class col::BoxtreePrecomp
- Es ist nicht egal, in welches Koord.system transformiert wird! Man sollte das abhaengig von der Anzahl der Polygone machen.
- Evtl. kann man m_b auch einsparen.
- Class col::Callback
- Option vorsehen, so dass callbacks auch aufgerufen werden, wenn keines der beiden Objekte sich bewegt hat.
- Maybe we need an additional class of Callbacks, which can be re-used for several object pairs; this would just mean, that obj1/obj2 would be overwritten by the coll.det. module for every callback actually performed.
- Member col::Callback::Callback (osg::NodePtr obj1, osg::NodePtr obj2, bool always=false, bool all_polygons_in=false, LevelOfDetectionE level_of_detection=LEVEL_EXACT)
- always flag verarbeiten.
- Class ColConvexHull
- QHull durch CGAL ersetzen
- Den
osg::GeometryPtr
durch einen osg::GeometryConstPtr ersetzen, wenn OSG das anbietet. - in qhull den longjmp in qh_errexit (oder so aehnlich) durch exceptions ersetzen.
- Den qhull code in einen eigenen Namespace.
- Member col::CollisionPipeline::CollisionPipeline (const osg::Char8 *thread_name=NULL, unsigned int thread_id=0)
- Das
useHulls
Feature vereinfachen; es gibt zu viele Stellen, wo man dieses beeinflussen kann. - Auch das verbose Zeugs sollte man vielleicht aufraeumen. Vielleicht einfach durch separate Fkten machen.
- Member col::CollisionPipeline::check (unsigned int *num_moved=NULL)
- Static Variablen als Instanzvariablen der ColPipeline machen, wenn diese Funktionen hier in die Klasse ColPipeline gewandert sind. (S. Kommentar ganz oben.)
- Member col::CollisionPipeline::runConcurrently (char *thread_name=NULL)
- Eigener Aspect. Sync mit anderen Threads. Gesynct werden muss eigtl. nur, wenn sich etwas an den Punkten oder Polygonen geaendert hat. Was ist, wenn Objekte geloescht wurden?
- Class col::ColObj
- Was man noch tun muss ..
- Member col::ColObj::ColObj (osg::GeometryPtr &geom, osg::NodePtr &node, bool flexible, bool stationary, bool compute_hull, AlgoE algo, Grid *grid, bool show_hull=false, char *name=NULL)
- Parameter m_geom ist ueberfluessig.
- Class col::ColPair
- Was man noch tun muss ..
- Class col::Data
- Aus intersect_fun einen Funktor machen.
- Interne Daten vielleicht in eine Unterklasse ziehen.
- Member col::Data::Data (const osg::NodePtr &node1, const osg::NodePtr &node2)
- Ist es ok, die Fkt getPoints() zu verwenden, wenn sich die Punkte waehrend der Koll.erkennung veraendern (durch OSG)?
- Class col::Dop
- Member col::Dop::Dop (const Pnt3f &pnt)
- Use OSG's dotprod(vec,pnt) when available.
- Class col::DopNode
- Kann nur Dreiecke handeln! (siehe nvertices im header file!)
- Member col::DopNode::check_down (const DopNodeList &other, Data *data, const DopTransform &dt) const
- const machen
- Check, ob pairwise processing hier in SW etwas bringt
- DopNode sollte 2 Dop's enthalten (wie der Algo es eben braucht)
- mit Intel compiler nochmal checken, ob transform2 nicht doch etwas bringt. Dito mit overlap2.
- Verbesserungen aus VRST-Paper einbauen
- In den arrays child_other koennte man den 2ten Zeiger einsparen, da immer other[i] und other[i]+1 betrachtet werden muessen. Dann waeren die Listen nur halb so gross.
- Member col::DopNode::check_stay (const DopNodeList &other, Data *data, const Dop &e, const DopTransform &dt) const
- : Per overload deklarieren.
- Class DopTree
- Creation of DOP trees is very slow!
- Resolve all the TODO's in the code.
- Check if SECOND_ITERATION_FOR_DIAMETER really helps.
- Keine virtual methods (dtor)! (wg. Speicherplatz fuer vtable)
- DOP tree in 1 grosses Array speichern!
- Does performance increase, if all local variables are doubles?
- Zwei verschiedene DopNode's? eine Klasse fuer innere Knoten, eine fuer Blaetter; wg. Speicher fuer pgon, der in inneren Knoten nicht gebraucht wird! Evtl. kann man das auch durch union { d; pgon } machen.
- Instanzvariable index braucht man nicht, da das in child[1] gespeichert werden kann; Instanzvariable nvertices braucht man nicht, wenn man festlegt, dass sowieso nur 3- oder 4-ecke gespeichert werden koennen, und man pgon[3] fuer 3-ecke einfach auf MAX_UINT setzt.
- Klasse DopTree in Klasse DopNode mergen (oder umgekehrt).
- Verschiedene Farben bei DOP-Tree-Visualisierung.
- Code den Naming-Konventionen anpassen! (besonders m_var und M_Var)
- Member col::ElemBox::set (const osg::FaceIterator &fi, const osg::MFPnt3f *points)
- Warum werden bei GL_QUAD_STRIP die letzten beiden Vertices immer geswappt??
- Class col::ElemDop
- Member col::ElemDop::sortindex
- Member col::ElemDop::operator< (const ElemDop &other) const
- Sort mit ordentlichem BinaryPredicate machen! (dann ist das auch thread-safe)
- Member col::Matrix::addObj (ColObj *obj)
- Was noch getan werden muss
- Member col::Matrix::addCallback (Callback *callback, vector< ColObj > *colobjs)
- Member col::Matrix::callCallbacks (const ColPair &pair) const
- Was noch getan werden muss
- Class col::MatrixCell
- Flag all_poygons auswerten.
- Member col::MatrixCell::check (bool use_hulls)
- Check whether or not only a bbox check is wanted. This would be a flag stored with each Callback, and a counter stored with the MatrixCell.
- Matrix-Inversion in ColObj::hasMoved() machen.
- Nochmal ueberpruefen, warum die berechnete Matrix m12 so stimmt; eigtl. haette ich jetzt doch eine umgekehrte Multiplikation erwartet.
- use_hulls in jeder MatrixCell speichern. Dann braucht man nicht das Flag global fuer alle MatrixCell's in Collision.cpp sich zu merken.
- Class col::NanoTimer
-
- Class Request
- Member col::Request::process (bool show_hulls, AlgoE algo, Matrix *colmatrix, std::vector< ColObj > *colobjs, std::vector< Callback * > cycle_callbacks, bool useHulls, Grid *grid)
- Some types not yet implementated.
- process()const machen, wenn OSG erlaubt
show_hulls
anders (z.B. als define) implementieren
- Class col::Topology
- Mehr Iterierungsfunktionen.
- Member col::Topology::createRelations (void)
- Calc sizes of vectors first, so that we can do a resize() for each vector before filling it, in order to reduce memory fragmentation.
- Class VisDebug
- All the functions from Y/visdebug.c
- File ColIntersect.cpp
- Return intersection point.
IntersectPolygons: additional parameter for poly2's normal if available.
- Make comments consistent.
- Check comments.
- Member col::intersectCoplanarEdges (const Pnt3f &v0V, const Pnt3f &v1V, const Pnt3f &u0V, const Pnt3f &u1V, unsigned int x, unsigned int y)
- Optimierung: Faktorisieren, um erste zwei Berechungen nicht mehrfach mit gleichen Parametern durchzufuehren!!!
- Member col::intersectEdgePolygon (const Pnt3f &v1, const Pnt3f &v2, const Pnt3f *poly, unsigned int plSize, const Vec3f &normalV, unsigned int x, unsigned int y)
- Schleife ueber intersectCoplanarEdges kann optimiert werden!
- Member col::intersectPolygons (const Pnt3f *poly1, int plSize1, const Pnt3f *poly2, int plSize2, const unsigned int *index1, const unsigned int *index2, const osg::Matrix *cxform)
- Da ein Viereck planar ist, braucht man eigentlich die Unterscheidung zwischen Quadrangle und Quadstrip doch nicht machen, oder?
- File Collision.cpp
- Neg. callbacks implementieren.
- osg::Log benutzen statt stderr? (ist nicht thread-safe..)
- If there is something in the Requests queue, do a sync, before processing the queue.
- Instanzvariablen tatsaechlich (gemaess Guidelines) mit _ benennen.
- Threadfaehigkeit neu eingebaut, ausgiebig test (tobias)
- Member col::PolyIntersectT (Data *data)
- Als Funktor machen!
- File ColObj.cpp
- Flags m_stationary and m_flexible (siehe ctor) auswerten.
- Die Instanzvariable m_name im ColObj zu String machen.
- Internetadresse in Kommentaren anpassen
- Member col::pseudo_random (void)
-
- Member col::axisToMat (const Vec3f &a, float d)
- d = -d; kann man wahrscheinlich wieder rauswerfen, wenn man unten die Transposition auch entfernt.
- Member col::sortVerticesCounterClockwise (const vector< Pnt3f > &vertex, const Vec3f &normal, TopoFace &face)
- Use "Lamda Library" (Boost).
- Member col::geomFromPoints (const Pnt3f vertex[], unsigned int nvertices, unsigned int face[], const unsigned int face_nv[], unsigned int nfaces, int gl_type, bool skip_redundant, const Vec3f normals[])
- immer noch wird die Variable NumOri gebraucht..
- Member col::sleep (unsigned int microseconds)
- Funktion suchen, die Mikrosekunden kann.
- Member col::lockToProcessor (unsigned int processor)
- Implement for Windows.
- Member col::isectEdgePolygon (const Pnt3f &v1, const Pnt3f &v2, const Pnt3f *poly, unsigned int plSize, const Vec3f &normalV, unsigned int x, unsigned int y, bool *isect, bool *oneside)
- Schleife ueber intersectCoplanarEdges koennte optimiert werden.
- Member col::pointInPolygon (const Pnt3f &pt, const Pnt3f *poly, unsigned int plSize, unsigned int x, unsigned int y)
- Fuer Dreiecke und Vierecke optimieren!
Generated on Tue Oct 16 18:12:40 2007 for CollDet by
1.5.2