|
@@ -1470,7 +1470,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
const RowVectorDIMS & origin,
|
|
const RowVectorDIMS & origin,
|
|
|
const RowVectorDIMS & dir,
|
|
const RowVectorDIMS & dir,
|
|
|
- std::vector<igl::Hit> & hits) const
|
|
|
|
|
|
|
+ std::vector<igl::Hit<typename DerivedV::Scalar>> & hits) const
|
|
|
{
|
|
{
|
|
|
RowVectorDIMS inv_dir = dir.cwiseInverse();
|
|
RowVectorDIMS inv_dir = dir.cwiseInverse();
|
|
|
RowVectorDIMS inv_dir_pad = inv_dir;
|
|
RowVectorDIMS inv_dir_pad = inv_dir;
|
|
@@ -1486,7 +1486,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
const RowVectorDIMS & origin,
|
|
const RowVectorDIMS & origin,
|
|
|
const RowVectorDIMS & dir,
|
|
const RowVectorDIMS & dir,
|
|
|
- igl::Hit & hit) const
|
|
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> & hit) const
|
|
|
{
|
|
{
|
|
|
#if false
|
|
#if false
|
|
|
// BFS
|
|
// BFS
|
|
@@ -1513,7 +1513,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
{
|
|
{
|
|
|
// Actually process elements
|
|
// Actually process elements
|
|
|
assert((Ele.size() == 0 || Ele.cols() == 3) && "Elements should be triangles");
|
|
assert((Ele.size() == 0 || Ele.cols() == 3) && "Elements should be triangles");
|
|
|
- igl::Hit leaf_hit;
|
|
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> leaf_hit;
|
|
|
if(
|
|
if(
|
|
|
ray_mesh_intersect(origin,dir,V,Ele.row(tree->m_primitive),leaf_hit)&&
|
|
ray_mesh_intersect(origin,dir,V,Ele.row(tree->m_primitive),leaf_hit)&&
|
|
|
leaf_hit.t < hit.t)
|
|
leaf_hit.t < hit.t)
|
|
@@ -1545,7 +1545,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
const RowVectorDIMS & origin,
|
|
const RowVectorDIMS & origin,
|
|
|
const RowVectorDIMS & dir,
|
|
const RowVectorDIMS & dir,
|
|
|
const Scalar _min_t,
|
|
const Scalar _min_t,
|
|
|
- igl::Hit & hit) const
|
|
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> & hit) const
|
|
|
{
|
|
{
|
|
|
RowVectorDIMS inv_dir = dir.cwiseInverse();
|
|
RowVectorDIMS inv_dir = dir.cwiseInverse();
|
|
|
RowVectorDIMS inv_dir_pad = inv_dir;
|
|
RowVectorDIMS inv_dir_pad = inv_dir;
|
|
@@ -1553,6 +1553,68 @@ igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
return intersect_ray_opt(V, Ele, origin, dir, inv_dir, inv_dir_pad, _min_t, hit);
|
|
return intersect_ray_opt(V, Ele, origin, dir, inv_dir, inv_dir_pad, _min_t, hit);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
|
|
+template <typename DerivedV, int DIM>
|
|
|
|
|
+template <
|
|
|
|
|
+ typename DerivedEle,
|
|
|
|
|
+ typename DerivedOrigin,
|
|
|
|
|
+ typename DerivedDir,
|
|
|
|
|
+ typename DerivedI,
|
|
|
|
|
+ typename DerivedT,
|
|
|
|
|
+ typename DerivedUV>
|
|
|
|
|
+IGL_INLINE void igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedV> & V,
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedOrigin> & origin,
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedDir> & dir,
|
|
|
|
|
+ const Scalar min_t,
|
|
|
|
|
+ Eigen::PlainObjectBase<DerivedI> & I,
|
|
|
|
|
+ Eigen::PlainObjectBase<DerivedT> & T,
|
|
|
|
|
+ Eigen::PlainObjectBase<DerivedUV> & UV)
|
|
|
|
|
+{
|
|
|
|
|
+ assert(origin.rows() == dir.rows());
|
|
|
|
|
+ I.setConstant(origin.rows(),1,-1);
|
|
|
|
|
+ T.setConstant(origin.rows(),1,std::numeric_limits<Scalar>::quiet_NaN());
|
|
|
|
|
+ UV.resize(origin.rows(),2);
|
|
|
|
|
+
|
|
|
|
|
+ igl::parallel_for(origin.rows(),[&](int i)
|
|
|
|
|
+ {
|
|
|
|
|
+ RowVectorDIMS origin_i = origin.row(i);
|
|
|
|
|
+ RowVectorDIMS dir_i = dir.row(i);
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> hit_i;
|
|
|
|
|
+ if(intersect_ray(V,Ele,origin_i,dir_i,min_t,hit_i))
|
|
|
|
|
+ {
|
|
|
|
|
+ I(i) = hit_i.id;
|
|
|
|
|
+ UV.row(i) << hit_i.u, hit_i.v;
|
|
|
|
|
+ T(i) = hit_i.t;
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ 10000);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+template <typename DerivedV, int DIM>
|
|
|
|
|
+template <
|
|
|
|
|
+ typename DerivedEle,
|
|
|
|
|
+ typename DerivedOrigin,
|
|
|
|
|
+ typename DerivedDir>
|
|
|
|
|
+IGL_INLINE void igl::AABB<DerivedV,DIM>::intersect_ray(
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedV> & V,
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedEle> & Ele,
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedOrigin> & origin,
|
|
|
|
|
+ const Eigen::MatrixBase<DerivedDir> & dir,
|
|
|
|
|
+ std::vector<std::vector<igl::Hit<typename DerivedV::Scalar>>> & hits)
|
|
|
|
|
+{
|
|
|
|
|
+ assert(origin.rows() == dir.rows());
|
|
|
|
|
+ hits.resize(origin.rows());
|
|
|
|
|
+ igl::parallel_for(origin.rows(),[&](int i)
|
|
|
|
|
+ {
|
|
|
|
|
+ RowVectorDIMS origin_i = origin.row(i);
|
|
|
|
|
+ RowVectorDIMS dir_i = dir.row(i);
|
|
|
|
|
+ this->intersect_ray(V,Ele,origin_i,dir_i,hits[i]);
|
|
|
|
|
+ },
|
|
|
|
|
+ 10000);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
template <typename DerivedV, int DIM>
|
|
template <typename DerivedV, int DIM>
|
|
|
template <typename DerivedEle>
|
|
template <typename DerivedEle>
|
|
|
IGL_INLINE bool
|
|
IGL_INLINE bool
|
|
@@ -1563,7 +1625,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray_opt(
|
|
|
const RowVectorDIMS & dir,
|
|
const RowVectorDIMS & dir,
|
|
|
const RowVectorDIMS & inv_dir,
|
|
const RowVectorDIMS & inv_dir,
|
|
|
const RowVectorDIMS & inv_dir_pad,
|
|
const RowVectorDIMS & inv_dir_pad,
|
|
|
- std::vector<igl::Hit> & hits) const
|
|
|
|
|
|
|
+ std::vector<igl::Hit<typename DerivedV::Scalar>> & hits) const
|
|
|
{
|
|
{
|
|
|
hits.clear();
|
|
hits.clear();
|
|
|
const Scalar t0 = 0;
|
|
const Scalar t0 = 0;
|
|
@@ -1571,6 +1633,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray_opt(
|
|
|
{
|
|
{
|
|
|
Scalar _1,_2;
|
|
Scalar _1,_2;
|
|
|
|
|
|
|
|
|
|
+
|
|
|
if(!ray_box_intersect(origin,inv_dir,inv_dir_pad,m_box,t0,t1,_1,_2))
|
|
if(!ray_box_intersect(origin,inv_dir,inv_dir_pad,m_box,t0,t1,_1,_2))
|
|
|
{
|
|
{
|
|
|
return false;
|
|
return false;
|
|
@@ -1590,8 +1653,8 @@ igl::AABB<DerivedV,DIM>::intersect_ray_opt(
|
|
|
}
|
|
}
|
|
|
return ret;
|
|
return ret;
|
|
|
}
|
|
}
|
|
|
- std::vector<igl::Hit> left_hits;
|
|
|
|
|
- std::vector<igl::Hit> right_hits;
|
|
|
|
|
|
|
+ std::vector<igl::Hit<typename DerivedV::Scalar>> left_hits;
|
|
|
|
|
+ std::vector<igl::Hit<typename DerivedV::Scalar>> right_hits;
|
|
|
const bool left_ret = m_left->intersect_ray_opt(V,Ele,origin,dir,inv_dir,inv_dir_pad,left_hits);
|
|
const bool left_ret = m_left->intersect_ray_opt(V,Ele,origin,dir,inv_dir,inv_dir_pad,left_hits);
|
|
|
const bool right_ret = m_right->intersect_ray_opt(V,Ele,origin,dir,inv_dir,inv_dir_pad,right_hits);
|
|
const bool right_ret = m_right->intersect_ray_opt(V,Ele,origin,dir,inv_dir,inv_dir_pad,right_hits);
|
|
|
hits.insert(hits.end(),left_hits.begin(),left_hits.end());
|
|
hits.insert(hits.end(),left_hits.begin(),left_hits.end());
|
|
@@ -1610,7 +1673,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray_opt(
|
|
|
const RowVectorDIMS & inv_dir,
|
|
const RowVectorDIMS & inv_dir,
|
|
|
const RowVectorDIMS & inv_dir_pad,
|
|
const RowVectorDIMS & inv_dir_pad,
|
|
|
const Scalar _min_t,
|
|
const Scalar _min_t,
|
|
|
- igl::Hit & hit) const
|
|
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> & hit) const
|
|
|
{
|
|
{
|
|
|
Scalar min_t = _min_t;
|
|
Scalar min_t = _min_t;
|
|
|
const Scalar t0 = 0;
|
|
const Scalar t0 = 0;
|
|
@@ -1633,8 +1696,8 @@ igl::AABB<DerivedV,DIM>::intersect_ray_opt(
|
|
|
|
|
|
|
|
// Doesn't seem like smartly choosing left before/after right makes a
|
|
// Doesn't seem like smartly choosing left before/after right makes a
|
|
|
// differnce
|
|
// differnce
|
|
|
- igl::Hit left_hit;
|
|
|
|
|
- igl::Hit right_hit;
|
|
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> left_hit;
|
|
|
|
|
+ igl::Hit<typename DerivedV::Scalar> right_hit;
|
|
|
bool left_ret = m_left->intersect_ray_opt(V,Ele,origin,dir,inv_dir,inv_dir_pad,min_t,left_hit);
|
|
bool left_ret = m_left->intersect_ray_opt(V,Ele,origin,dir,inv_dir,inv_dir_pad,min_t,left_hit);
|
|
|
if(left_ret && left_hit.t<min_t)
|
|
if(left_ret && left_hit.t<min_t)
|
|
|
{
|
|
{
|
|
@@ -1663,7 +1726,7 @@ igl::AABB<DerivedV,DIM>::intersect_ray_opt(
|
|
|
#ifdef IGL_STATIC_LIBRARY
|
|
#ifdef IGL_STATIC_LIBRARY
|
|
|
// Explicit template instantiation
|
|
// Explicit template instantiation
|
|
|
// generated by autoexplicit.sh
|
|
// generated by autoexplicit.sh
|
|
|
-template bool igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, std::vector<igl::Hit, std::allocator<igl::Hit> >&) const;
|
|
|
|
|
|
|
+template bool igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, std::vector<igl::Hit<double>, std::allocator<igl::Hit<double>> >&) const;
|
|
|
|
|
|
|
|
template class igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>;
|
|
template class igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>;
|
|
|
template class igl::AABB<Eigen::Matrix<double, -1, 3, 0, -1, 3>, 3>;
|
|
template class igl::AABB<Eigen::Matrix<double, -1, 3, 0, -1, 3>, 3>;
|
|
@@ -1681,14 +1744,14 @@ template void igl::AABB<Eigen::Matrix<double, -1, 3, 0, -1, 3>, 3>::init<Eigen::
|
|
|
// generated by autoexplicit.sh
|
|
// generated by autoexplicit.sh
|
|
|
template void igl::AABB<Eigen::Matrix<double, -1, 2, 0, -1, 2>, 2>::init<Eigen::Matrix<int, -1, 2, 0, -1, 2> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 2, 0, -1, 2> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> > const&);
|
|
template void igl::AABB<Eigen::Matrix<double, -1, 2, 0, -1, 2>, 2>::init<Eigen::Matrix<int, -1, 2, 0, -1, 2> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 2, 0, -1, 2> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> > const&);
|
|
|
// generated by autoexplicit.sh
|
|
// generated by autoexplicit.sh
|
|
|
-template bool igl::AABB<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::Matrix<float, 1, 3, 1, 1, 3> const&, Eigen::Matrix<float, 1, 3, 1, 1, 3> const&, std::vector<igl::Hit, std::allocator<igl::Hit> >&) const;
|
|
|
|
|
|
|
+template bool igl::AABB<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::Matrix<float, 1, 3, 1, 1, 3> const&, Eigen::Matrix<float, 1, 3, 1, 1, 3> const&, std::vector<igl::Hit<float>, std::allocator<igl::Hit<float>> >&) const;
|
|
|
// generated by autoexplicit.sh
|
|
// generated by autoexplicit.sh
|
|
|
template void igl::AABB<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 3>::init<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&);
|
|
template void igl::AABB<Eigen::Matrix<float, -1, -1, 0, -1, -1>, 3>::init<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&);
|
|
|
// generated by autoexplicit.sh
|
|
// generated by autoexplicit.sh
|
|
|
template void igl::AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 3, 1, -1, 3>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<double, -1, 3, 1, -1, 3> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> >&) const;
|
|
template void igl::AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, 3, 1, -1, 3>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<double, -1, 3, 1, -1, 3> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> >&) const;
|
|
|
// generated by autoexplicit.sh
|
|
// generated by autoexplicit.sh
|
|
|
template void igl::AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 3>::init<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&);
|
|
template void igl::AABB<Eigen::Matrix<double, -1, 3, 1, -1, 3>, 3>::init<Eigen::Matrix<int, -1, -1, 0, -1, -1> >(Eigen::MatrixBase<Eigen::Matrix<double, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&);
|
|
|
-template bool igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, igl::Hit&) const;
|
|
|
|
|
|
|
+template bool igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, Eigen::Matrix<double, 1, 3, 1, 1, 3> const&, igl::Hit<double>&) const;
|
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 2, 1, 1, 2> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 2, 1, 1, 2> >&) const;
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 2, 1, 1, 2> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 2, 1, 1, 2> >&) const;
|
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, double, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, double, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
|
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, -1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
|
|
@@ -1724,6 +1787,8 @@ template void igl::AABB<Eigen::Matrix<float, -1, 3, 0, -1, 3>, 3>::init<Eigen::M
|
|
|
template void igl::AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 3>::init<Eigen::Matrix<int, -1, 3, 1, -1, 3> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&);
|
|
template void igl::AABB<Eigen::Matrix<float, -1, 3, 1, -1, 3>, 3>::init<Eigen::Matrix<int, -1, 3, 1, -1, 3> >(Eigen::MatrixBase<Eigen::Matrix<float, -1, 3, 1, -1, 3> > const&, Eigen::MatrixBase<Eigen::Matrix<int, -1, 3, 1, -1, 3> > const&);
|
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, 1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::squared_distance<Eigen::Matrix<int, -1, 1, 0, -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::Matrix<double, 1, 3, 1, 1, 3> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 3, 1, 1, 3> >&) const;
|
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::squared_distance<Eigen::Matrix<int, -1, 1, 0, -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::Matrix<double, 1, 2, 1, 1, 2> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 2, 1, 1, 2> >&) const;
|
|
template double igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 2>::squared_distance<Eigen::Matrix<int, -1, 1, 0, -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::Matrix<double, 1, 2, 1, 1, 2> const&, int&, Eigen::PlainObjectBase<Eigen::Matrix<double, 1, 2, 1, 1, 2> >&) const;
|
|
|
|
|
+template void igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -1, -1>, 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::Matrix<double, -1, 1, 0, -1, 1>, Eigen::Matrix<double, -1, -1, 0, -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, 0, -1, -1>> const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1>> const&, double, Eigen::PlainObjectBase<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>>&);
|
|
|
|
|
+template void igl::AABB<Eigen::Matrix<double, -1, -1, 0, -1, -1>, 3>::intersect_ray<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::Matrix<double, -1, -1, 0, -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, 0, -1, -1>> const&, Eigen::MatrixBase<Eigen::Matrix<double, -1, -1, 0, -1, -1>> const&, std::vector<std::vector<igl::Hit<double>, std::allocator<igl::Hit<double>>>, std::allocator<std::vector<igl::Hit<double>, std::allocator<igl::Hit<double>>>>>&);
|
|
|
#ifdef WIN32
|
|
#ifdef WIN32
|
|
|
template void igl::AABB<class Eigen::Matrix<double,-1,-1,0,-1,-1>,3>::squared_distance<class Eigen::Matrix<int,-1,-1,0,-1,-1>,class Eigen::Matrix<double,-1,-1,0,-1,-1>,class Eigen::Matrix<double,-1,1,0,-1,1>,class Eigen::Matrix<__int64,-1,1,0,-1,1>,class Eigen::Matrix<double,-1,3,0,-1,3> >(class Eigen::MatrixBase<class Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,class Eigen::MatrixBase<class Eigen::Matrix<int,-1,-1,0,-1,-1> > const &,class Eigen::MatrixBase<class Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,class Eigen::PlainObjectBase<class Eigen::Matrix<double,-1,1,0,-1,1> > &,class Eigen::PlainObjectBase<class Eigen::Matrix<__int64,-1,1,0,-1,1> > &,class Eigen::PlainObjectBase<class Eigen::Matrix<double,-1,3,0,-1,3> > &)const;
|
|
template void igl::AABB<class Eigen::Matrix<double,-1,-1,0,-1,-1>,3>::squared_distance<class Eigen::Matrix<int,-1,-1,0,-1,-1>,class Eigen::Matrix<double,-1,-1,0,-1,-1>,class Eigen::Matrix<double,-1,1,0,-1,1>,class Eigen::Matrix<__int64,-1,1,0,-1,1>,class Eigen::Matrix<double,-1,3,0,-1,3> >(class Eigen::MatrixBase<class Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,class Eigen::MatrixBase<class Eigen::Matrix<int,-1,-1,0,-1,-1> > const &,class Eigen::MatrixBase<class Eigen::Matrix<double,-1,-1,0,-1,-1> > const &,class Eigen::PlainObjectBase<class Eigen::Matrix<double,-1,1,0,-1,1> > &,class Eigen::PlainObjectBase<class Eigen::Matrix<__int64,-1,1,0,-1,1> > &,class Eigen::PlainObjectBase<class Eigen::Matrix<double,-1,3,0,-1,3> > &)const;
|
|
|
#endif
|
|
#endif
|