diff options
author | tamasmeszaros <meszaros.q@gmail.com> | 2018-08-20 17:34:35 +0300 |
---|---|---|
committer | tamasmeszaros <meszaros.q@gmail.com> | 2018-08-20 17:34:35 +0300 |
commit | 8617b0a409ba0cbb682c5cd0078fa23be66ab440 (patch) | |
tree | 626c9b953ce682bf552cbfbb71edb5c05759c22e /xs/src/libnest2d/tools/nfp_svgnest_glue.hpp | |
parent | e678368b233670ab6a707f87b42306964f12d463 (diff) |
parallel nesting can be enabled but fails with the current objectfunction.
Diffstat (limited to 'xs/src/libnest2d/tools/nfp_svgnest_glue.hpp')
-rw-r--r-- | xs/src/libnest2d/tools/nfp_svgnest_glue.hpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/xs/src/libnest2d/tools/nfp_svgnest_glue.hpp b/xs/src/libnest2d/tools/nfp_svgnest_glue.hpp new file mode 100644 index 000000000..7ceb2d24d --- /dev/null +++ b/xs/src/libnest2d/tools/nfp_svgnest_glue.hpp @@ -0,0 +1,77 @@ +#ifndef NFP_SVGNEST_GLUE_HPP +#define NFP_SVGNEST_GLUE_HPP + +#include "nfp_svgnest.hpp" + +#include <libnest2d/clipper_backend/clipper_backend.hpp> + +namespace libnest2d { + +namespace __svgnest { + +//template<> struct _Tol<double> { +// static const BP2D_CONSTEXPR TCoord<PointImpl> Value = 1000000; +//}; + +} + +namespace nfp { + +using NfpR = NfpResult<PolygonImpl>; + +template<> struct NfpImpl<PolygonImpl, NfpLevel::CONVEX_ONLY> { + NfpR operator()(const PolygonImpl& sh, const PolygonImpl& cother) { +// return nfpConvexOnly(sh, cother); + namespace sl = shapelike; + using alg = __svgnest::_alg<PolygonImpl>; + + std::cout << "Itt vagyok" << std::endl; + auto nfp_p = alg::noFitPolygon(sl::getContour(sh), + sl::getContour(cother), false, false); + + PolygonImpl nfp_cntr; + nfp_cntr.Contour = nfp_p.front(); + std::cout << "Contour size: " << nfp_cntr.Contour.size() << std::endl; + return {nfp_cntr, referenceVertex(nfp_cntr)}; + } +}; + +template<> struct NfpImpl<PolygonImpl, NfpLevel::ONE_CONVEX> { + NfpR operator()(const PolygonImpl& sh, const PolygonImpl& cother) { +// return nfpConvexOnly(sh, cother); + namespace sl = shapelike; + using alg = __svgnest::_alg<PolygonImpl>; + + std::cout << "Itt vagyok" << std::endl; + auto nfp_p = alg::noFitPolygon(sl::getContour(sh), + sl::getContour(cother), false, false); + + PolygonImpl nfp_cntr; + nfp_cntr.Contour = nfp_p.front(); + return {nfp_cntr, referenceVertex(nfp_cntr)}; + } +}; + +template<> +struct NfpImpl<PolygonImpl, NfpLevel::BOTH_CONCAVE> { + NfpR operator()(const PolygonImpl& sh, const PolygonImpl& cother) { + namespace sl = shapelike; + using alg = __svgnest::_alg<PolygonImpl>; + + auto nfp_p = alg::noFitPolygon(sl::getContour(sh), + sl::getContour(cother), true, false); + + PolygonImpl nfp_cntr; + nfp_cntr.Contour = nfp_p.front(); + return {nfp_cntr, referenceVertex(nfp_cntr)}; + } +}; + +template<> struct MaxNfpLevel<PolygonImpl> { +// static const BP2D_CONSTEXPR NfpLevel value = NfpLevel::BOTH_CONCAVE; + static const BP2D_CONSTEXPR NfpLevel value = NfpLevel::CONVEX_ONLY; +}; + +}} + +#endif // NFP_SVGNEST_GLUE_HPP |