Working element buffer object

This commit is contained in:
2021-09-20 12:36:35 +01:00
parent c605ac74ff
commit 5cbcbec101
22 changed files with 242 additions and 212 deletions
+28 -21
View File
@@ -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