ttk - source code 2

    xiaoxiao2022-06-19  187

    1.类Arc, 包含了两个节点的信息,存储了他们的ID

    lass Arc : virtual public Debug {      int                         downNodeId_, upNodeId_; };

    //

    2. SuperArc, 存储了节点列表,重心列表和sample列表

     

             bool pruned_;

             std::vector<int> regularNodeList_;                                 // 一维数组

             std::vector<std::vector<double> > barycenterList_;       // 点数组 ,实际是 double[3] 的数组

             std::vector<std::vector<int> > sampleList_;                   // 

    //

    3.类Node,存储了上升,下降arc, Superarc列表

    class Node : virtual public Debug

    {      ....................

      int vertexId_;

            bool pruned_;

            double layoutX_, layoutY_;

            std::vector<int> downArcList_, upArcList_;                                  //上arc, 下arc列表,存储的是ID

            std::vector<int> downSuperArcList_, upSuperArcList_;               // 上superArc, 下superArc列表,同样存储的是ID

    }

    //

    4.  class ContourTreeSimplificationMetric : virtual public Debug    {

             virtual double computeSuperArcMetric(const int &downVertexId, const int &upVertexId,                                           const std::vector<int> &interiorNodeIds) = 0;

           protected:            SubLevelSetTree             *tree_;    };

     5. class PersistenceMetric: public ContourTreeSimplificationMetric    {

          public:           double computeSuperArcMetric(const int &downVertexId, const int &upVertexId,                        const std::vector<int> &interiorNodeIds);    };

    ///

    6.class SubLevelSetTree 

         int                         vertexNumber_;                                                   //  点数      bool                        maintainRegularVertices_;      double                      minScalar_, maxScalar_;                                // 最大,最小值  (本子树)      const std::vector<real>          *vertexScalars_;                                // 节点标量值数据      std::vector<int>                 *vertexSoSoffsets_;                               // ????      Triangulation               *triangulation_;                                             //三角面片       std::vector<int>                 *minimumList_, *maximumList_;            //极大值 和 极小值 序列      std::vector<Node>                nodeList_, originalNodeList_;             // 节点 和 起始节点列表           std::vector<Arc>                 arcList_;                                                 // arc表        std::vector<SuperArc>            superArcList_, originalSuperArcList_;  //超级arc表      std::vector<int>                 vertex2node_,                                              // vertex和node关系?,vertex->超级arc, 超级arc结点        vertex2superArc_,vertex2superArcNode_;      std::vector<std::vector<double> >     *vertexPositions_;                       //节点坐标       bool isSkeletonComputed_;

    //

    7. class ContourTree : public SubLevelSetTree{

      成员:

               SubLevelSetTree mergeTree_, splitTree_;

     方法:

         int getPersistencePairs(std::vector<std::pair<std::pair<int,int>,double>>*  pairs,                  std::vector<std::pair<std::pair<int,int>,double>>* mergePairs=nullptr,                  std::vector<std::pair<std::pair<int,int>,double>>* splitPairs=nullptr) const;  //得到点对及其持续值

         int getPersistencePlot(std::vector<std::pair<double,int>> &plot,                 std::vector<std::pair<std::pair<int,int>,double>>* mergePairs=nullptr,                 std::vector<std::pair<std::pair<int,int>,double>>* splitPairs=nullptr,                 std::vector<std::pair<std::pair<int,int>,double>>* pairs=nullptr) const;      //得到不同类型pair的持续值

      int getPersistenceDiagram(std::vector<std::pair<double, double> > &diagram,                                   // 得到持续图                                              std::vector<std::pair<std::pair<int,int>,double>>*  mergePairs=nullptr,      //点对及持续值                                                                 std::vector<std::pair<std::pair<int,int>,double>>    splitPairs=nullptr,                                                std::vector<std::pair<std::pair<int,int>,double>>*  pairs=nullptr)

         int simplify(const double &simplificationThreshold, ContourTreeSimplificationMetric *metric=NULL);

        其余方法省略!!!

     


    最新回复(0)