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

Scene description file grammar

file ::= camera background materials group
camera ::= orthographicCamera
orthographicCamera ::= OrthographicCamera {
    center Vec3f
    direction Vec3f
    up Vec3f
    size float
}
background ::= Background {
    color Vec3f
}
materials ::= Materials {
    numMaterials int
    Material
^ numMaterials
}
Material ::= Material {
    diffuseColor Vec3f
}
group ::= Group {
    numObjects int
    (object3D | materialIndex object3D)
^ numObjects
}
object3D ::= group | sphere
sphere ::= Sphere {
    center Vec3f
    radius float
}
materialIndex ::= MaterialIndex int
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"