Skip to content

File point_edge.h

File List > distance > point_edge.h

Go to the documentation of this file

#pragma once
#include <muda/muda_def.h>
#include <muda/ext/eigen/eigen_core_cxx20.h>

namespace muda::distance
{
template <class T, int dim>
MUDA_GENERIC void point_edge_distance(const Eigen::Vector<T, dim>& p,
                                      const Eigen::Vector<T, dim>& e0,
                                      const Eigen::Vector<T, dim>& e1,
                                      T&                           dist2);

template <class T, int dim>
MUDA_GENERIC void point_edge_distance_gradient(const Eigen::Vector<T, dim>& p,
                                               const Eigen::Vector<T, dim>& e0,
                                               const Eigen::Vector<T, dim>& e1,
                                               Eigen::Vector<T, dim * 3>& grad);

template <class T, int dim>
MUDA_GENERIC void point_edge_distance_hessian(const Eigen::Vector<T, dim>& p,
                                              const Eigen::Vector<T, dim>& e0,
                                              const Eigen::Vector<T, dim>& e1,
                                              Eigen::Matrix<T, dim * 3, dim * 3>& Hessian);

}  // namespace muda::distance

#include "details/point_edge.inl"