{- - 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) ----------------------------------------------------------