packages feed

qhull-0.1.0.1: src/HalfSpaces/Examples.hs

module HalfSpaces.Examples
  where
import           Data.Ratio                   ((%))
import           Data.VectorSpace
import           HalfSpaces.Constraint        (Constraint (..), (.<=), (.<=.),
                                               (.>=), (.>=.))
import           HalfSpaces.LinearCombination (constant, cst, linearCombination,
                                               newVar)

testSmall :: [Constraint]
testSmall = [ x .<= 1, x .>= 0, y .<= 1]
  where
    x = newVar 1
    y = newVar 2

rggConstraints :: [Constraint]
rggConstraints =
  [ x .>= (-5)
  , x .<=  4
  , y .>= (-5)
  , y .<=. cst 3 ^-^ x
  , z .>= (-10)
  , z .<=. cst 6 ^-^ x ^-^ y ]
  where
    x = newVar 1
    y = newVar 2
    z = newVar 3

region3D :: [Constraint]
region3D =
  [ x .>=  0 -- shortcut for x .>=. cst 0
  , x .<=  3
  , y .>=  0
  , y .<=. cst 2 ^-^ (2%3)*^x
  , z .>=  0
  , z .<=. cst 6 ^-^ 2*^x ^-^ 3*^y ]
  where
    x = newVar 1
    y = newVar 2
    z = newVar 3

cubeConstraints :: [Constraint]
cubeConstraints =
  [ x .<= 1
  , x .>= (-1)
  , y .<= 1
  , y .>= (-1)
  , z .<= 1
  , z .>= (-1) ]
  where
    x = newVar 1
    y = newVar 2
    z = newVar 3