-
Notifications
You must be signed in to change notification settings - Fork 60
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implemented Fuselage Profile Type: Rectangle (Issue #909) #1005
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks a lot @merakulix! The images look very impressive! 😃 I have a few comments, see below.
ASSERT_THROW(loft.Shape(), tigl::CTiglError); | ||
} | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All tests above this line test a function from commonfunctions.h. Let's move these tests to TiglCommonFunctions.cpp
file. They don't need the fixture with the CPACS files at all.
tigl::dumpShape(fuselage->Shape(), "mydir", "fuselageMix"); | ||
tigl::dumpShape(wing->Shape(), "mydir", "wing1"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tigl::dumpShape(fuselage->Shape(), "mydir", "fuselageMix"); | |
tigl::dumpShape(wing->Shape(), "mydir", "wing1"); |
Let's not dump shapes as part of unit tests.
src/common/tiglcommonfunctions.cpp
Outdated
|
||
if (!(cornerRadius == 0.0)){ | ||
//calculate the number of points required to maintain the minimum distance (<tol) between the bisector of two neighboring points on an arc circle | ||
nb_points = (int) (M_PI/(acos(1-tol/cornerRadius))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Casting to int is rounding down to the next lower integer, which means we have a slightly smaller resolution than required by the tolerance. We should round up here.
if (curve->Degree()<2){ | ||
curve->IncreaseDegree(2); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still don't fully understand why this fixes the issue with the guide curves, but fine, let's keep this as a workaround for now. But then please add a code comment description of why these three lines were added. Please be so specific, that a future reader can replicate the problem
Co-authored-by: Jan Kleinert <[email protected]>
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #1005 +/- ##
==========================================
+ Coverage 68.97% 69.08% +0.11%
==========================================
Files 299 299
Lines 26499 26608 +109
==========================================
+ Hits 18277 18383 +106
- Misses 8222 8225 +3
|
Description
Implementing the rectangle profile type as an element of the CPACS standard profile type covers one part of issue #909 on parametric profile types.
This approach is based on point lists (std::vector<gp_Pnt>) for approximation of curves, since the lofting algorithms don't support rational B-Splines yet.
Changes in tiglcommonfunctions.* :
Added new global functions:
- BuildWireRectangle(... , ): Builds the wire which is needed to build profiles. Uses these newly implemented functions:
- ApproximateArcOfCircleToRationalBSpline(... , ): Approximation to a rational B-Spline via point list was needed, since the lofting algorithm doesn't support rational B-Splines yet
- Linspace(... , ): Useful function when building point lists
Changes in CCPACSFuselageProfile.* :
Added new member function
Changed member function:
How Has This Been Tested?
Added Unit Tests:
a circle profile with kinks and a rectangle profile with and without corner radius, as shown in the image below
circle profile, rectangle profile with and without corner radius given, and guide curves, as shown in the images below
Checklist: