Working element buffer object
This commit is contained in:
+28
-21
@@ -1,40 +1,47 @@
|
||||
{-# OPTIONS_GHC -Wno-missing-signatures #-}
|
||||
{-# LANGUAGE StrictData #-}
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
{-# LANGUAGE DerivingStrategies #-}
|
||||
{-# LANGUAGE GeneralisedNewtypeDeriving #-}
|
||||
module Shape.Data
|
||||
where
|
||||
import Geometry.Data
|
||||
import Control.Lens
|
||||
--import qualified Data.Vector.Fusion.Stream.Monadic as VS
|
||||
import qualified Data.DList as DL
|
||||
--import qualified Data.DList as DL
|
||||
|
||||
--import Data.Monoid
|
||||
data Shape = Shape
|
||||
{ _shVertices :: DL.DList ShapeV
|
||||
, _shEdges :: DL.DList Point3
|
||||
}
|
||||
instance Semigroup Shape where
|
||||
(<>) (Shape sv1 se1) (Shape sv2 se2) = Shape (sv1 <> sv2) (se1 <> se2)
|
||||
--(<>) (Shape sv1 se1) (Shape sv2 se2) = Shape (sv1 VS.++ sv2) (se1 VS.++ se2)
|
||||
instance Monoid Shape where
|
||||
mempty = Shape mempty mempty
|
||||
type Shape = ([ShapeV], [Point3])
|
||||
_shVertices :: Shape -> [ShapeV]
|
||||
{-# INLINE _shVertices #-}
|
||||
_shVertices = fst
|
||||
_shEdges :: Shape -> [Point3]
|
||||
{-# INLINE _shEdges #-}
|
||||
_shEdges = snd
|
||||
|
||||
shVList :: Shape -> [ShapeV]
|
||||
{-# INLINE shVList #-}
|
||||
shVList = DL.toList . _shVertices
|
||||
shVList = _shVertices
|
||||
--shVList = DL.toList . _shVertices
|
||||
shEList :: Shape -> [Point3]
|
||||
{-# INLINE shEList #-}
|
||||
shEList = DL.toList . _shEdges
|
||||
shEList = _shEdges
|
||||
--shEList = DL.toList . _shEdges
|
||||
|
||||
{-# INLINE shVfromList #-}
|
||||
shVfromList = DL.fromList
|
||||
shVfromList = id
|
||||
--shVfromList = DL.fromList
|
||||
{-# INLINE shEfromList #-}
|
||||
shEfromList = DL.fromList
|
||||
shEfromList = id
|
||||
--shEfromList = DL.fromList
|
||||
|
||||
-- edges are given by four consecutive points
|
||||
data ShapeV = ShapeV
|
||||
{ _svPos :: Point3
|
||||
, _svCol :: Point4
|
||||
{_svPos :: Point3
|
||||
,_svCol :: Point4
|
||||
}
|
||||
makeLenses ''ShapeV
|
||||
makeLenses ''Shape
|
||||
pairToSV :: (Point3,Point4) -> ShapeV
|
||||
{-# INLINE pairToSV #-}
|
||||
pairToSV = uncurry ShapeV
|
||||
|
||||
--_svPos :: ShapeV -> Point3
|
||||
--_svPos = fst
|
||||
--_svCol :: ShapeV -> Point4
|
||||
--_svCol = snd
|
||||
|
||||
Reference in New Issue
Block a user