Browse Source

简单的运行测试

master
Dtouch 3 years ago
parent
commit
d071b6a0f6
  1. 15
      include/loop_detector.h
  2. 25
      main.cpp
  3. 3
      src/loop_detector.cpp

15
include/loop_detector.h

@ -24,6 +24,14 @@ public:
vector<vector<glm::vec3>> f_tangent_u;
vector<vector<glm::vec3>> f_tangent_v;
// 有向距离计算结果。有向距离通过采样的方式计算,其结果与s曲面sub patch中的采样网格规模相同,即与s_evaluation大小一致
// vector<vector<glm::vec3>> distance;
// 确定有向距离后,对应的f曲面上的最短距离点的位置
vector<vector<pair<int, int>>> selectedPointsIdx;
// vector fields, 即有向距离关于u、v的导数
vector<vector<glm::vec2>> vectorFields;
vector<vector<int>> rotationNumbers;
// int subPatchEdgeSampleCnt; // 在一个sub patch的采样网格中,边上的采样点个数
// void init(tinynurbs::RationalSurface<float> _s, tinynurbs::RationalSurface<float> _f, int _maxSplitLayer);
vector<pair<int, int>> detect(pair<int, int> _s_subPatchIdxRange_u, pair<int, int> _s_subPatchIdxRange_v,
@ -44,13 +52,6 @@ private:
// 整个曲面一条边上的采样点个数
int edgeSampleCnt;
// 有向距离计算结果。有向距离通过采样的方式计算,其结果与s曲面sub patch中的采样网格规模相同,即与s_evaluation大小一致
// vector<vector<glm::vec3>> distance;
// 确定有向距离后,对应的f曲面上的最短距离点的位置
vector<vector<pair<int, int>>> selectedPointsIdx;
// vector fields, 即有向距离关于u、v的导数
vector<vector<glm::vec2>> vectorFields;
void initEvaluation();
void initOrientedDistance();

25
main.cpp

@ -54,24 +54,13 @@ int main() {
// 这里范围真包含于[0, 31]
loopDetector.detect({3, 11}, {4, 11}, {2, 7}, {6, 15});
glm::vec3 a(2, 3, 4);
glm::vec3 b(3, 7, 1);
auto nab = glm::normalize(a - b);
auto res = nab * (a - b);
auto ab = a * b;
cout << res.x << ", " << res.y << ", " << res.z << endl;
cout << nab.x << ", " << nab.y << ", " << nab.z << endl;
cout << ab.x << ", " << ab.y << ", " << ab.z << endl;
std::cout << "Hello, World!" << std::endl;
auto m = glm::mat2x2(1, 2, 3, 4);
cout << m[0][0] << " " << m[0][1] << endl;
auto dotRes = glm::dot(a, b);
cout << dotRes << endl;
// 结果
for (const auto& line: loopDetector.rotationNumbers) {
for (const auto& el: line) {
cout << el << " ";
}
cout << endl;
}
cout<<isnan(glm::normalize(glm::vec3(0, 0, 0)).x)<<endl;
cout<<isnan(1.)<<endl;
// auto m1 = glm::mat2(1., 2.);
cout<<round(3.7)<<" "<<round(3.5657567658)<<" "<<round(3.2)<<" "<<round(3.0)<<endl;
return 0;
}

3
src/loop_detector.cpp

@ -150,6 +150,9 @@ void LoopDetector::getRotationNumber() {
rotationNumber = 2 * atan(double (v11.x/v11.y)) - 2 * atan(double(v00.x/v00.y));
rotationNumber /= (2 * PI);
rotationNumbers[i][j] = int(round(rotationNumber));
printf("rotationNumber: %lf\n", rotationNumber);
}
}

Loading…
Cancel
Save