c  o  n  t  e  n  t  s
r e s e a r c h
C o n s t r u c t i n g   D e s i g n   C o n c e p t s :   A Computational Approach to the Synthesis of Architectural Form
Kotsopoulos S, Ph.D. Dissertation, Massachusetts Institute of Technology, 2005
V.     A Studio Exercise in Rule Based Composition





  


    




     3.1 THE DIGITAL INTERPRETER       
                                                             
      A shape grammar interpreter (Liew 2003) is used for the digital part of the exercise.  The interpreter, written in
      VisualLISP, uses a scripting language based on LISP to describe a rule.  Each rule has four parts: left-hand
      schema, right-hand schema, transformation mapping, and variable mapping.  A vector description format
      (Nagakura 1995) is used to describe the geometry and variables of a schema. The transformation mapping
      determines any transformation changes between the left-hand schema and the right-hand schema. The variable
      mappings define a relationship between the parameters of both schemata. A schema is composed of two parts,
      the geometry and the constraints on the geometry variables. The geometry of a schema is described using a
      series of vector displacements.  Each vector has 3 components: action, vector and label.  The action component
      determines if the shape is a line or a point.  The vector component describes the x and y displacement of the
      shape.  The label component determines the name of the label. For example, a horizontal parti line that is 5 units
      long is described as:
   (( action "line") (vector  5  0)  (label  "parti"))         
     A shape is described as a series of vector displacements that are connected from end to end.  For example, the
      following describes a “parti” square that is 5 units by 5 units in size.
   (((action "line") (vector 5 0)  (label "parti"))
   ((action "line") (vector 0 5)  (label "parti"))
   ((action "line") (vector -5 0) (label "parti"))
   ((action "line") (vector 0 -5) (label "parti")))
           
     To describe a parametric shape, the numbers in the vector displacement description are substituted with
      variables.hape is described as a series of vector displacements that are connected from end to end.
      The following describes a schema that finds all parti rectangles.
   (((action "line")  (vector l 0) (label "parti"))
   ((action "line") (vector 0 w) (label "parti"))
   ((action "line") (vector (- l) 0) (label "parti"))
   ((action "line") (vector 0 (- w)) (label "parti")))
     Restrictions can be set on the geometry variables to limit the type of sub-shapes found. Theses restrictions are
      added in the binding-constraints component of the schema. The following example restricts the size of the square
      to be less than 10 units.
   ((binding-constraints
   (l (< l 10))
   (w (< w 10)))