module BoundingBoxExample (boundingBoxExample ) where import Data.Function ((&)) import qualified Waterfall.Solids as Solids import qualified Waterfall.BoundingBox.Oriented as OBB import qualified Waterfall.BoundingBox.AxisAligned as AABB import qualified Waterfall.Transforms as Transforms import Linear (V3 (..), unit, _y, _z, (^*)) boundingBoxExample :: Solids.Solid boundingBoxExample = let shape = Solids.unitSphere & Transforms.scale (V3 0.5 3 5) & Transforms.rotate (unit _z) 1 & Transforms.rotate (unit _y) 0.5 obb = OBB.orientedBoundingBox shape & maybe Solids.nowhere OBB.obbToSolid aabb = AABB.axisAlignedBoundingBox shape & maybe Solids.nowhere AABB.aabbToSolid in mconcat [ Transforms.translate (unit _y ^* (-5)) shape , obb , Transforms.translate (unit _y ^* 5) aabb ]