{-# LANGUAGE RecordWildCards, DataKinds, DeriveDataTypeable #-} module FitCurves where import Control.Monad import Data.Data import Data.Int import Data.IORef import qualified Data.Vector.Storable.Mutable as MV import Foreign.Ptr import Foreign.Storable import GHC.Exts (RealWorld) import Numeric.LinearAlgebra as Math hiding ((<>)) import Bezier import Camera import qualified GPURing as GPU import LambdaCube.GL.Input.Type import MaskableStream import RingBuffer import qualified VectorRing as Vector ;import VectorRing (Point) import LambdaCube.GL.HMatrix () data RingPoint = RingPoint { rpPosition :: AttributeKey (GLVector 3 Float) , rpColor :: AttributeKey (GLVector 3 Float) } deriving Data white,red,yellow,blue :: Vector Float white = fromList [1,1,1] yellow = fromList [1,1,0] blue = fromList [0,0,1] red = fromList [1,0,0] fitCurve1 :: Camera -> Maybe Plane -> (Int32 -> [(Int32, Int32)]) -> Int -> TargetBuffer (GPU.Update RingPoint) -> MV.MVector RealWorld Vector.Point -> IO (Maybe Int) fitCurve1 cam plane mask max_curve_pts buf dta = do return Nothing -- TODO