6.837 Intro to Computer Graphics, Fall 2003
Assignment 1: Ray Casting

Scene description file grammar

file ::= camera background group
camera ::= orthographicCamera
orthographicCamera ::= OrthographicCamera {
    center Vec3f
    direction Vec3f
    up Vec3f
    size float
}
background ::= Background {
    color Vec3f
}
group ::= Group {
    num_objects int
    (object3D | material object3D)
^ num_objects
}
object3D ::= group | sphere
sphere ::= Sphere {
    center Vec3f
    radius float
}
material ::= Material {
    diffuse_color Vec3f
}
Vec3f ::= float float float

How to read a grammar:

Start with the top level rule, in this case file. To expand a rule, substitute the appropriate definitions for each of the elements in bold. Some special notation:

| means "OR"
^ n means "exactly n elements"