RSMesh 1.0.0
一个曲面重构的系统,输入为点云,输出为obj,stl等主流格式的网格文件,使用的方法为径向基函数插值,采取了并行优化、Intel-MKL等优化措施,支持百万级别的点云
载入中...
搜索中...
未找到
fine_grid.h
1//
2// Created by RainSure on 2024/2/18.
3//
4
5#ifndef RSMESH_FINE_GRID_H
6#define RSMESH_FINE_GRID_H
7
8#include "Eigen/Cholesky"
9#include "Eigen/Core"
10#include "model.h"
11#include "geometry/point3d.h"
12#include "domain.h"
13#include <vector>
14
15namespace rsmesh::preconditioner {
16 class fine_grid {
17 public:
19
20 void clear();
21
22 void setup(const geometry::points3d& points_full, const Eigen::MatrixXd& lagrange_pt_full);
23
24 void setup(const geometry::points3d& points_full, const geometry::points3d& grad_points_full,
25 const Eigen::MatrixXd& lagrange_pt_full);
26
27 void set_solution_to(valuesd& weights_full) const;
28
29 void solve(const valuesd& values_full);
30
31 private:
32 const model& model_;
33 const std::vector<index_t> point_idcs_;
34 const std::vector<index_t> grad_point_idcs_;
35 const std::vector<bool> inner_point_;
36 const std::vector<bool> inner_grad_point_;
37
38 const index_t dim_;
39 const index_t l_;
40 const index_t mu_;
41 const index_t sigma_;
42 const index_t m_;
43 index_t mu_full_;
44 index_t sigma_full_;
45
46 // Matrix -E.
47 Eigen::MatrixXd me_;
48
49 // Cholesky decomposition of matrix Q^T A Q.
50 Eigen::LDLT<Eigen::MatrixXd> ldlt_of_qtaq_;
51
52 // Current solution.
53 valuesd lambda_;
54 };
55} // namespace rsmesh::preconditioner
56
57
58#endif //RSMESH_FINE_GRID_H
描述了一个插值模型
Definition model.h:21
vectors3d points3d
3维点的集合
Definition point3d.h:48
该命名空间下主要定义了关于krylov子空间方法的预处理相关的类和函数