-// Copyright (C) 2007-2015 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2022 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#ifndef __CURVEINTERSECTOR_HXX__
#define __CURVEINTERSECTOR_HXX__
-#include "TargetIntersector.hxx"
+#include "TargetIntersector.txx"
#include "NormalizedUnstructuredMesh.hxx"
namespace INTERP_KERNEL
double precision, double adjustmentEpsAbs, double medianLine, int printLevel);
virtual ~CurveIntersector();
void createBoundingBoxes(const MyMeshType& mesh, std::vector<double>& bbox);
- void adjustBoundingBoxes(std::vector<double>& bbox, double adjustmentEpsAbs);
static void getElemBB(double* bb, const MyMeshType& mesh, ConnType iP, ConnType nb_nodes);
-
+ static void ComputeBaryCoordsOf(double startOfSeg, double endOfSeg, double pt, double& startPos, double& endPos);
protected :
- bool getRealTargetCoordinates(ConnType icellT, std::vector<double>& coordsT);
- bool getRealSourceCoordinates(ConnType icellS, std::vector<double>& coordsS);
- double intersectSegments(double *Coords_T, double *Coords_S);
-
+ bool projectionThis(const double *coordsT, const double *coordsS, double& xs0, double& xs1, double& xt) const;
+ bool projectionThis(const double *coordsT, const double *coordsS, double& xs0, double& xs1, double& xt0, double& xt1) const;
+ bool getRealTargetCoordinates(ConnType icellT, std::vector<double>& coordsT) const;
+ typename MyMeshType::MyConnType getNodeIdOfTargetCellAt(ConnType icellT, ConnType nodeIdInCellT) const;
+ bool getRealSourceCoordinates(ConnType icellS, std::vector<double>& coordsS) const;
+ typename MyMeshType::MyConnType getNodeIdOfSourceCellAt(ConnType icellT, ConnType nodeIdInCellT) const;
+ double intersectSegments(const double *coordsT, const double *coordsS) const;
+ double intersectSegmentsInternal(const double *coordsT, const double *coordsS, double& xs0, double& xs1, double& xt0, double& xt1) const;
+ bool isPtIncludedInSeg(const double *coordsT, const double *coordsS, double& xs0, double& xs1, double& xt) const;
+
struct TDualSegment
{
std::vector<double> _coords;
- int _nodeId; // in mesh mode
+ ConnType _nodeId; // in mesh mode
};
static void getDualSegments(ConnType icell,
const MyMeshType& mesh,