# Guide to Scenic Syntax¶

This page summarizes the syntax of Scenic (excluding syntax inherited from Python). For more details, click the links for individual language constructs to go to the corresponding section of the Scenic Syntax Reference.

## Primitive Data Types¶

 Booleans expressing truth values Scalars representing distances, angles, etc. as floating-point numbers Vectors representing positions and offsets in space Headings representing orientations in space Vector Fields associating an orientation (i.e. a heading) to each point in space Regions representing sets of points in space

## Distributions¶

 (low, high) uniformly distributed in the interval Normal(mean, stdDev) normal distribution with the given mean and standard deviation Uniform(value, …) uniform over a finite set of values Discrete({value: weight, … }) discrete with given values and weights

## Objects¶

 Property Default Meaning position 0 @ 0 position in global coordinates viewDistance 50 distance for the ‘can see’ operator mutationScale 0 overall scale of mutations positionStdDev 1 mutation standard deviation for position heading 0 heading in global coordinates viewAngle 360 degrees angle for the ‘can see’ operator headingStdDev 5 degrees mutation standard deviation for heading width 1 width of bounding box (X axis) height 1 height of bounding box (Y axis) regionContainedIn workspace Region the object must lie within allowCollisions false whether collisions are allowed requireVisible true whether object must be visible from ego

## Specifiers¶

Illustration of the beyond, behind, and offset by specifiers. Each OrientedPoint (e.g. P) is shown as a bold arrow.

Specifier for Position

Meaning

at vector

Positions the object at the given global coordinates

offset by vector

Positions the object at the given coordinates in the local coordinate system of ego (which must already be defined)

offset along direction by vector

Positions the object at the given coordinates, in a local coordinate system centered at ego and oriented along the given direction

(left | right) of vector [by scalar]

Positions the object further to the left/right by the given scalar distance

(ahead of | behind) vector [by scalar]

As above, except placing the object ahead of or behind the given position

beyond vector by vector [from vector]

Positions the object at coordinates given by the second vector, centered at the first vector and oriented along the line of sight from the ego

visible [from (Point | OrientedPoint)]

Positions the object uniformly at random in the visible region of the ego, or of the given Point/OrientedPoint if given

Specifiers for position and optionally heading

Meaning

(in | on) region

Positions the object uniformly at random in the given Region

(left | right) of (OrientedPoint | Object) [by scalar]

Positions the object to the left/right of the given OrientedPoint, depending on the object’s width

(ahead of | behind) (OrientedPoint | Object) [by scalar ]

As above, except positioning the object ahead of or behind the given OrientedPoint, thereby depending on height

following vectorField [from vector ] for scalar

Positions the object at a point obtained by following the given vector field for the given distance starting from ego

Meaning

Orients the object along the given heading in global coordinates

facing vectorField

Orients the object along the given vector field at the object’s position

facing (toward | away from) vector

Orients the object toward/away from the given position (thereby depending on the object’s position)

Orients the object so that it has the given heading with respect to the line of sight from ego (or from the position given by the optional from vector)

## Operators¶

Illustration of several operators. Each OrientedPoint (e.g. P) is shown as a bold arrow.

Scalar Operators

Meaning

apparent heading of OrientedPoint [from vector ]

The apparent heading of the OrientedPoint, with respect to the line of sight from ego (or the position provided with the optional from vector )

distance [from vector ] to vector

The distance to the given position from ego (or the position provided with the optional from vector )

angle [from vector ] to vector

The heading to the given position from ego (or the position provided with the optional from vector)

Boolean Operators

Meaning

(Point | OrientedPoint) can see (vector | Object)

Whether or not a position or Objectis visible from a Point or OrientedPoint. V

(vector | Object) in region

Whether a position or Object lies in the region

Meaning

scalar deg

The given heading, interpreted as being in degrees

vectorField at vector

The heading specified by the vector field at the given position

direction relative to direction

The first direction, interpreted as an offset relative to the second direction

Vector Operators

Meaning

vector (relative to | offset by) vector

The first vector, interpreted as an offset relative to the second vector (or vice versa)

vector offset along direction by vector

The second vector, interpreted in a local coordinate system centered at the first vector and oriented along the given direction

Region Operators

Meaning

visible region

The part of the given region visible from ego

region visible from (Point | OrientedPoint)

The part of the given region visible from the given Point/OrientedPoint

OrientedPoint Operators

Meaning

vector relative to OrientedPoint

The given vector, interpreted in the local coordinate system of the OrientedPoint

OrientedPoint offset by vector

Equivalent to vector relative to OrientedPoint above

(front | back | left | right) of Object

The midpoint of the corresponding edge of the bounding box of the Object, oriented along its heading

(front | back) (left | right) of Object

The corresponding corner of the Object’s bounding box, also oriented along its heading

## Statements¶

Syntax

Meaning

import module

Imports a Scenic or Python module

param identifier = value, …

Defines global parameters of the scenario

require boolean

Defines a hard requirement

mutate identifier, … [by number ]

Enables mutation of the given list of objects