shelled-solid questionable results
Created by: reiniervandijk
One might expect some cases to actually work. Unclear whether these are limitations of the kernel or faulty implementation in Gendl. Errors at singularities (exact equality).
Open:
(define-object shelled-solid-example (base-object)
:documentation
(:author
"R.E.C. van Dijk (TU Delft)"
:description
"tests with shelled solid")
:objects
((arc :type 'arc-curve :radius 1)
(offset-arc :type 'boxed-curve :curve-in (the arc) :center (translate (the center) :up 3))
(surf0 :type 'ruled-surface :curve-1 (the arc) :curve-2 (the offset-arc))
(shell0 :type 'shelled-solid :brep (the surf0 :brep) :distance 0.2)
;; outward shelling gives weird results. One might expect this, however, shouldn't kernel be smart enough to handle this?
(rect1 :type 'rectangle :width 1 :length 1)
(rect1-offset :type 'boxed-curve :curve-in (the rect1) :center (translate (the center) :up 3))
(surf1 :type 'ruled-surface :curve-1 (the rect1 :reverse) :curve-2 (the rect1-offset :reverse))
(shell1 :type 'shelled-solid :brep (the surf1) :distance 0.15 :display-controls (list :color :red))
;; inward shelling gives error. One might expect this, however, shouldn't kernel be smart enough to handle this?
(rect2 :type 'rectangle :width 1 :length 1)
(rect2-offset :type 'boxed-curve :curve-in (the rect2) :center (translate (the center) :up 3))
(surf2 :type 'ruled-surface :curve-1 (the rect2) :curve-2 (the rect2-offset))
(shell2 :type 'shelled-solid :brep (the surf2) :distance 0.15 :display-controls (list :color :red))
;; adding a fillet solves issues for outward shelling.
(rect3 :type 'global-filleted-polyline-curve :default-radius 0.2 :vertex-list (the rect1 :control-points))
(rect3-offset :type 'boxed-curve :curve-in (the rect3) :center (translate (the center) :up 3))
(surf3 :type 'ruled-surface :curve-1 (the rect3) :curve-2 (the rect3-offset))
(shell3 :type 'shelled-solid :brep (the surf3) :distance 0.15 :display-controls (list :color :red))
;; adding a fillet solves issues for inward shelling.
(rect4 :type 'global-filleted-polyline-curve :default-radius 0.2 :vertex-list (the rect1 :control-points))
(rect4-offset :type 'boxed-curve :curve-in (the rect4) :center (translate (the center) :up 4))
(surf4 :type 'ruled-surface :curve-1 (the rect4 :reverse) :curve-2 (the rect4-offset :reverse))
(shell4 :type 'shelled-solid :brep (the surf4) :distance 0.15 :display-controls (list :color :red))
;; inward shelling with fillet radius and thickness EXACTLY equal fails. Kernel should handle this correctly!
(rect5 :type 'global-filleted-polyline-curve :default-radius 0.2 :vertex-list (the rect1 :control-points))
(rect5-offset :type 'boxed-curve :curve-in (the rect5) :center (translate (the center) :up 5))
(surf5 :type 'ruled-surface :curve-1 (the rect5 :reverse) :curve-2 (the rect5-offset :reverse))
(shell5 :type 'shelled-solid :brep (the surf5) :distance 0.2 :display-controls (list :color :red) :tolerance 0.000000000000000001)
;; inward shelling with fillet radius and thickness ALMOST equal works.
(rect6 :type 'global-filleted-polyline-curve :default-radius 0.2 :vertex-list (the rect1 :control-points))
(rect6-offset :type 'boxed-curve :curve-in (the rect6) :center (translate (the center) :up 6))
(surf6 :type 'ruled-surface :curve-1 (the rect6 :reverse) :curve-2 (the rect6-offset :reverse))
(shell6 :type 'shelled-solid :brep (the surf6) :distance 0.199 :display-controls (list :color :red))
;; inward shelling with thickness bigger than fillet radius fails again.
(rect7 :type 'global-filleted-polyline-curve :default-radius 0.2 :vertex-list (the rect1 :control-points))
(rect7-offset :type 'boxed-curve :curve-in (the rect7) :center (translate (the center) :up 7))
(surf7 :type 'ruled-surface :curve-1 (the rect7 :reverse) :curve-2 (the rect7-offset :reverse))
(shell7 :type 'shelled-solid :brep (the surf7) :distance 0.3 :display-controls (list :color :red))
)
)
(define-object rectangle (b-spline-curve)
:documentation
(:author
"R.E.C. van Dijk (TU Delft)"
:description
"default orientation is in xy-plane, width associated to x (right) and length associated to y (rear).")
:input-slots
(width length)
:computed-slots
((control-points (list (translate (the center) :left (half (the width)) :front (half (the length)))
(translate (the center) :right (half (the width)) :front (half (the length)))
(translate (the center) :right (half (the width)) :rear (half (the length)))
(translate (the center) :left (half (the width)) :rear (half (the length)))
(translate (the center) :left (half (the width)) :front (half (the length)))))
(degree 1)
)
)
Imported comments:
By genworks on 2015-01-30 00:56:00 UTC
moved to internal tracking list.