Skip to content

Commit

Permalink
draft: linear interp in time
Browse files Browse the repository at this point in the history
  • Loading branch information
yoyolicoris committed Apr 29, 2023
1 parent d692b60 commit bc2655c
Show file tree
Hide file tree
Showing 5 changed files with 259 additions and 224 deletions.
4 changes: 3 additions & 1 deletion .gitignore
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
*.sofa
*.wav
*.zip
KU100_NF100/
build/
build/
.vscode/
38 changes: 18 additions & 20 deletions KDTree.cpp
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ KDNodePtr KDTree::nearest_( //
const point_t &pt, //
const size_t &level, //
const KDNodePtr &best, //
const float &best_dist //
const float &best_dist //
)
{
float d, dx, dx2;
Expand Down Expand Up @@ -284,7 +284,7 @@ pointIndex KDTree::nearest_pointIndex(const point_t &pt)
pointIndexArr KDTree::neighborhood_( //
const KDNodePtr &branch, //
const point_t &pt, //
const float &rad, //
const float &rad, //
const size_t &level //
)
{
Expand Down Expand Up @@ -372,16 +372,12 @@ indexArr KDTree::neighborhood_indices( //
return nbhi;
}




void KDTree::knn_( //
void KDTree::knn_( //
const KDNodePtr &branch, //
const point_t &pt, //
const size_t &level, //
const size_t &k,
std::deque<std::pair<size_t, float>> &result
)
std::deque<std::pair<size_t, float>> &result)
{
float d, dx, dx2;

Expand All @@ -396,19 +392,22 @@ void KDTree::knn_( //
d = dist2(branch_pt, pt);
dx = branch_pt.at(level) - pt.at(level);
dx2 = dx * dx;

if (result.empty() || d <= result.front().second)
result.push_front(std::pair<size_t, float>(size_t(*branch), d));
else if (d < result.back().second){
for(auto pos = result.begin(); pos != result.end(); pos++){
if(d <= pos->second){
result.insert(pos, std::pair<size_t, float>(size_t(*branch), d));
break;
}
}
}
else if (d < result.back().second)
{
for (auto pos = result.begin(); pos != result.end(); pos++)
{
if (d <= pos->second)
{
result.insert(pos, std::pair<size_t, float>(size_t(*branch), d));
break;
}
}
}
if (result.size() > k)
result.resize(k);
result.resize(k);

size_t next_lv = (level + 1) % dim;
KDNodePtr section;
Expand All @@ -432,12 +431,11 @@ void KDTree::knn_( //
// only check the other branch if it makes sense to do so
if (dx2 >= result.back().second)
{
return;
return;
}
knn_(other, pt, next_lv, k, result);
};


indexArr KDTree::knn(const point_t &pt, const int k)
{
size_t level = 0;
Expand Down
13 changes: 6 additions & 7 deletions KDTree.h
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class KDTree
const point_t &pt, //
const size_t &level, //
const KDNodePtr &best, //
const float &best_dist //
const float &best_dist //
);

// default caller
Expand All @@ -115,17 +115,16 @@ class KDTree
pointIndexArr neighborhood_( //
const KDNodePtr &branch, //
const point_t &pt, //
const float &rad, //
const float &rad, //
const size_t &level //
);
void knn_( //

void knn_( //
const KDNodePtr &branch, //
const point_t &pt, //
const size_t &level, //
const size_t &k,
std::deque<std::pair<size_t, float>> &result
);
std::deque<std::pair<size_t, float>> &result);

public:
pointIndexArr neighborhood( //
Expand All @@ -139,6 +138,6 @@ class KDTree
indexArr neighborhood_indices( //
const point_t &pt, //
const float &rad);

indexArr knn(const point_t &pt, const int k);
};
Loading

0 comments on commit bc2655c

Please sign in to comment.