-
-
Notifications
You must be signed in to change notification settings - Fork 121
Add Tangent objects for Point and Arc #947
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
Conversation
…c based on performance
These are pretty extensive, but not exhaustive. Testing once in algebraic mode with a tangency/coincident checks, testing on at a few different start points, comparing lengths to first test and L/R INSIDE/OUTSIDE output, finally do error checks locally.
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## dev #947 +/- ##
==========================================
- Coverage 96.93% 96.91% -0.03%
==========================================
Files 32 32
Lines 9470 9656 +186
==========================================
+ Hits 9180 9358 +178
- Misses 290 298 +8 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Merging with dev + mypy/pyline/black still needs to be done. |
At first glance these look great but it will be a few days before I have the time to review them in detail. |
No problem (I think) this is a complicated addition and I'd want to make sure it fits with the project goals. |
This looks like some excellent work and welcome additions to build123d. I don't really have any substantial input to what you've done here other than to fix up the type checking and code coverage failures. As for naming and design choices like Side vs. Keep how about we get some feedback from the community on this after it has been merged? I don't think we have enough content to do a release for a little while so we have some time to explore what is best - even if that is changing Thanks again! |
I've marked this for review, but there are codecov errors I don't understand (at least the ones highlighting comments). |
The code coverage errors don't make sense; there is at least one comment that doesn't have coverage. How about we merge this code and see what's what? |
Sure, that's fine with me. |
Adding a batch of tangent objects to create tangent arcs and lines between arcs and arcs and points. Please scrutinize my style and the tests I added (which are fairly extensive).
New Objects
PointArcTangentLine
PointArcTangentArc
ArcArcTangnetLine
ArcArcTangentArc
Shortcomings
Open questions
Side vs Keep
Side.LEFT/RIGHT
to pick starting side for all objects, and usingKeep.INSIDE/OUTSIDE
for the ArcArc objects.Side
is a departure from `Keep.TOP/BOTTOM' in DoubleTangentArc, so I am open to discussing alternatives.ArcArcTangentArc
for overlapping arcs would increase the possible tangents to 8 so some solution will be necessarySympy
ArcArcTangentArc
uses sympy as committed. Finds circle intersections.PointArcTangentArc
(based onDoubleTangentArc
). For some reason sympy is 4 - 10 times slower than using the minimizer, even if the minimizer fails at a larger size. Would use circle and line intersections