mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Slightly improve naming of epsilon/tolerance variable in plane triangle intersection.
This commit is contained in:
@@ -114,7 +114,7 @@ bool HexGridIntersectionTools::planeTriangleIntersection(const cvf::Plane& plane
|
|||||||
ClipVx* newVx1, ClipVx* newVx2,
|
ClipVx* newVx1, ClipVx* newVx2,
|
||||||
bool * isMostVxesOnPositiveSide)
|
bool * isMostVxesOnPositiveSide)
|
||||||
{
|
{
|
||||||
const double epsilon = 1.0e-8;
|
const double nonDimensionalTolerance = 1.0e-8;
|
||||||
|
|
||||||
double sqrSignedDistances[3];
|
double sqrSignedDistances[3];
|
||||||
sqrSignedDistances[0] = plane.distanceSquared(p1);
|
sqrSignedDistances[0] = plane.distanceSquared(p1);
|
||||||
@@ -125,6 +125,8 @@ bool HexGridIntersectionTools::planeTriangleIntersection(const cvf::Plane& plane
|
|||||||
std::max(std::abs(sqrSignedDistances[1]),
|
std::max(std::abs(sqrSignedDistances[1]),
|
||||||
std::abs(sqrSignedDistances[2])));
|
std::abs(sqrSignedDistances[2])));
|
||||||
|
|
||||||
|
const double sqrDistanceTolerance = nonDimensionalTolerance * maxSqrAbsDistance;
|
||||||
|
|
||||||
int onPosSide[3];
|
int onPosSide[3];
|
||||||
onPosSide[0] = sqrSignedDistances[0] >= 0;
|
onPosSide[0] = sqrSignedDistances[0] >= 0;
|
||||||
onPosSide[1] = sqrSignedDistances[1] >= 0;
|
onPosSide[1] = sqrSignedDistances[1] >= 0;
|
||||||
@@ -157,7 +159,7 @@ bool HexGridIntersectionTools::planeTriangleIntersection(const cvf::Plane& plane
|
|||||||
if (onPosSide[2]) topVx = 3;
|
if (onPosSide[2]) topVx = 3;
|
||||||
|
|
||||||
// Case 3a: Two negative distances and the last is within tolerance of zero.
|
// Case 3a: Two negative distances and the last is within tolerance of zero.
|
||||||
if (sqrSignedDistances[topVx - 1] < epsilon * maxSqrAbsDistance)
|
if (sqrSignedDistances[topVx - 1] < sqrDistanceTolerance)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -169,7 +171,7 @@ bool HexGridIntersectionTools::planeTriangleIntersection(const cvf::Plane& plane
|
|||||||
if (!onPosSide[2]) topVx = 3;
|
if (!onPosSide[2]) topVx = 3;
|
||||||
|
|
||||||
// Case 3a: Two positive distances and the last is within tolerance of zero.
|
// Case 3a: Two positive distances and the last is within tolerance of zero.
|
||||||
if (sqrSignedDistances[topVx - 1] > -epsilon * maxSqrAbsDistance)
|
if (sqrSignedDistances[topVx - 1] > -sqrDistanceTolerance)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -184,28 +186,28 @@ bool HexGridIntersectionTools::planeTriangleIntersection(const cvf::Plane& plane
|
|||||||
|
|
||||||
if (topVx == 1)
|
if (topVx == 1)
|
||||||
{
|
{
|
||||||
ok1 = planeLineIntersect(plane, p1, p2, &((*newVx1).vx), &((*newVx1).normDistFromEdgeVx1), epsilon);
|
ok1 = planeLineIntersect(plane, p1, p2, &((*newVx1).vx), &((*newVx1).normDistFromEdgeVx1), nonDimensionalTolerance);
|
||||||
(*newVx1).clippedEdgeVx1Id = p1Id;
|
(*newVx1).clippedEdgeVx1Id = p1Id;
|
||||||
(*newVx1).clippedEdgeVx2Id = p2Id;
|
(*newVx1).clippedEdgeVx2Id = p2Id;
|
||||||
ok2 = planeLineIntersect(plane, p1, p3, &((*newVx2).vx), &((*newVx2).normDistFromEdgeVx1), epsilon);
|
ok2 = planeLineIntersect(plane, p1, p3, &((*newVx2).vx), &((*newVx2).normDistFromEdgeVx1), nonDimensionalTolerance);
|
||||||
(*newVx2).clippedEdgeVx1Id = p1Id;
|
(*newVx2).clippedEdgeVx1Id = p1Id;
|
||||||
(*newVx2).clippedEdgeVx2Id = p3Id;
|
(*newVx2).clippedEdgeVx2Id = p3Id;
|
||||||
}
|
}
|
||||||
else if (topVx == 2)
|
else if (topVx == 2)
|
||||||
{
|
{
|
||||||
ok1 = planeLineIntersect(plane, p2, p3, &((*newVx1).vx), &((*newVx1).normDistFromEdgeVx1), epsilon);
|
ok1 = planeLineIntersect(plane, p2, p3, &((*newVx1).vx), &((*newVx1).normDistFromEdgeVx1), nonDimensionalTolerance);
|
||||||
(*newVx1).clippedEdgeVx1Id = p2Id;
|
(*newVx1).clippedEdgeVx1Id = p2Id;
|
||||||
(*newVx1).clippedEdgeVx2Id = p3Id;
|
(*newVx1).clippedEdgeVx2Id = p3Id;
|
||||||
ok2 = planeLineIntersect(plane, p2, p1, &((*newVx2).vx), &((*newVx2).normDistFromEdgeVx1), epsilon);
|
ok2 = planeLineIntersect(plane, p2, p1, &((*newVx2).vx), &((*newVx2).normDistFromEdgeVx1), nonDimensionalTolerance);
|
||||||
(*newVx2).clippedEdgeVx1Id = p2Id;
|
(*newVx2).clippedEdgeVx1Id = p2Id;
|
||||||
(*newVx2).clippedEdgeVx2Id = p1Id;
|
(*newVx2).clippedEdgeVx2Id = p1Id;
|
||||||
}
|
}
|
||||||
else if (topVx == 3)
|
else if (topVx == 3)
|
||||||
{
|
{
|
||||||
ok1 = planeLineIntersect(plane, p3, p1, &((*newVx1).vx), &((*newVx1).normDistFromEdgeVx1), epsilon);
|
ok1 = planeLineIntersect(plane, p3, p1, &((*newVx1).vx), &((*newVx1).normDistFromEdgeVx1), nonDimensionalTolerance);
|
||||||
(*newVx1).clippedEdgeVx1Id = p3Id;
|
(*newVx1).clippedEdgeVx1Id = p3Id;
|
||||||
(*newVx1).clippedEdgeVx2Id = p1Id;
|
(*newVx1).clippedEdgeVx2Id = p1Id;
|
||||||
ok2 = planeLineIntersect(plane, p3, p2, &((*newVx2).vx), &((*newVx2).normDistFromEdgeVx1), epsilon);
|
ok2 = planeLineIntersect(plane, p3, p2, &((*newVx2).vx), &((*newVx2).normDistFromEdgeVx1), nonDimensionalTolerance);
|
||||||
(*newVx2).clippedEdgeVx1Id = p3Id;
|
(*newVx2).clippedEdgeVx1Id = p3Id;
|
||||||
(*newVx2).clippedEdgeVx2Id = p2Id;
|
(*newVx2).clippedEdgeVx2Id = p2Id;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user