1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
(* objects.sml
*
* COPYRIGHT (c) 1992 AT&T Bell Laboratories
*
* Type declarations for the various objects in the ray tracer.
*)
structure Objects =
struct
datatype point = PT of {x : real, y : real, z : real}
datatype vector = VEC of {l : real, m : real, n : real}
datatype ray = Ray of {s : point, d : vector}
datatype camera = Camera of {
vp : point,
ul : point,
ur : point,
ll : point,
lr : point
}
datatype color = Color of {red : real, grn : real, blu : real}
datatype sphere = Sphere of {c : point, r : real, color : color}
datatype hit = Miss | Hit of {t : real, s : sphere}
datatype visible = Visible of {h : point, s : sphere}
datatype object
= TOP
| NUMBER of real
| NAME of string
| LIST of object list
| OPERATOR of object list -> object list
| MARK
| LITERAL of string
| UNMARK
| POINT of point
| VECTOR of vector
| RAY of ray
| CAMERA of camera
| COLOR of color
| SPHERE of sphere
| HIT
| VISIBLE
end (* Objects *)
|