Safe Haskell | None |
---|---|
Language | Haskell2010 |
Waterfall.Fillet
Synopsis
- roundFillet :: Double -> Solid -> Solid
- roundConditionalFillet :: ((V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid
- roundIndexedConditionalFillet :: (Integer -> (V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid
- chamfer :: Double -> Solid -> Solid
- conditionalChamfer :: ((V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid
- indexedConditionalChamfer :: (Integer -> (V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid
Documentation
roundFillet :: Double -> Solid -> Solid Source #
Add a round with a given radius to every edge of a solid
Because this is applied to both internal (concave) and external (convex) edges, it may technically produce both Rounds and Fillets
roundConditionalFillet :: ((V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid Source #
Add rounds with the given radius to each edge of a solid, conditional on the endpoints of the edge.
This can be used to selectively round/fillet a Solid
.
roundIndexedConditionalFillet :: (Integer -> (V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid Source #
Add rounds with the given radius to each edge of a solid, conditional on the endpoints of the edge, and the index of the edge.
This can be used to selectively round/fillet a Solid
.
In general, relying on the edge index is inelegant, however, if you consider a Solid with a semicircular face, there's no way to select either the curved or the flat edge of the semicircle based on just the endpoints.
Being able to selectively round/fillet based on edge index is an "easy" way to round/fillet these shapes.
chamfer :: Double -> Solid -> Solid Source #
Add a round with a given radius to every edge of a solid
This is applied to both internal (concave) and external (convex) edges
conditionalChamfer :: ((V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid Source #
Add chamfers with the given size to each edge of a solid, conditional on the endpoints of the edge.
This can be used to selectively chamfer a Solid
.
indexedConditionalChamfer :: (Integer -> (V3 Double, V3 Double) -> Maybe Double) -> Solid -> Solid Source #
Add chamfers of the given size to each edge of a solid, conditional on the endpoints of the edge, and the index of the edge.
This can be used to selectively chamfer a Solid
.
In general, relying on the edge index is inelegant, however, if you consider a Solid with a semicircular face, there's no way to select either the curved or the flat edge of the semicircle based on just the endpoints.
Being able to selectively chamfer based on edge index is an "easy" way to chamfer these shapes.