|
@@ -364,19 +364,19 @@ igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
const Eigen::MatrixBase<DerivedV> & V,
|
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
const RowVectorDIMS & p,
|
|
|
- Scalar max_sqr_d,
|
|
|
- Scalar min_sqr_d,
|
|
|
+ Scalar low_sqr_d,
|
|
|
+ Scalar up_sqr_d,
|
|
|
int & i,
|
|
|
Eigen::PlainObjectBase<RowVectorDIMS> & c) const
|
|
|
{
|
|
|
- assert(max_sqr_d <= min_sqr_d);
|
|
|
using namespace Eigen;
|
|
|
using namespace std;
|
|
|
- if(max_sqr_d > min_sqr_d)
|
|
|
+ //assert(low_sqr_d <= up_sqr_d);
|
|
|
+ if(low_sqr_d > up_sqr_d)
|
|
|
{
|
|
|
- return max_sqr_d;
|
|
|
+ return low_sqr_d;
|
|
|
}
|
|
|
- Scalar sqr_d = min_sqr_d;
|
|
|
+ Scalar sqr_d = up_sqr_d;
|
|
|
//assert(DIM == 3 && "Code has only been tested for DIM == 3");
|
|
|
assert((Ele.cols() == 3 || Ele.cols() == 2 || Ele.cols() == 1)
|
|
|
&& "Code has only been tested for simplex sizes 3,2,1");
|
|
@@ -384,7 +384,7 @@ igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
assert(m_primitive==-1 || (m_left == NULL && m_right == NULL));
|
|
|
if(is_leaf())
|
|
|
{
|
|
|
- leaf_squared_distance(V,Ele,p,max_sqr_d,sqr_d,i,c);
|
|
|
+ leaf_squared_distance(V,Ele,p,low_sqr_d,sqr_d,i,c);
|
|
|
}else
|
|
|
{
|
|
|
bool looked_left = false;
|
|
@@ -394,7 +394,7 @@ igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
int i_left;
|
|
|
RowVectorDIMS c_left = c;
|
|
|
Scalar sqr_d_left =
|
|
|
- m_left->squared_distance(V,Ele,p,max_sqr_d,sqr_d,i_left,c_left);
|
|
|
+ m_left->squared_distance(V,Ele,p,low_sqr_d,sqr_d,i_left,c_left);
|
|
|
this->set_min(p,sqr_d_left,i_left,c_left,sqr_d,i,c);
|
|
|
looked_left = true;
|
|
|
};
|
|
@@ -403,7 +403,7 @@ igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
int i_right;
|
|
|
Eigen::PlainObjectBase<RowVectorDIMS> c_right = c;
|
|
|
Scalar sqr_d_right =
|
|
|
- m_right->squared_distance(V,Ele,p,max_sqr_d,sqr_d,i_right,c_right);
|
|
|
+ m_right->squared_distance(V,Ele,p,low_sqr_d,sqr_d,i_right,c_right);
|
|
|
this->set_min(p,sqr_d_right,i_right,c_right,sqr_d,i,c);
|
|
|
looked_right = true;
|
|
|
};
|
|
@@ -418,27 +418,27 @@ igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
look_right();
|
|
|
}
|
|
|
// if haven't looked left and could be less than current min, then look
|
|
|
- Scalar left_min_sqr_d =
|
|
|
+ Scalar left_up_sqr_d =
|
|
|
m_left->m_box.squaredExteriorDistance(p.transpose());
|
|
|
- Scalar right_min_sqr_d =
|
|
|
+ Scalar right_up_sqr_d =
|
|
|
m_right->m_box.squaredExteriorDistance(p.transpose());
|
|
|
- if(left_min_sqr_d < right_min_sqr_d)
|
|
|
+ if(left_up_sqr_d < right_up_sqr_d)
|
|
|
{
|
|
|
- if(!looked_left && left_min_sqr_d<sqr_d)
|
|
|
+ if(!looked_left && left_up_sqr_d<sqr_d)
|
|
|
{
|
|
|
look_left();
|
|
|
}
|
|
|
- if( !looked_right && right_min_sqr_d<sqr_d)
|
|
|
+ if( !looked_right && right_up_sqr_d<sqr_d)
|
|
|
{
|
|
|
look_right();
|
|
|
}
|
|
|
}else
|
|
|
{
|
|
|
- if( !looked_right && right_min_sqr_d<sqr_d)
|
|
|
+ if( !looked_right && right_up_sqr_d<sqr_d)
|
|
|
{
|
|
|
look_right();
|
|
|
}
|
|
|
- if(!looked_left && left_min_sqr_d<sqr_d)
|
|
|
+ if(!looked_left && left_up_sqr_d<sqr_d)
|
|
|
{
|
|
|
look_left();
|
|
|
}
|
|
@@ -454,11 +454,11 @@ igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
const Eigen::MatrixBase<DerivedV> & V,
|
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
const RowVectorDIMS & p,
|
|
|
- Scalar min_sqr_d,
|
|
|
+ Scalar up_sqr_d,
|
|
|
int & i,
|
|
|
Eigen::PlainObjectBase<RowVectorDIMS> & c) const
|
|
|
{
|
|
|
- return squared_distance(V,Ele,p,0.0,min_sqr_d,i,c);
|
|
|
+ return squared_distance(V,Ele,p,0.0,up_sqr_d,i,c);
|
|
|
}
|
|
|
|
|
|
template <typename DerivedV, int DIM>
|
|
@@ -522,9 +522,9 @@ IGL_INLINE void igl::AABB<DerivedV,DIM>::squared_distance(
|
|
|
|
|
|
// This holds a conservative estimate of max(sqr_D) where sqr_D is the
|
|
|
// current best minimum squared distance for all points in this subtree
|
|
|
- double min_sqr_d = std::numeric_limits<double>::infinity();
|
|
|
+ double up_sqr_d = std::numeric_limits<double>::infinity();
|
|
|
squared_distance_helper(
|
|
|
- V,Ele,&other,other_V,other_Ele,0,min_sqr_d,sqrD,I,C);
|
|
|
+ V,Ele,&other,other_V,other_Ele,0,up_sqr_d,sqrD,I,C);
|
|
|
}
|
|
|
|
|
|
template <typename DerivedV, int DIM>
|
|
@@ -542,7 +542,7 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
const AABB<Derivedother_V,DIM> * other,
|
|
|
const Eigen::MatrixBase<Derivedother_V> & other_V,
|
|
|
const Eigen::MatrixBase<Derivedother_Ele> & other_Ele,
|
|
|
- const Scalar /*min_sqr_d*/,
|
|
|
+ const Scalar /*up_sqr_d*/,
|
|
|
Eigen::PlainObjectBase<DerivedsqrD> & sqrD,
|
|
|
Eigen::PlainObjectBase<DerivedI> & I,
|
|
|
Eigen::PlainObjectBase<DerivedC> & C) const
|
|
@@ -566,7 +566,7 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
I( other->m_primitive) = i;
|
|
|
C.row(other->m_primitive) = c;
|
|
|
//cout<<"leaf: "<<sqr_d<<endl;
|
|
|
- //other->m_max_sqr_d = sqr_d;
|
|
|
+ //other->m_low_sqr_d = sqr_d;
|
|
|
return sqr_d;
|
|
|
}
|
|
|
|
|
@@ -580,7 +580,7 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
sqrD( other->m_primitive) = sqr_d;
|
|
|
I( other->m_primitive) = i;
|
|
|
C.row(other->m_primitive) = c;
|
|
|
- //other->m_max_sqr_d = sqr_d;
|
|
|
+ //other->m_low_sqr_d = sqr_d;
|
|
|
return sqr_d;
|
|
|
}
|
|
|
|
|
@@ -595,7 +595,7 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
|
|
|
if(this->is_leaf())
|
|
|
{
|
|
|
- //if(min_squared_distance(this,other) < other->m_max_sqr_d)
|
|
|
+ //if(min_squared_distance(this,other) < other->m_low_sqr_d)
|
|
|
if(true)
|
|
|
{
|
|
|
this->squared_distance_helper(
|
|
@@ -607,12 +607,12 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
// This is never reached...
|
|
|
}
|
|
|
//// we know other is not a leaf
|
|
|
- //other->m_max_sqr_d = std::max(other->m_left->m_max_sqr_d,other->m_right->m_max_sqr_d);
|
|
|
+ //other->m_low_sqr_d = std::max(other->m_left->m_low_sqr_d,other->m_right->m_low_sqr_d);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
// FORCE DOWN TO OTHER LEAF EVAL
|
|
|
- //if(min_squared_distance(this,other) < other->m_max_sqr_d)
|
|
|
+ //if(min_squared_distance(this,other) < other->m_low_sqr_d)
|
|
|
if(true)
|
|
|
{
|
|
|
if(true)
|
|
@@ -633,7 +633,7 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
// this is never reached ... :-(
|
|
|
}
|
|
|
//// we know other is not a leaf
|
|
|
- //other->m_max_sqr_d = std::max(other->m_left->m_max_sqr_d,other->m_right->m_max_sqr_d);
|
|
|
+ //other->m_low_sqr_d = std::max(other->m_left->m_low_sqr_d,other->m_right->m_low_sqr_d);
|
|
|
|
|
|
return 0;
|
|
|
#if 0 // False
|
|
@@ -687,74 +687,74 @@ IGL_INLINE typename igl::AABB<DerivedV,DIM>::Scalar
|
|
|
|
|
|
//const std::function<Scalar(
|
|
|
// const AABB<Derivedother_V,DIM> * other)
|
|
|
- // > max_sqr_d = [&sqrD,&max_sqr_d](const AABB<Derivedother_V,DIM> * other)->Scalar
|
|
|
+ // > low_sqr_d = [&sqrD,&low_sqr_d](const AABB<Derivedother_V,DIM> * other)->Scalar
|
|
|
// {
|
|
|
// if(other->is_leaf())
|
|
|
// {
|
|
|
// return sqrD(other->m_primitive);
|
|
|
// }else
|
|
|
// {
|
|
|
- // return std::max(max_sqr_d(other->m_left),max_sqr_d(other->m_right));
|
|
|
+ // return std::max(low_sqr_d(other->m_left),low_sqr_d(other->m_right));
|
|
|
// }
|
|
|
// };
|
|
|
|
|
|
//// Potentially recurse on all pairs, if minimum distance is less than running
|
|
|
//// bound
|
|
|
- //Eigen::Matrix<Scalar,Eigen::Dynamic,1> other_max_sqr_d =
|
|
|
- // Eigen::Matrix<Scalar,Eigen::Dynamic,1>::Constant(other_list.size(),1,min_sqr_d);
|
|
|
+ //Eigen::Matrix<Scalar,Eigen::Dynamic,1> other_low_sqr_d =
|
|
|
+ // Eigen::Matrix<Scalar,Eigen::Dynamic,1>::Constant(other_list.size(),1,up_sqr_d);
|
|
|
for(size_t child = 0;child<other_list.size();child++)
|
|
|
{
|
|
|
auto other_tree = other_list[child];
|
|
|
|
|
|
- Eigen::Matrix<Scalar,Eigen::Dynamic,1> this_max_sqr_d(this_list.size(),1);
|
|
|
+ Eigen::Matrix<Scalar,Eigen::Dynamic,1> this_low_sqr_d(this_list.size(),1);
|
|
|
for(size_t t = 0;t<this_list.size();t++)
|
|
|
{
|
|
|
const auto this_tree = this_list[t];
|
|
|
- this_max_sqr_d(t) = max_squared_distance(this_tree,other_tree);
|
|
|
+ this_low_sqr_d(t) = max_squared_distance(this_tree,other_tree);
|
|
|
}
|
|
|
if(this_list.size() ==2 &&
|
|
|
- ( this_max_sqr_d(0) > this_max_sqr_d(1))
|
|
|
+ ( this_low_sqr_d(0) > this_low_sqr_d(1))
|
|
|
)
|
|
|
{
|
|
|
std::swap(this_list[0],this_list[1]);
|
|
|
- //std::swap(this_max_sqr_d(0),this_max_sqr_d(1));
|
|
|
+ //std::swap(this_low_sqr_d(0),this_low_sqr_d(1));
|
|
|
}
|
|
|
- const Scalar sqr_d = this_max_sqr_d.minCoeff();
|
|
|
+ const Scalar sqr_d = this_low_sqr_d.minCoeff();
|
|
|
|
|
|
|
|
|
for(size_t t = 0;t<this_list.size();t++)
|
|
|
{
|
|
|
const auto this_tree = this_list[t];
|
|
|
|
|
|
- //const auto mm = max_sqr_d(other_tree);
|
|
|
- //const Scalar mc = other_max_sqr_d(child);
|
|
|
+ //const auto mm = low_sqr_d(other_tree);
|
|
|
+ //const Scalar mc = other_low_sqr_d(child);
|
|
|
//assert(mc == mm);
|
|
|
// Only look left/right in this_list if can possible decrease somebody's
|
|
|
// distance in this_tree.
|
|
|
const Scalar min_this_other = min_squared_distance(this_tree,other_tree);
|
|
|
if(
|
|
|
min_this_other < sqr_d &&
|
|
|
- min_this_other < other_tree->m_max_sqr_d)
|
|
|
+ min_this_other < other_tree->m_low_sqr_d)
|
|
|
{
|
|
|
- //cout<<"before: "<<other_max_sqr_d(child)<<endl;
|
|
|
- //other_max_sqr_d(child) = std::min(
|
|
|
- // other_max_sqr_d(child),
|
|
|
+ //cout<<"before: "<<other_low_sqr_d(child)<<endl;
|
|
|
+ //other_low_sqr_d(child) = std::min(
|
|
|
+ // other_low_sqr_d(child),
|
|
|
// this_tree->squared_distance_helper(
|
|
|
- // V,Ele,other_tree,other_V,other_Ele,other_max_sqr_d(child),sqrD,I,C));
|
|
|
- //cout<<"after: "<<other_max_sqr_d(child)<<endl;
|
|
|
+ // V,Ele,other_tree,other_V,other_Ele,other_low_sqr_d(child),sqrD,I,C));
|
|
|
+ //cout<<"after: "<<other_low_sqr_d(child)<<endl;
|
|
|
this_tree->squared_distance_helper(
|
|
|
V,Ele,other_tree,other_V,other_Ele,0,sqrD,I,C);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- //const Scalar ret = other_max_sqr_d.maxCoeff();
|
|
|
- //const auto mm = max_sqr_d(other);
|
|
|
+ //const Scalar ret = other_low_sqr_d.maxCoeff();
|
|
|
+ //const auto mm = low_sqr_d(other);
|
|
|
//assert(mm == ret);
|
|
|
//cout<<"non-leaf: "<<ret<<endl;
|
|
|
//return ret;
|
|
|
if(!other->is_leaf())
|
|
|
{
|
|
|
- other->m_max_sqr_d = std::max(other->m_left->m_max_sqr_d,other->m_right->m_max_sqr_d);
|
|
|
+ other->m_low_sqr_d = std::max(other->m_left->m_low_sqr_d,other->m_right->m_low_sqr_d);
|
|
|
}
|
|
|
return 0;
|
|
|
#endif
|
|
@@ -766,16 +766,16 @@ IGL_INLINE void igl::AABB<DerivedV,DIM>::leaf_squared_distance(
|
|
|
const Eigen::MatrixBase<DerivedV> & V,
|
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
const RowVectorDIMS & p,
|
|
|
- const Scalar max_sqr_d,
|
|
|
+ const Scalar low_sqr_d,
|
|
|
Scalar & sqr_d,
|
|
|
int & i,
|
|
|
Eigen::PlainObjectBase<RowVectorDIMS> & c) const
|
|
|
{
|
|
|
using namespace Eigen;
|
|
|
using namespace std;
|
|
|
- if(max_sqr_d > sqr_d)
|
|
|
+ if(low_sqr_d > sqr_d)
|
|
|
{
|
|
|
- sqr_d = max_sqr_d;
|
|
|
+ sqr_d = low_sqr_d;
|
|
|
return;
|
|
|
}
|
|
|
RowVectorDIMS c_candidate;
|
|
@@ -1008,38 +1008,26 @@ igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
// namespace block instead. https://stackoverflow.com/a/25594681/148668
|
|
|
namespace igl
|
|
|
{
|
|
|
- template<>
|
|
|
- template<>
|
|
|
- IGL_INLINE float AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 2>::squared_distance(
|
|
|
- Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&,
|
|
|
- Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&,
|
|
|
- Eigen::Matrix<float, 1, 2, 1, 1, 2> const&,
|
|
|
- int&,
|
|
|
- Eigen::PlainObjectBase<Eigen::Matrix<float, 1, 2, 1, 1, 2> >&) const
|
|
|
- { assert(false);return -1;};
|
|
|
- template <>
|
|
|
- template <>
|
|
|
- IGL_INLINE float igl::AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 2>::squared_distance(
|
|
|
- Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&,
|
|
|
- Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&,
|
|
|
- Eigen::Matrix<float, 1, 2, 1, 1, 2> const&,
|
|
|
- float,
|
|
|
- float,
|
|
|
- int&,
|
|
|
- Eigen::PlainObjectBase<Eigen::Matrix<float, 1, 2, 1, 1, 2> >&) const
|
|
|
- { assert(false);return -1;};
|
|
|
- template <>
|
|
|
- template <>
|
|
|
- IGL_INLINE void igl::AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 2>::init
|
|
|
- (Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&,
|
|
|
- Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&)
|
|
|
- { assert(false);};
|
|
|
+ template<> template<> IGL_INLINE float AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 2>::squared_distance( Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&, Eigen::Matrix<float, 1, 2, 1, 1, 2> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<float, 1, 2, 1, 1, 2> >&) const { assert(false);return -1;};
|
|
|
+ template<> template<> IGL_INLINE float igl::AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 2>::squared_distance( Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&, Eigen::Matrix<float, 1, 2, 1, 1, 2> const&, float, float, int&, Eigen::PlainObjectBase<Eigen::Matrix<float, 1, 2, 1, 1, 2> >&) const { assert(false);return -1;};
|
|
|
+ template<> template<> IGL_INLINE void igl::AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 2>::init (Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&) { assert(false);};
|
|
|
+ template<> template<> IGL_INLINE double AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 2>::squared_distance( Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&, Eigen::Matrix<double, 1, 2, 1, 1, 2> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 2, 1, 1, 2> >&) const { assert(false);return -1;};
|
|
|
+ template<> template<> IGL_INLINE double igl::AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 2>::squared_distance( Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&, Eigen::Matrix<double, 1, 2, 1, 1, 2> const&, double, double, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 2, 1, 1, 2> >&) const { assert(false);return -1;};
|
|
|
+ template<> template<> IGL_INLINE void igl::AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 2>::init (Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&) { assert(false);};
|
|
|
+ template<> template<> IGL_INLINE void igl::AABB<Eigen::Matrix<float, -1, 3, 0, -1, 3>, 2>::init(Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 0, -1, 3> > const&) {assert(false);};
|
|
|
+ template<> template<> IGL_INLINE float igl::AABB<Eigen::Matrix<float, -1, 3, 0, -1, 3>, 2>::squared_distance(Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 0, -1, 3> > const&, Eigen::Matrix<float, 1, 2, 1, 1, 2> const&, float, float, int&, Eigen::PlainObjectBase<Eigen::Matrix<float, 1, 2, 1, 1, 2> >&) const { assert(false);return -1;};
|
|
|
}
|
|
|
|
|
|
|
|
|
#ifdef IGL_STATIC_LIBRARY
|
|
|
// Explicit template instantiation
|
|
|
// generated by autoexplicit.sh
|
|
|
+// generated by autoexplicit.sh
|
|
|
+template float igl::AABB<Eigen::Matrix<float, -1, 3, 0, -1, 3>, 3>::squared_distance<Eigen::Matrix<int, -1, 3, 0, -1, 3> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 0, -1, 3> > const&, Eigen::Matrix<float, 1, 3, 1, 1, 3> const&, float, float, int&, Eigen::PlainObjectBase<Eigen::Matrix<float, 1, 3, 1, 1, 3> >&) const;
|
|
|
+// generated by autoexplicit.sh
|
|
|
+// generated by autoexplicit.sh
|
|
|
+template void igl::AABB<Eigen::Matrix<float, -1, 3, 0, -1, 3>, 3>::init<Eigen::Matrix<int, -1, 3, 0, -1, 3> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 0, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 0, -1, 3> > const&);
|
|
|
+// generated by autoexplicit.sh
|
|
|
template void igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::serialize<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, int) const;
|
|
|
// generated by autoexplicit.sh
|
|
|
template std::vector<int, std::allocator<int> > igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::find<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, 1, -1, 1, 1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, 1, -1, 1, 1, -1> > const&, bool) const;
|