Simplify the Haskell interface to rotateExtrude #367
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current public interface for
rotateExtrude
has aMaybe R
parameter, representing whether or not we need to generate end caps for the shape, and if so, with what rounding. Unbeknownst to me, this parameter is automagically determined in the scad interface, meaning users of the Hs interface would need to decide for themselves whether to set the capping.But this shouldn't be user-controllable at all, since getting it wrong completely breaks the mesh generation (see #307, #309, #310).
This PR moves the capping logic directly into
getImplicit
, where users can't screw it up. Furthermore, now that the rounding isn't given by a non-standard mechanism, we can instead usewithRounding
to set it.While I was in the neighborhood, I added some optimizations to
rotateExtrude
so that we can skip it for the case oftheta = 0
and when the object to extrude isemptySpace
.Fixes #307, fixes #308, fixes #309, fixes #310