34 lines
1.7 KiB
C++
34 lines
1.7 KiB
C++
|
#include "setxor.h"
|
||
|
#include "setdiff.h"
|
||
|
#include "setunion.h"
|
||
|
#include "slice.h"
|
||
|
|
||
|
template <
|
||
|
typename DerivedA,
|
||
|
typename DerivedB,
|
||
|
typename DerivedC,
|
||
|
typename DerivedIA,
|
||
|
typename DerivedIB>
|
||
|
IGL_INLINE void igl::setxor(
|
||
|
const Eigen::DenseBase<DerivedA> & A,
|
||
|
const Eigen::DenseBase<DerivedB> & B,
|
||
|
Eigen::PlainObjectBase<DerivedC> & C,
|
||
|
Eigen::PlainObjectBase<DerivedIA> & IA,
|
||
|
Eigen::PlainObjectBase<DerivedIB> & IB)
|
||
|
{
|
||
|
DerivedC AB,BA;
|
||
|
DerivedIA IAB,IBA;
|
||
|
setdiff(A,B,AB,IAB);
|
||
|
setdiff(B,A,BA,IBA);
|
||
|
setunion(AB,BA,C,IA,IB);
|
||
|
slice(IAB,DerivedIA(IA),IA);
|
||
|
slice(IBA,DerivedIB(IB),IB);
|
||
|
}
|
||
|
|
||
|
#ifdef IGL_STATIC_LIBRARY
|
||
|
// Explicit template instantiation
|
||
|
// generated by autoexplicit.sh
|
||
|
template void igl::setxor<Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 2, 0, -1, 2>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, 2, 0, -1, 2> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
|
||
|
template void igl::setxor<Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, -1, 0, -1, -1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1>, Eigen::Matrix<int, -1, 1, 0, -1, 1> >(Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::DenseBase<Eigen::Matrix<int, -1, -1, 0, -1, -1> > const&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&, Eigen::PlainObjectBase<Eigen::Matrix<int, -1, 1, 0, -1, 1> >&);
|
||
|
#endif
|