{-
- Fulsom (The Solid Modeller, written in Haskell)
-
- Copyright 1990,1991,1992,1993 Duncan Sinclair
-
- Permissiom to use, copy, modify, and distribute this software for any
- purpose and without fee is hereby granted, provided that the above
- copyright notice and this permission notice appear in all copies, and
- that my name not be used in advertising or publicity pertaining to this
- software without specific, written prior permission. I makes no
- representations about the suitability of this software for any purpose.
- It is provided ``as is'' without express or implied warranty.
-
- Duncan Sinclair 1993.
-
- All major types declared here.
-
-}
module Types (
FType,BI,Prim(..),Ops(..),Csg(..),CsgOut,Calc,
Color(..),R3,R1,Row,Arr,Oct(..),tuple,Quad(..),Vector,In
)
where
import Interval
---------------------------------------------------------
-- Csg
----------------------------------------------------------
type FType = Double
type BI = Interval FType
data Prim = Sphere FType FType FType FType
| Cube FType FType FType FType
| Plane FType FType FType FType
| X | Y | Z
deriving Show{-was:Text-}
data Ops = RotX FType
| RotY FType
| RotZ FType
| Scale FType FType FType
| Trans FType FType FType
deriving Show{-was:Text-}
data Csg = Object Prim
| Geom Csg Ops
| Func Calc
| Matrix Csg Arr
| Colour Color Csg
| Union Csg Csg
| Inter Csg Csg
| Sub Csg Csg
| Comp Csg
-- deriving Show{-was:Text-}
-- type CsgOut = (R1 BI,Csg,Color,Bool)
type CsgOut = (BI,Csg,Color,Bool)
type Calc = Color -> (R3 BI) -> CsgOut
----------------------------------------------------------
-- [KC]olor
----------------------------------------------------------
data Color = RGB FType FType FType
deriving Show{-was:Text-}
----------------------------------------------------------
-- Matrix
----------------------------------------------------------
type Row = (FType,FType,FType,FType)
type Arr = (Row,Row,Row)
-- type (Fractional a) => R3 a = (a,a,a)
-- type (Fractional a) => R1 a = a
type R3 a = (a,a,a)
-- type R1 a = a
type R1 a = (a,a)
----------------------------------------------------------
-- Oct
----------------------------------------------------------
data Oct = O_Full Color | O_Empty | O_Sub Color [Oct]
deriving Show{-was:Text-}
----------------------------------------------------------
-- Quad
----------------------------------------------------------
data Quad = Q_Empty | Q_Full Color
| Q_Sub Color [Quad]
| Q_NewXY FType FType FType
deriving Show{-was:Text-}
----------------------------------------------------------
-- Vector
----------------------------------------------------------
type Vector = (FType,FType,FType)
type In = Interval FType
----------------------------------------------------------
-- Copyright
----------------------------------------------------------
copyright () = "Copyright 1990,1991,1992,1993 Duncan Sinclair."
e_mail () = "sinclair@dcs.gla.ac.uk"
tuple = (copyright,e_mail)
----------------------------------------------------------
|