Skip to content

Commit

Permalink
- Add skew function to QuadQuality
Browse files Browse the repository at this point in the history
- Add unit test to QuadQuality for skew function
  • Loading branch information
claireroche authored and nicolaslg committed Jul 4, 2024
1 parent 1655c31 commit d4ed39e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
1 change: 1 addition & 0 deletions quality/inc/gmds/quality/QuadQuality.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ struct GMDSQuality_API QuadQuality
double angleDeviation() const;
double minAngle() const;
double maxAngle() const;
double skew() const;

math::Vector3d L0() const { return p[1]- p[0];}
math::Vector3d L1() const { return p[2]- p[1];}
Expand Down
12 changes: 12 additions & 0 deletions quality/src/QuadQuality.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,15 @@ QuadQuality::maxAngle() const {
throw GMDSException("Not yet implemented!");
}
/*---------------------------------------------------------------------------*/
double
QuadQuality::skew() const {

if(X1().norm() <= std::numeric_limits<double>::min())
return 0;
if(X2().norm() <= std::numeric_limits<double>::min())
return 0;

return std::fabs(X1().normalize().dot(X2().normalize()));
}

/*---------------------------------------------------------------------------*/
8 changes: 8 additions & 0 deletions quality/tst/QuadEvalTestSuite.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ TEST(QuadQualityTestClass, test1)
ASSERT_NEAR(qe.aspectRatio(),1,0.01);
ASSERT_NEAR(qe.signedArea(),1,0.01);
ASSERT_NEAR(qe.angleDeviation(),0,0.01);
ASSERT_NEAR(qe.skew(),0,0.01);

QuadQuality qe2 = QuadQuality::build(math::Point(0,0,0),
math::Point(2,0,0),
Expand All @@ -50,5 +51,12 @@ TEST(QuadQualityTestClass, test1)
ASSERT_NEAR(qe2.aspectRatio(),6,0.01);
ASSERT_NEAR(qe2.signedArea(),2,0.01);
ASSERT_NEAR(qe2.angleDeviation(),0,0.01);
ASSERT_NEAR(qe2.skew(),0,0.01);

QuadQuality qe3 = QuadQuality::build(math::Point(0,0,0),
math::Point(2,0,0),
math::Point(2,1,0),
math::Point(1,1,0));
ASSERT_NEAR(qe3.skew(),0.447,0.01);

}

0 comments on commit d4ed39e

Please sign in to comment.