#
Points and Rectangles

On this page:

## Points and Rectangles in SenseTalk

Any list of two numbers, or a text string consisting of two numbers separated by a comma, can be treated as a point. The first number represents the X coordinate of the point, and the second number the Y coordinate:

put [150,47] into pointA

put "250,98" into pointB

A rectangle can be represented by any list of two points, by a list of four numbers or by a text string consisting of four numbers separated by commas (representing two points). The two points indicate two opposite corners of the rectangle (either the top-left and bottom-right corners, or the bottom-left and top-right corners, listed in either order).

put [pointA,pointB] into myRect

put "15,28,19,72" into bounds

The is within operator can be used to test whether a point lies within a rectangle or one rectangle is completely within another (see the full description in Expressions):

if [18,35] is within bounds then scoreHit

### X, Y, Width, Height, Origin, and Size Functions

Behavior: These functions can be used to extract the various component values of a point or rectangle. The functions x and y can be used with points and rectangles to obtain the x and y coordinates of the point, or of the origin point of the rectangle. The origin and size functions can be used with rectangles to obtain the origin point (the minimum x and y values) and the size (a list of two numbers representing the width and height, respectively) of the rectangle. The width and height functions can be used with rectangles or sizes to obtain the width or height.

Syntax:

{the} x ofpointOrRectangle |
x (pointOrRectangle) |

{the} y ofpointOrRectangle |
y(pointOrRectangle) |

{the} width ofrectangle |
width(rectangle) |

{the} height ofrectangle |
height(rectangle) |

{the} origin ofrectangle |
origin(rectangle) |

{the} size ofrectangle |
size(rectangle) |

Syntax definitions for language elements follow these formatting guidelines:

- boldface: Indicates words and characters that must be typed exactly
- italic: Indicates expressions or other variable elements
- {} (curly braces): Indicate optional elements.
- [] (square brackets) separated by | (vertical pipes): Indicate alternative options where one or the other can be used, but not both.

Example syntax:

In this example, "open file" is required and must be typed exactly. "fileName" is a variable element; it is the path to and name of the file being opened. The following expression is optional and indicates why the file is being opened. If this expression is added, "for" is required and must be typed exactly. One of the following must be included, but only one, and they also must be typed exactly: "reading", "writing", "readwrite", "appending", or "updating".

Examples:

These functions are most commonly used with the dot (.), apostrophe-S (‘s) or “of” syntax, similar to accessing a property of an object, but keep in mind that these functions return read-only values only:

put pointA.x into horizontalLocation

put the y of pointA into verticalLocation

put myRect's origin into topLeftCorner

put the size of bounds into outerRect

put height of imageRect into verticalSpaceNeeded

### Top, Bottom, Left, Right, TopLeft, TopRight, BottomLeft, BottomRight, Center, TopCenter, BottomCenter, LeftCenter, and RightCenter Functions

Behavior: These functions can be used to find the coordinates of various parts of a rectangle.

The top, bottom, left and right functions return a single number which is the y coordinate of the top or bottom edge, or the x coordinate of the left or right edge, respectively, of a rectangle.

The topLeft, topRight, bottomLeft and bottomRight functions return the coordinates of the point at the indicated corner of a rectangle.

The center function returns the coordinates of the center of a rectangle, and the topCenter, bottomCenter, leftCenter and rightCenter functions return the coordinates of the point at the center of the indicated edge of a rectangle.

Syntax:

{the} top ofrectangle |
top(rectangle) |

{the} bottom ofrectangle |
bottom(rectangle) |

{the} left ofrectangle |
left(rectangle) |

{the} right ofrectangle |
right(rectangle) |

{the} topLeft ofrectangle |
topLeft(rectangle) |

{the} topRight ofrectangle |
topRight(rectangle) |

{the} bottomLeft ofrectangle |
bottomLeft(rectangle) |

{the} bottomRight ofrectangle |
bottomRight(rectangle) |

{the} center ofrectangle |
center(rectangle) |

{the} topCenter ofrectangle |
topCenter(rectangle) |

{the} bottomCenter ofrectangle |
bottomCenter(rectangle) |

{the} leftCenter ofrectangle |
leftCenter(rectangle) |

{the} rightCenter ofrectangle |
rightCenter(rectangle) |

Syntax definitions for language elements follow these formatting guidelines:

- boldface: Indicates words and characters that must be typed exactly
- italic: Indicates expressions or other variable elements
- {} (curly braces): Indicate optional elements.
- [] (square brackets) separated by | (vertical pipes): Indicate alternative options where one or the other can be used, but not both.

Example syntax:

In this example, "open file" is required and must be typed exactly. "fileName" is a variable element; it is the path to and name of the file being opened. The following expression is optional and indicates why the file is being opened. If this expression is added, "for" is required and must be typed exactly. One of the following must be included, but only one, and they also must be typed exactly: "reading", "writing", "readwrite", "appending", or "updating".

Examples:

These functions are most commonly used with the dot (.), apostrophe-S (‘s) or “of” syntax, similar to accessing a property of an object, but keep in mind that these are not properties, but functions which return read-only values:

put boundingBox.top into highestEdge

put the bottomRight of doorFrame into anchorPoint

put myRect's center into centerPoint

put the leftCenter of bounds into alignmentPoint