MUDA
Loading...
Searching...
No Matches
edge_edge_mollified.h
1#pragma once
2#include <muda/muda_def.h>
3#include <muda/ext/eigen/eigen_core_cxx20.h>
4
5namespace muda::distance
6{
7template <class T>
8MUDA_GENERIC void edge_edge_cross_norm2(const Eigen::Vector<T, 3>& ea0,
9 const Eigen::Vector<T, 3>& ea1,
10 const Eigen::Vector<T, 3>& eb0,
11 const Eigen::Vector<T, 3>& eb1,
12 T& result);
13
14template <class T>
15MUDA_GENERIC void edge_edge_cross_norm2_gradient(const Eigen::Vector<T, 3>& ea0,
16 const Eigen::Vector<T, 3>& ea1,
17 const Eigen::Vector<T, 3>& eb0,
18 const Eigen::Vector<T, 3>& eb1,
19 Eigen::Vector<T, 12>& grad);
20
21template <class T>
22MUDA_GENERIC void edge_edge_cross_norm2_hessian(const Eigen::Vector<T, 3>& ea0,
23 const Eigen::Vector<T, 3>& ea1,
24 const Eigen::Vector<T, 3>& eb0,
25 const Eigen::Vector<T, 3>& eb1,
26 Eigen::Matrix<T, 12, 12>& Hessian);
27
28template <class T>
29MUDA_GENERIC void edge_edge_mollifier(const Eigen::Vector<T, 3>& ea0,
30 const Eigen::Vector<T, 3>& ea1,
31 const Eigen::Vector<T, 3>& eb0,
32 const Eigen::Vector<T, 3>& eb1,
33 T eps_x,
34 T& e);
35
36template <class T>
37MUDA_GENERIC void edge_edge_mollifier_gradient(const Eigen::Vector<T, 3>& ea0,
38 const Eigen::Vector<T, 3>& ea1,
39 const Eigen::Vector<T, 3>& eb0,
40 const Eigen::Vector<T, 3>& eb1,
41 T eps_x,
42 Eigen::Vector<T, 12>& g);
43
44template <class T>
45MUDA_GENERIC void edge_edge_mollifier_hessian(const Eigen::Vector<T, 3>& ea0,
46 const Eigen::Vector<T, 3>& ea1,
47 const Eigen::Vector<T, 3>& eb0,
48 const Eigen::Vector<T, 3>& eb1,
49 T eps_x,
50 Eigen::Matrix<T, 12, 12>& H);
51
52template <class T>
53MUDA_GENERIC void edge_edge_mollifier_threshold(const Eigen::Vector<T, 3>& ea0_rest,
54 const Eigen::Vector<T, 3>& ea1_rest,
55 const Eigen::Vector<T, 3>& eb0_rest,
56 const Eigen::Vector<T, 3>& eb1_rest,
57 T& eps_x);
58} // namespace muda::distance
59
60#include "details/edge_edge_mollified.inl"