Shapes¶
Package name: jitx/shapes
Board Outline Example¶
val outline = RoundedRectangle(10.0, 5.0, 1.0)
setboard(defaultboard(4, outline))
;Sets the board outline to a rounded rectangle of dimensions 10 x 5 and corner
;radius 1.0
Summary¶
Data Types¶
PolygonWithArcs¶
Polygon With Arcs
Functions¶
Function  Description 

topolygon  Create the polygon approximation of the given polygon with arcs. 
PolygonWithArcs  Create a polygon with arcs from a sequence of points, arcs, and/or other nested 
outline  Create a polyline with width 0.0 which traces the outline of the given 
topolygonwitharcs (+ 4)  Create the polygon with arcs equivalent of the given circle. 
TextKind¶
Enum of Text shape kinds
Shape¶
Shape
Multis¶
Function  Description 

area  Return the area of the shape. 
upperextend  
lowerextend 
Functions¶
Function  Description 

Polyline  Create a polyline from a sequence of points, arcs, and/or other nested sequences 
PolygonWithArcs  Create a polygon with arcs from a sequence of points, arcs, and/or other nested 
subshapes  Generate a sequence of all subshapes of the given shape. Useful for iterating 
Line  Create a line from a sequence of points and/or other nested sequences of 
Union  Create a union shape from a sequence of shapes and/or other nested sequences. 
Dims¶
Dimensions
Functions¶
Function  Description 

transpose  Create the dimensions which swap the X and Y dimensions of a . 
enlarge  Create the dimensions which are the dimensions of a multiplied by b . 
min  Create the dimensions which are the minimum for each dimension of a and b . 
max  Create the dimensions which are the maximum for each dimension of a and b . 
Rectangle  Create a rectangle using Dims to specify the rectangle's dimensions. 
Operators¶
Function  Op.  Description 

plus  + 
Create the dimensions which are the sum of each dimension of a and b . 
Capsule¶
Capsule
Functions¶
Function  Description 

outline  Create a line with width 0.0 which approximately traces the outline of the 
topolygonwitharcs  Create the polygon with arcs equivalent of the given capsule. May be 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
topolygon  Create a polygon approximation of the capsule with approximately the given 
Capsule  Create a capsule anchored to a specified alignment with respect to the origin. 
normalize  Create an equivalent capsule with pose angle 0.0 for the given axisaligned 
Text¶
Text
ChamferedRectangle¶
Chamfered Rectangle
Constructors¶
Function  Description 

ChamferedRectangle  Constructor for defstruct ChamferedRectangle 
Functions¶
Function  Description 

topolygon  Create a polygon equivalent of the chamfered rectangle. May be clockwiseordered 
outline  Create a line with width 0.0 which traces the outline of the given chamfered 
normalize  Create an equivalent chamfered rectangle with pose angle 0.0 for the given 
ChamferedRectangle  Create a chamfered rectangle anchored to a specified alignment with respect to 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
Rectangle¶
Rectangle
Functions¶
Function  Description 

outline  Create a line with width 0.0 which traces the outline of the given rectangle. 
sw  Retrieve the lowerleft corner point of the rectangle. 
ne  Retrieve the upperright corner point of the rectangle. 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
topolygon  Create a polygon equivalent to the given rectangle. May be clockwiseordered if 
normalize  Create an equivalent rectangle with pose angle 0.0 for the given axisaligned 
Rectangle (+ 2)  Create a rectangle using Dims to specify the rectangle's dimensions. 
Centerable¶
Centerable
Segment¶
Line Segment
Functions¶
Function  Description 

center  Find the midpoint of the segment, i.e. the average of the start and end points 
angledegrees  Calculate the angle in degrees counterclockwise from the positive X axis of 
length  Calculate the length of the segment. 
Line¶
Line
Functions¶
Function  Description 

topolygon  Create the polygon equivalent of the FIRST SEGMENT of the given line. 
outline  
Line  Create a line from a sequence of points and/or other nested sequences of 
toline  Create the line which approximately traces the given arc, with approximately 
GeneralChamferedRectangle¶
Chamfered Rectangle
Constructors¶
Function  Description 

GeneralChamferedRectangle  Constructor for defstruct GeneralChamferedRectangle 
Functions¶
Function  Description 

topolygon  Create a polygon equivalent of the general chamfered rectangle. May be 
outline  Create a line with width 0.0 which traces the outline of the given general 
GeneralChamferedRectangle (+ 2)  Create a general chamfered rectangle using a CornerModifier to specify which 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
Polygon¶
Polygon
Functions¶
Function  Description 

circlepoints  Create a polygon consisting of points along an arc of a circle, specified with 
topolygon (+ 8)  Create a polygon equivalent to the given rectangle. May be clockwiseordered if 
outline  Create a line with width 0.0 which traces the outline of the given polygon. 
Polygon  Create a polygon from a sequence of points and/or other nested sequences of 
Difference¶
Difference
Constructors¶
Function  Description 

Difference  Constructor for defstruct Difference 
Polyline¶
Polyline
Functions¶
Function  Description 

Polyline  Create a polyline from a sequence of points, arcs, and/or other nested sequences 
topolygon  Create the polygon approximation of the given polyline. 
outline (+ 1)  Create a polyline with width 0.0 which traces the outline of the given 
RoundedRectangle¶
Rounded Rectangle
Constructors¶
Function  Description 

RoundedRectangle  Constructor for defstruct RoundedRectangle 
Functions¶
Function  Description 

outline  Create a line with width 0.0 which approximately traces the outline of the 
RoundedRectangle  Create a rounded rectangle anchored to a specified alignment with respect to the 
topolygonwitharcs  Create the polygon with arcs equivalent of the given rounded rectangle. May be 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
topolygon  Create a polygon approximation of the rounded rectangle. May be 
normalize  Create an equivalent rounded rectangle with pose angle 0.0 for the given 
GeneralRoundedRectangle¶
General Rounded Rectangle
Constructors¶
Function  Description 

GeneralRoundedRectangle  Constructor for defstruct GeneralRoundedRectangle 
Functions¶
Function  Description 

topolygon  Create a polygon approximation of the general rounded rectangle. May be 
outline  Create a line with width 0.0 which approximately traces the outline of the 
GeneralRoundedRectangle (+ 2)  Create a general rounded rectangle using a CornerModifier to specify which 
topolygonwitharcs  Create the polygon with arcs equivalent of the given general rounded rectangle. 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
CornerModifier¶
Enum for General Rounded Rectangle Corner Combinations
Functions¶
Function  Description 

GeneralRoundedRectangle (+ 1)  Create a general rounded rectangle using a CornerModifier to specify which 
GeneralChamferedRectangle (+ 1)  Create a general chamfered rectangle using a CornerModifier to specify which 
Union¶
Union
Functions¶
Function  Description 

Union  Create a union shape from a sequence of shapes and/or other nested sequences. 
Point¶
Point
Functions¶
Function  Description 

iy  The truncated integer value of the Y coordinate of the point. 
Point  Create a point from two integer coordinates. 
min  Create the point which is the result of taking the minimum coordinate along each axis of the coordinates of a and b . 
max  Create the point which is the result of taking the maximum coordinate along each axis of the coordinates of a and b . 
center  Find the midpoint of the segment, i.e. the average of the start and end points 
get  Retrieve the X or Y coordinate of the point, using an index to select which 
Polygon  Create a polygon from a sequence of points and/or other nested sequences of 
ix  The truncated integer value of the X coordinate of the point. 
Operators¶
Function  Op.  Description 

minus   
Create the point which is the result of subtracting the coordinates of b from 
divide  / 
Create the point which is the result of dividing the coordinates of a by n . 
negate   
Create the point with both coordinates negated of the given point. 
plus  + 
Create the point which is the result of adding the coordinates of a and b . 
times  * 
Create the point which is the result of multiplying the coordinates of a by 
Circle¶
Circle
Functions¶
Function  Description 

topolygon  Create a polygon approximation of the circle with the given number of points. 
Circle (+ 2)  Create a circle using a center X coordinate, center Y coordinate, and radius. 
outline  Create a line with width 0.0 which approximately traces the outline of the 
topolygonwitharcs  Create the polygon with arcs equivalent of the given circle. 
Arc¶
Arc
Functions¶
Function  Description 

topolygon (+ 1)  Create a polygon approximation of the region enclosed by the arc and the chord 
outline  Create a line with width 0.0 which approximately traces the given arc with 
Arc  Create an arc, specifying the center with separate X and Y coordinate values 
toline  Create the line which approximately traces the given arc, with approximately 
length  Calculate the length of the arc. 
EmptyShape¶
Empty Shape
Constructors¶
Function  Description 

EmptyShape  Constructor for defstruct EmptyShape 
DShape¶
D Shape
Functions¶
Function  Description 

topolygon  Create a polygon approximation of the D shape. May be clockwiseordered if the 
outline  Create a line with width 0.0 which approximately traces the outline of the 
topolygonwitharcs  Create the polygon with arcs equivalent of the given D shape. May be 
DShape  Create a D shape anchored to a specified alignment with respect to the origin. 
axisaligned?  Return true if the shape's pose angle is aligned with the X or Y axis. 
General Definitions¶
Function  Description 

iy  The truncated integer value of the Y coordinate of the pose's center. 
iangle  The truncated integer value of the pose's angle. 
anglemod90?  Return true if the angle of the pose is an exact multiple of 90 degrees. 
ix  The truncated integer value of the X coordinate of the pose's center. 
Definitions¶
PolygonWithArcs¶
Polygon With Arcs
public defstruct PolygonWithArcs <: Shape & HasMetaUtils
elements: Tuple<PointArc>
elements: Tuple<PointArc>
 Elements of this polygon with arc's boundary in counterclockwise order. Must have at least 3 points or 1 arc.
A polygon which may have sides which are circular arcs instead of line segments. Specified with a tuple of elements (points or arcs) in counterclockwise order. Must be nondegenerate (have at least 3 vertices or at least 1 arc) and nonselfintersecting. May be concave. The end point of each element is connected to the start point of the next element (a single point is its own start and end point). The last element is connected to the first element. The start and end points of arcs DO NOT need to also be included as standalone points in the elements tuple, doing so will result in duplicated points.
Functions¶
topolygon¶
Create the polygon approximation of the given polygon with arcs.
public defn topolygon (p:PolygonWithArcs, num:Int)
p: PolygonWithArcs
 The polygon with arcs to create the polygon approximation of.num: Int
 Controls the size of the sectors the arcs of the polygon with arcs are split into for approximation. There arenum
of the sectors in a whole circle.
PolygonWithArcs¶
Create a polygon with arcs from a sequence of points, arcs, and/or other nested
public defn PolygonWithArcs (elements:Seqable<ShapeSeqable>)
elements: Seqable<ShapeSeqable>
 The sequence of points, arcs, and/or other nested sequences to make the polygon with arcs from.
sequences. The sequence is "flattened" first to create the tuple of points and arcs used.
outline¶
Create a polyline with width 0.0
which traces the outline of the given
public defn outline (p:PolygonWithArcs) > Polyline
p: PolygonWithArcs
 The polygon with arcs to create the outline of. Returns
Polyline
polygon with arcs.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given circle.
public defn topolygonwitharcs (c:Circle) > PolygonWithArcs
c: Circle
 The circle to create the polygon with arcs s equivalent of. Returns
PolygonWithArcs
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given capsule. May be
public defn topolygonwitharcs (c:Capsule) > PolygonWithArcs
c: Capsule
 The capsule to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
clockwiseordered if the capsule's pose is flipped.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given D shape. May be
public defn topolygonwitharcs (d:DShape) > PolygonWithArcs
d: DShape
 The D shape to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
clockwiseordered if the D shape's pose is flipped.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given rounded rectangle. May be
public defn topolygonwitharcs (r:RoundedRectangle) > PolygonWithArcs
r: RoundedRectangle
 The rounded rectangle to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
clockwiseordered if the rounded rectangle's pose is flipped.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given general rounded rectangle.
public defn topolygonwitharcs (r:GeneralRoundedRectangle) > PolygonWithArcs
r: GeneralRoundedRectangle
 The general rounded rectangle to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
May be clockwiseordered if the general rounded rectangle 's pose is flipped.
TextKind¶
Enum of Text shape kinds
public defenum TextKind <: Equalable & Hashable

StrokeFont

TrueTypeFont

BarCode
These follow Altium's definition of TextKind
Shape¶
Shape
public deftype Shape <: Equalable & Hashable & HasMetaUtils
Generic type which all shapes are a subtype of. Every shape has an area which
can be calculated by calling area
on the shape.
Multis¶
area¶
Return the area of the shape.
public defmulti area (sh:Shape) > Double
 Returns
Double
upperextend¶
public defmulti upperextend (sh:Shape) > Double
 Returns
Double
lowerextend¶
public defmulti lowerextend (sh:Shape) > Double
 Returns
Double
Functions¶
Polyline¶
Create a polyline from a sequence of points, arcs, and/or other nested sequences
public defn Polyline (width:Double, elements:Seqable<ShapeSeqable>)
elements: Seqable<ShapeSeqable>
 The sequence of points, arcs, and/or other nested sequences to make the polyline from.
of points and/or arcs. The sequence is "flattened" first to create the tuple of points and arcs used.
PolygonWithArcs¶
Create a polygon with arcs from a sequence of points, arcs, and/or other nested
public defn PolygonWithArcs (elements:Seqable<ShapeSeqable>)
elements: Seqable<ShapeSeqable>
 The sequence of points, arcs, and/or other nested sequences to make the polygon with arcs from.
sequences. The sequence is "flattened" first to create the tuple of points and arcs used.
subshapes¶
Generate a sequence of all subshapes of the given shape. Useful for iterating
public defn subshapes (s:Shape) > Seq<Shape>
s: Shape
 The shape whose subshapes to generate the sequence of. Returns
Seq<Shape>
over subshapes of a union shape.
Line¶
Create a line from a sequence of points and/or other nested sequences of
public defn Line (width:Double, pts:Seqable<ShapeSeqable>)
pts: Seqable<ShapeSeqable>
 The sequence of points and/or nested sequences of points to make the line from.
points. The sequence is "flattened" first to create the tuple of points used.
Union¶
Create a union shape from a sequence of shapes and/or other nested sequences.
public defn Union (elements:Seqable<ShapeSeqable>)
elements: Seqable<ShapeSeqable>
 The sequence of shapes and/or other nested sequences to make the union shape from.
The sequence is "flattened" first to create the tuple of shapes used.
Dims¶
Dimensions
public defstruct Dims <: Equalable & Hashable
x: Double
y: Double

x: Double
 Xaxis dimension Also known as width. 
y: Double
 Yaxis dimension Also known as length or height.
Specifies the horizontal and vertical extents of an object, usually a shape.
Functions¶
transpose¶
Create the dimensions which swap the X and Y dimensions of a
.
public defn transpose (a:Dims) > Dims
 Returns
Dims
enlarge¶
Create the dimensions which are the dimensions of a
multiplied by b
.
public defn enlarge (a:Dims, b:Double) > Dims
 Returns
Dims
min¶
Create the dimensions which are the minimum for each dimension of a
and b
.
public defn min (a:Dims, b:Dims) > Dims
 Returns
Dims
max¶
Create the dimensions which are the maximum for each dimension of a
and b
.
public defn max (a:Dims, b:Dims) > Dims
 Returns
Dims
Rectangle¶
Create a rectangle using Dims to specify the rectangle's dimensions.
public defn Rectangle (d:Dims, p:Pose = ?)
d: Dims
 Dimensions of the rectanglep: Pose
 Pose of the rectangle. Default is(0.0, 0.0)
with no rotation and no flip.
Operators¶
plus +
¶
Create the dimensions which are the sum of each dimension of a
and b
.
public defn plus (a:Dims, b:Dims) > Dims
 Returns
Dims
Capsule¶
Capsule
public defstruct Capsule <: Shape & Centerable & HasMetaUtils
height: Double
pose: Pose
width: Double

height: Double
 Height of this capsule. Must be nonnegative. 
pose: Pose
 Pose of this capsule. Default value is(0.0, 0.0)
with no rotation and no flip. 
width: Double
 Width of this capsule. Must be nonnegative.
A pilllike shape formed by rounding (filleting) the corners of a rectangle to a radius of half of the shorter dimension, such that the two corners on each short side merge into one semicircle. If the width and height are equal, the shape is a circle. The pose center is the center of the rectangle. The flip of the pose affects the ordering of the capsule's points when converted to a polygon (clockwise when flipped, otherwise counterclockwise).
Constructors¶
Capsule¶
Constructor for defstruct Capsule
public defn Capsule (width:Double, height:Double, pose:Pose = ?)
Functions¶
outline¶
Create a line with width 0.0
which approximately traces the outline of the
public defn outline (r:Capsule)
r: Capsule
 The capsule to create the approximate outline of.
given capsule, with exact line segments for the straight sides and approximate line segments for sectors of the capsule's two semicircles. Each sector is 1/32 of a whole circle.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given capsule. May be
public defn topolygonwitharcs (c:Capsule) > PolygonWithArcs
c: Capsule
 The capsule to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
clockwiseordered if the capsule's pose is flipped.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
topolygon¶
Create a polygon approximation of the capsule with approximately the given
public defn topolygon (c:Capsule, num:Int) > Polygon
c: Capsule
 The capsule to create the approximate equivalent polygon of.num: Int
 The approximate number of points to target for the returned polygon. Returns
Polygon
number of points. May be clockwiseordered if the capsule's pose is flipped.
Note: does not work well for num
< 3.
Note: may give a polygon with up to num + 2
points
Capsule¶
Create a capsule anchored to a specified alignment with respect to the origin.
public defn Capsule (anchor:Anchor, w:Double, h:Double)
anchor: Anchor
 Anchor to align the capsule with to the origin.w: Double
 Width of the capsule.h: Double
 Height of the capsule.
The alignment is performed with respect to the rectangular component inside the capsule, and not the bounding box of the capsule.
normalize¶
Create an equivalent capsule with pose angle 0.0
for the given axisaligned
public defn normalize (r:Capsule)
r: Capsule
 The capsule to create the equivalent of. Throws
Error
 if the capsule's pose angle is not axisaligned.
capsule.
Text¶
Text
public defstruct Text <: Shape & HasMetaUtils
anchor: Anchor
font: String
hide?: TrueFalse
pose: Pose
size: Double
string: String
textkind: TextKind
type: SymbolFalse

anchor: Anchor
 The alignment of this text shape with the pose. 
font: String
 The name of the font use for this text shape. 
hide?: TrueFalse
 Whether or not this text shape is hidden. 
pose: Pose
 The location and flippedness of this text shape. 
size: Double
 The height of each character in this text shape. 
string: String
 The actual character text of this text shape. 
textkind: TextKind
 The kind of text of this text shape. 
type: SymbolFalse
 The type of the text shape.
A shape consisting of alphabetical text of specified size and location.
Constructors¶
Text¶
Constructor for defstruct Text
public defn Text (string:String, size:Double, anchor:Anchor, pose:Pose, font:String = ?, textkind:TextKind = ?, hide?:TrueFalse = ?, type:SymbolFalse = ?)
ChamferedRectangle¶
Chamfered Rectangle
public defstruct ChamferedRectangle <: Shape & Centerable & HasMetaUtils
height: Double
pose: Pose
radius: Double
width: Double

height: Double
 Height of this chamfered rectangle. Must be nonnegative. 
pose: Pose
 Pose of this chamfered rectangle. Default value is(0.0, 0.0)
with no rotation and no flip. 
radius: Double
 Radius of the chamfered corners of this chamfered rectangle. Must be nonnegative and at most half of the minimum of the width and height. 
width: Double
 Width of this chamfered rectangle. Must be nonnegative.
A rectangle with chamfered corners. All four corners are chamfered by the same amount. Has a width, height, chamfer radius and pose. The chamfer radius is the length of the two equal legs of the isosceles right triangle cut from each corner. The pose center is the center of the rectangle. The flip of the pose affects the ordering of the chamfered rectangle's points when converted to a polygon (clockwise when flipped, otherwise counterclockwise).
Constructors¶
ChamferedRectangle¶
Constructor for defstruct ChamferedRectangle
public defn ChamferedRectangle (width:Double, height:Double, radius:Double, pose:Pose = ?)
Functions¶
topolygon¶
Create a polygon equivalent of the chamfered rectangle. May be clockwiseordered
public defn topolygon (r:ChamferedRectangle) > Polygon
r: ChamferedRectangle
 The chamfered rectangle to create the equivalent polygon of. Returns
Polygon
if the chamfered rectangle's pose is flipped.
outline¶
Create a line with width 0.0
which traces the outline of the given chamfered
public defn outline (r:ChamferedRectangle)
r: ChamferedRectangle
 The chamfered rectangle to create the outline of.
rectangle.
normalize¶
Create an equivalent chamfered rectangle with pose angle 0.0
for the given
public defn normalize (r:ChamferedRectangle)
r: ChamferedRectangle
 The chamfered rectangle to create the equivalent of. Throws
Error
 if the chamfered rectangle's pose angle is not axisaligned.
axisaligned chamfered rectangle.
ChamferedRectangle¶
Create a chamfered rectangle anchored to a specified alignment with respect to
public defn ChamferedRectangle (anchor:Anchor, w:Double, h:Double, r:Double)
anchor: Anchor
 Anchor to align the chamfered rectangle with to the origin.w: Double
 Width of the chamfered rectangle.h: Double
 Height of the chamfered rectangle.r: Double
 Corner chamfer radius of the chamfered rectangle.
the origin. The alignment is performed with respect to the unchamfered rectangular bounding box of the chamfered rectangle.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
Rectangle¶
Rectangle
public defstruct Rectangle <: Shape & Centerable & HasMetaUtils
height: Double
pose: Pose
width: Double

height: Double
 Height of this rectangle. Must be nonnegative. 
pose: Pose
 Pose of this rectangle. Default value is(0.0, 0.0)
with no rotation and no flip. 
width: Double
 Width of this rectangle. Must be nonnegative.
A rectangle with a width, height, and pose. The pose center is the center of the rectangle. May be nonaxisaligned if the pose has nonzero rotation angle. The flip of the pose affects the ordering of the rectangle's points when converted to a polygon (clockwise when flipped, otherwise counterclockwise).
Constructors¶
Rectangle¶
Constructor for defstruct Rectangle
public defn Rectangle (width:Double, height:Double, pose:Pose = ?)
Functions¶
outline¶
Create a line with width 0.0
which traces the outline of the given rectangle.
public defn outline (r:Rectangle)
r: Rectangle
 The rectangle to create the outline of.
sw¶
Retrieve the lowerleft corner point of the rectangle.
public defn sw (r:Rectangle)
r: Rectangle
 The rectangle to retrieve the lowerleft corner point of.
ne¶
Retrieve the upperright corner point of the rectangle.
public defn ne (r:Rectangle)
r: Rectangle
 The rectangle to retrieve the bottomleft corner point of.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
topolygon¶
Create a polygon equivalent to the given rectangle. May be clockwiseordered if
public defn topolygon (r:Rectangle) > Polygon
r: Rectangle
 The rectangle to create the equivalent polygon of. Returns
Polygon
the rectangle's pose is flipped.
normalize¶
Create an equivalent rectangle with pose angle 0.0
for the given axisaligned
public defn normalize (r:Rectangle)
r: Rectangle
 The rectangle to create the equivalent of. Throws
Error
 if the rectangle's pose angle is not axisaligned.
rectangle.
Rectangle¶
Create a rectangle using Dims to specify the rectangle's dimensions.
public defn Rectangle (d:Dims, p:Pose = ?)
d: Dims
 Dimensions of the rectanglep: Pose
 Pose of the rectangle. Default is(0.0, 0.0)
with no rotation and no flip.
Rectangle¶
Create a rectangle anchored to a specified alignment with respect to the origin.
public defn Rectangle (anchor:Anchor, w:Double, h:Double)
anchor: Anchor
 Anchor to align the rectangle with to the origin.w: Double
 Width of the rectangle.h: Double
 Height of the rectangle.
Rectangle¶
Create a rectangle with the coordinates of its bottomleft and upperright
public defn Rectangle (x1:Double, y1:Double, x2:Double, y2:Double)
x1: Double
 X coordinate of the bottomleft corner of the rectangle.y1: Double
 Y coordinate of the bottomleft corner of the rectangle.x2: Double
 X coordinate of the upperright corner of the rectangle.y2: Double
 Y coordinate of the upperright corner of the rectangle.
points.
Centerable¶
Centerable
public deftype Centerable
Shapes which are subtypes of this type have a defined center point and pose
angle, which can be obtained by calling the center
and angle
functions,
respectively, on the shape.
Multis¶
angle¶
public defmulti angle (sh:Centerable) > Double
 Returns
Double
center¶
public defmulti center (sh:Centerable) > Point
 Returns
Point
Segment¶
Line Segment
public defstruct Segment <: Shape & HasMetaUtils
source: Point
target: Point

source: Point
 Start point of this line segment. 
target: Point
 End point of this line segment.
A line segment specified by its start and end point.
Constructors¶
Segment¶
Constructor for defstruct Segment
public defn Segment (source:Point, target:Point)
Functions¶
center¶
Find the midpoint of the segment, i.e. the average of the start and end points
public defn center (seg:Segment) > Point
seg: Segment
 The segment to find the midpoint of. Returns
Point
of the segment.
angledegrees¶
Calculate the angle in degrees counterclockwise from the positive X axis of
public defn angledegrees (seg:Segment) > Double
seg: Segment
 The segment to find the angle of. Returns
Double
the vector from the source to the target of the segment.
length¶
Calculate the length of the segment.
public defn length (seg:Segment) > Double
seg: Segment
 The segment to calculate the length of. Returns
Double
Line¶
Line
public defstruct Line <: Shape & HasMetaUtils
points: Tuple<Point>
width: Double

points: Tuple<Point>
 Points along this line's centerline. Must be at least 2 points. 
width: Double
 Thickness of this line. Must be nonnegative.
A thick polyline consisting of one or more straight line segments. Has a width (thickness) and a tuple of points along its centerline.
Functions¶
topolygon¶
Create the polygon equivalent of the FIRST SEGMENT of the given line.
public defn topolygon (l:Line, sixvertices?:TrueFalse = ?)
l: Line
 The line to create the polygon equivalent of.sixvertices?: TrueFalse
 Whether or not to include an extra vertex at either end to create a six point polygon instead of four. Throws
Error
 if the line's width is not positive
WARNING: Only does the first segment of the line, not all segments.
outline¶
public defn outline (l:Line)
Line¶
Create a line from a sequence of points and/or other nested sequences of
public defn Line (width:Double, pts:Seqable<ShapeSeqable>)
pts: Seqable<ShapeSeqable>
 The sequence of points and/or nested sequences of points to make the line from.
points. The sequence is "flattened" first to create the tuple of points used.
toline¶
Create the line which approximately traces the given arc, with approximately
public defn toline (a:Arc, num:Int) > Line
a: Arc
 The arc to create the approximate line of.num: Int
 The approximate number of points in the returned line. Returns
Line
the given number of points.
GeneralChamferedRectangle¶
Chamfered Rectangle
public defstruct GeneralChamferedRectangle <: Shape & Centerable & HasMetaUtils
height: Double
pose: Pose
radii: Tuple<Double>
width: Double

height: Double
 Height of this general chamfered rectangle. Must be nonnegative. 
pose: Pose
 Pose of this general chamfered rectangle. Default value is(0.0, 0.0)
with no rotation and no flip. 
radii: Tuple<Double>
 Tuple of the four radii of the chamfered corners of this general chamfered rectangle, in counterclockwise order starting from the bottom left. Must all be nonnegative. The sum of the radii of the two corners on each side must not exceed the length of the side. 
width: Double
 Width of this general chamfered rectangle. Must be nonnegative.
A rectangle with chamfered corners of (potentially) different radii. Has a
width, height, a tuple of four corner chamfer radii, and pose. The pose center
is the center of the rectangle. The chamfer radius of each corner is the equal
length of the two legs of the isosceles right triangle which are cut from the
corner. A corner chamfer radius of 0.0
indicates no chamfer for the corner.
The tuple of radii is ordered starting with the bottomleft corner going
counterclockwise. The flip of the pose affects the ordering of the general
rounded rectangle's points when converted to a polygon (clockwise when flipped,
otherwise counterclockwise).
Constructors¶
GeneralChamferedRectangle¶
Constructor for defstruct GeneralChamferedRectangle
public defn GeneralChamferedRectangle (width:Double, height:Double, radii:Tuple<Double>, pose:Pose = ?)
Functions¶
topolygon¶
Create a polygon equivalent of the general chamfered rectangle. May be
public defn topolygon (r:GeneralChamferedRectangle) > Polygon
r: GeneralChamferedRectangle
 The general chamfered rectangle to create the equivalent polygon of. Returns
Polygon
clockwiseordered if the general chamfered rectangle's pose is flipped.
outline¶
Create a line with width 0.0
which traces the outline of the given general
public defn outline (r:GeneralChamferedRectangle)
r: GeneralChamferedRectangle
 The general chamfered rectangle to create the outline of.
chamfered rectangle.
GeneralChamferedRectangle¶
Create a general chamfered rectangle using a CornerModifier
to specify which
public defn GeneralChamferedRectangle (w:Double, h:Double, r:Double, m:CornerModifier, p:Pose = ?)
w: Double
 Width of the general chamfered rectangle.h: Double
 Height of the general chamfered rectangle.r: Double
 Corner radius of the general chamfered rectangle.m: CornerModifier
 Which corners to make chamfered of the general chamfered rectangle.p: Pose
 Pose of the general chamfered rectangle. Default is(0.0, 0.0)
with no rotation and no flip.
corners are chamfered.
GeneralChamferedRectangle¶
Create a general chamfered rectangle anchored to a specified alignment with
public defn GeneralChamferedRectangle (anchor:Anchor, w:Double, h:Double, r:Double, m:CornerModifier)
anchor: Anchor
 Anchor to align the general chamfered rectangle with to the origin.w: Double
 Width of the general chamfered rectangle.h: Double
 Height of the general chamfered rectangle.r: Double
 Corner radius of the general chamfered rectangle.m: CornerModifier
 Which corners to make chamfered of the general chamfered rectangle.
respect to the origin and using a CornerModifier
to specify which
corners are chamfered.
GeneralChamferedRectangle¶
Create a general chamfered rectangle anchored to a specified alignment with
public defn GeneralChamferedRectangle (anchor:Anchor, w:Double, h:Double, r:Tuple<Double>)
anchor: Anchor
 Anchor to align the general chamfered rectangle with to the origin.w: Double
 Width of the general chamfered rectangle.h: Double
 Height of the general chamfered rectangle.r: Tuple<Double>
 Tuple of four chamfer radii of the corners of the general chamfered rectangle, starting from the bottomleft going counterclockwise.
respect to the origin.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
Polygon¶
Polygon
public defstruct Polygon <: Shape & HasMetaUtils
points: Tuple<Point>
points: Tuple<Point>
 Vertices of this polygon in counterclockwise order.
A polygon specified by its vertices in counterclockwise order. Must be nondegenerate (have at least 3 vertices) and be nonselfintersecting. May be concave.
Functions¶
circlepoints¶
Create a polygon consisting of points along an arc of a circle, specified with
public defn circlepoints (radius:Double, off:Double, tot:Double, num:Int) > Polygon
radius: Double
 The radius of the arc to sample points from.off: Double
 The starting angle of the arc to sample points from.tot: Double
 The counterclockwise sweep angle of the arc to sample points from.num: Int
 The number of divisions to divide the arc into. The total number of points of the polygon will benum + 1
. Returns
Polygon
a starting angle, sweep angle, and number of divisions.
topolygon¶
Create a polygon equivalent to the given rectangle. May be clockwiseordered if
public defn topolygon (r:Rectangle) > Polygon
r: Rectangle
 The rectangle to create the equivalent polygon of. Returns
Polygon
the rectangle's pose is flipped.
topolygon¶
Create a polygon approximation of the capsule with approximately the given
public defn topolygon (c:Capsule, num:Int) > Polygon
c: Capsule
 The capsule to create the approximate equivalent polygon of.num: Int
 The approximate number of points to target for the returned polygon. Returns
Polygon
number of points. May be clockwiseordered if the capsule's pose is flipped.
Note: does not work well for num
< 3.
Note: may give a polygon with up to num + 2
points
topolygon¶
Create a polygon approximation of the rounded rectangle. May be
public defn topolygon (r:RoundedRectangle, num:Int) > Polygon
r: RoundedRectangle
 The rounded rectangle to create the approximate equivalent polygon of.num: Int
 The approximate total number of points to target for the rounded portions of the returned polygon. Returns
Polygon
clockwiseordered if the rounded rectangle's pose is flipped.
Note: does not work well for num
< 4.
Note: recommend that num
is a multiple of 4
topolygon¶
Create a polygon equivalent of the chamfered rectangle. May be clockwiseordered
public defn topolygon (r:ChamferedRectangle) > Polygon
r: ChamferedRectangle
 The chamfered rectangle to create the equivalent polygon of. Returns
Polygon
if the chamfered rectangle's pose is flipped.
topolygon¶
Create a polygon approximation of the D shape. May be clockwiseordered if the
public defn topolygon (r:DShape, num:Int) > Polygon
r: DShape
 The D shape to create the approximate equivalent polygon of.num: Int
 Four times the approximate number of points to target for each rounded portion of the returned polygon. Returns
Polygon
D shape's pose is flipped.
Note: does not work well for num
< 4.
Note: recommend that num
is a multiple of 4
topolygon¶
Create a polygon approximation of the general rounded rectangle. May be
public defn topolygon (r:GeneralRoundedRectangle, num:Int) > Polygon
r: GeneralRoundedRectangle
 The general rounded rectangle to create the approximate equivalent polygon of.num: Int
 Four times the approximate number of points to target for each rounded portion of the returned polygon. Returns
Polygon
clockwiseordered if the general rounded rectangle's pose is flipped.
Note: does not work well for num
< 4.
Note: recommend that num
is a multiple of 4
topolygon¶
Create a polygon equivalent of the general chamfered rectangle. May be
public defn topolygon (r:GeneralChamferedRectangle) > Polygon
r: GeneralChamferedRectangle
 The general chamfered rectangle to create the equivalent polygon of. Returns
Polygon
clockwiseordered if the general chamfered rectangle's pose is flipped.
topolygon¶
Create a polygon approximation of the circle with the given number of points.
public defn topolygon (c:Circle, num:Int) > Polygon
c: Circle
 The circle to create the approximate polygon of.num: Int
 The number of points in the returned polygon. Returns
Polygon
topolygon¶
Create a polygon approximation of the region enclosed by the arc and the chord
public defn topolygon (a:Arc, num:Int) > Polygon
a: Arc
 The arc to create the approximate polygon of.num: Int
 The approximate number of points in the returned polygon. Returns
Polygon
connecting the start and end points of the arc, with approximately the given number of points.
outline¶
Create a line with width 0.0
which traces the outline of the given polygon.
public defn outline (p:Polygon)
p: Polygon
 The polygon to create the outline of.
Polygon¶
Create a polygon from a sequence of points and/or other nested sequences of
public defn Polygon (pts:Seqable<PointSeqable>)
pts: Seqable<PointSeqable>
 The sequence of points and/or nested sequences of points to make the polygon from.
points. The sequence is "flattened" first to create the tuple of points used.
Difference¶
Difference
public defstruct Difference <: Shape & HasMetaUtils
shape1: Shape
shape2: Shape

shape1: Shape
 The shape from which there is a subtraction to form this difference shape. 
shape2: Shape
 The shape that is subtracted fromshape1
to form this difference shape.
A shape formed from subtracting one shape from another. The subtraction is not commutative, i.e. swapping the two shapes that comprise a difference shape will produce a different shape.
Constructors¶
Difference¶
Constructor for defstruct Difference
public defn Difference (shape:Shape, shape:Shape)
Polyline¶
Polyline
public defstruct Polyline <: Shape & HasMetaUtils
elements: Tuple<PointArc>
width: Double

elements: Tuple<PointArc>
 Elements along this line's centerline. Must have at least 2 points or 1 arc. 
width: Double
 Thickness of this polyline. Must be nonnegative.
A thick polyline with a width (thickness) and a tuple of one or more elements. Each element is either a single point or a circular arc and represents a portion of the centerline of the polyline. The end point of each element (except the last element) is connected to the start point of the next element (a single point is its own start and end point). The start and end points of arcs DO NOT need to also be included as standalone points in the elements tuple, doing so will result in duplicated points.
Functions¶
Polyline¶
Create a polyline from a sequence of points, arcs, and/or other nested sequences
public defn Polyline (width:Double, elements:Seqable<ShapeSeqable>)
elements: Seqable<ShapeSeqable>
 The sequence of points, arcs, and/or other nested sequences to make the polyline from.
of points and/or arcs. The sequence is "flattened" first to create the tuple of points and arcs used.
topolygon¶
Create the polygon approximation of the given polyline.
public defn topolygon (l:Polyline)
l: Polyline
 The polyline to create the polygon approximation of. Throws
Error
 if the polyline's width is not positive
outline¶
Create a polyline with width 0.0
which traces the outline of the given
public defn outline (p:PolygonWithArcs) > Polyline
p: PolygonWithArcs
 The polygon with arcs to create the outline of. Returns
Polyline
polygon with arcs.
outline¶
public defn outline (l:Polyline)
RoundedRectangle¶
Rounded Rectangle
public defstruct RoundedRectangle <: Shape & Centerable & HasMetaUtils
height: Double
pose: Pose
radius: Double
width: Double

height: Double
 Height of this rounded rectangle. Must be nonnegative. 
pose: Pose
 Pose of this rounded rectangle. Default value is(0.0, 0.0)
with no rotation and no flip. 
radius: Double
 Radius of the rounded corners of this rounded rectangle. Must be nonnegative and at most half of the minimum of the width and height. 
width: Double
 Width of this rounded rectangle. Must be nonnegative.
A rectangle with rounded (filleted) corners. All four corners are rounded to the same radius. Has a width, height, corner radius and pose. The pose center is the center of the rectangle. The flip of the pose affects the ordering of the rounded rectangle's points when converted to a polygon (clockwise when flipped, otherwise counterclockwise).
Constructors¶
RoundedRectangle¶
Constructor for defstruct RoundedRectangle
public defn RoundedRectangle (width:Double, height:Double, radius:Double, pose:Pose = ?)
Functions¶
outline¶
Create a line with width 0.0
which approximately traces the outline of the
public defn outline (r:RoundedRectangle)
r: RoundedRectangle
 The rounded rectangle to create the approximate outline of.
given rounded rectangle, with exact line segments for the straight sides and approximate line segments for sectors of the rounded corners. Each sector is 1/32 of a whole circle.
RoundedRectangle¶
Create a rounded rectangle anchored to a specified alignment with respect to the
public defn RoundedRectangle (anchor:Anchor, w:Double, h:Double, r:Double)
anchor: Anchor
 Anchor to align the rounded rectangle with to the origin.w: Double
 Width of the rounded rectangle.h: Double
 Height of the rounded rectangle.r: Double
 Corner radius of the rounded rectangle.
origin. The alignment is performed with respect to the unrounded rectangular bounding box of the rounded rectangle.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given rounded rectangle. May be
public defn topolygonwitharcs (r:RoundedRectangle) > PolygonWithArcs
r: RoundedRectangle
 The rounded rectangle to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
clockwiseordered if the rounded rectangle's pose is flipped.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
topolygon¶
Create a polygon approximation of the rounded rectangle. May be
public defn topolygon (r:RoundedRectangle, num:Int) > Polygon
r: RoundedRectangle
 The rounded rectangle to create the approximate equivalent polygon of.num: Int
 The approximate total number of points to target for the rounded portions of the returned polygon. Returns
Polygon
clockwiseordered if the rounded rectangle's pose is flipped.
Note: does not work well for num
< 4.
Note: recommend that num
is a multiple of 4
normalize¶
Create an equivalent rounded rectangle with pose angle 0.0
for the given
public defn normalize (r:RoundedRectangle)
r: RoundedRectangle
 The rounded rectangle to create the equivalent of. Throws
Error
 if the rounded rectangle's pose angle is not axisaligned.
axisaligned rounded rectangle.
GeneralRoundedRectangle¶
General Rounded Rectangle
public defstruct GeneralRoundedRectangle <: Shape & HasMetaUtils
height: Double
pose: Pose
radii: Tuple<Double>
width: Double

height: Double
 Height of this general rounded rectangle. Must be nonnegative. 
pose: Pose
 Pose of this rounded rectangle. Default value is(0.0, 0.0)
with no rotation and no flip. 
radii: Tuple<Double>
 Tuple of the four radii of each of the rounded corners of this general rounded rectangle, in counterclockwise order starting from the bottom left. Must all be nonnegative. The sum of the radii of the two corners on each side must not exceed the length of the side. 
width: Double
 Width of this general rounded rectangle. Must be nonnegative.
A rectangle with rounded (filleted) corners of (potentially) different radii.
Has a width, height, a tuple of four corner radii, and pose. The pose center is
the center of the rectangle. The tuple of radii is ordered starting with the
bottomleft corner going counterclockwise. A corner radius of 0.0
indicates
no rounding. The flip of the pose affects the ordering of the general rounded
rectangle's points when converted to a polygon (clockwise when flipped,
otherwise counterclockwise).
Constructors¶
GeneralRoundedRectangle¶
Constructor for defstruct GeneralRoundedRectangle
public defn GeneralRoundedRectangle (width:Double, height:Double, radii:Tuple<Double>, pose:Pose = ?)
Functions¶
topolygon¶
Create a polygon approximation of the general rounded rectangle. May be
public defn topolygon (r:GeneralRoundedRectangle, num:Int) > Polygon
r: GeneralRoundedRectangle
 The general rounded rectangle to create the approximate equivalent polygon of.num: Int
 Four times the approximate number of points to target for each rounded portion of the returned polygon. Returns
Polygon
clockwiseordered if the general rounded rectangle's pose is flipped.
Note: does not work well for num
< 4.
Note: recommend that num
is a multiple of 4
outline¶
Create a line with width 0.0
which approximately traces the outline of the
public defn outline (r:GeneralRoundedRectangle)
r: GeneralRoundedRectangle
 The general rounded rectangle to create the approximate outline of.
given general rounded rectangle, with exact line segments for the straight sides and approximate line segments for sectors of the rounded corners. Each sector is 1/32 of a whole circle.
GeneralRoundedRectangle¶
Create a general rounded rectangle using a CornerModifier
to specify which
public defn GeneralRoundedRectangle (w:Double, h:Double, r:Double, m:CornerModifier, p:Pose = ?)
w: Double
 Width of the general rounded rectangle.h: Double
 Height of the general rounded rectangle.r: Double
 Corner radius of the general rounded rectangle.m: CornerModifier
 Which corners to make rounded of the general rounded rectangle.p: Pose
 Pose of the general rounded rectangle. Default is(0.0, 0.0)
with no rotation and no flip.
corners are rounded.
GeneralRoundedRectangle¶
Create a general rounded rectangle anchored to a specified alignment with
public defn GeneralRoundedRectangle (anchor:Anchor, w:Double, h:Double, r:Double, m:CornerModifier)
anchor: Anchor
 Anchor to align the general rounded rectangle with to the origin.w: Double
 Width of the general rounded rectangle.h: Double
 Height of the general rounded rectangle.r: Double
 Corner radius of the general rounded rectangle.m: CornerModifier
 Which corners to make rounded of the general rounded rectangle.
respect to the origin and using a CornerModifier
to specify which
corners are rounded.
GeneralRoundedRectangle¶
Create a general rounded rectangle anchored to a specified alignment with
public defn GeneralRoundedRectangle (anchor:Anchor, w:Double, h:Double, r:Tuple<Double>)
anchor: Anchor
 Anchor to align the general rounded rectangle with to the origin.w: Double
 Width of the general rounded rectangle.h: Double
 Height of the general rounded rectangle.r: Tuple<Double>
 Tuple of four radii of the corners of the general rounded rectangle, starting from the bottomleft going counterclockwise.
respect to the origin.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given general rounded rectangle.
public defn topolygonwitharcs (r:GeneralRoundedRectangle) > PolygonWithArcs
r: GeneralRoundedRectangle
 The general rounded rectangle to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
May be clockwiseordered if the general rounded rectangle 's pose is flipped.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
CornerModifier¶
Enum for General Rounded Rectangle Corner Combinations
public defenum CornerModifier <: Equalable & Hashable

CornerModifierNone
 represents no corners 
CornerModifierAll
 represents all corners 
CornerModifierBottomLeft

CornerModifierBottomRight

CornerModifierUpperLeft

CornerModifierUpperRight

CornerModifierUpperLeftAndRight
 upper left and upper right corners 
CornerModifierBottomLeftAndRight
 bottom left and bottom right corners 
CornerModifierUpperAndBottomLeft
 upper left and bottom left corners 
CornerModifierUpperAndBottomRight
 upper right and bottom right corners
This definition defines 10 options of combinations of zero or more corners of a rectangle. Used for specifying which corners to apply an operation to, for example when specifying which corners are rounded when constructing a general rounded rectangle. The options include no corners, all corners, each individual corner, and pairs of corners on each side of the rectangle.
Functions¶
GeneralRoundedRectangle¶
Create a general rounded rectangle using a CornerModifier
to specify which
public defn GeneralRoundedRectangle (w:Double, h:Double, r:Double, m:CornerModifier, p:Pose = ?)
w: Double
 Width of the general rounded rectangle.h: Double
 Height of the general rounded rectangle.r: Double
 Corner radius of the general rounded rectangle.m: CornerModifier
 Which corners to make rounded of the general rounded rectangle.p: Pose
 Pose of the general rounded rectangle. Default is(0.0, 0.0)
with no rotation and no flip.
corners are rounded.
GeneralRoundedRectangle¶
Create a general rounded rectangle anchored to a specified alignment with
public defn GeneralRoundedRectangle (anchor:Anchor, w:Double, h:Double, r:Double, m:CornerModifier)
anchor: Anchor
 Anchor to align the general rounded rectangle with to the origin.w: Double
 Width of the general rounded rectangle.h: Double
 Height of the general rounded rectangle.r: Double
 Corner radius of the general rounded rectangle.m: CornerModifier
 Which corners to make rounded of the general rounded rectangle.
respect to the origin and using a CornerModifier
to specify which
corners are rounded.
GeneralChamferedRectangle¶
Create a general chamfered rectangle using a CornerModifier
to specify which
public defn GeneralChamferedRectangle (w:Double, h:Double, r:Double, m:CornerModifier, p:Pose = ?)
w: Double
 Width of the general chamfered rectangle.h: Double
 Height of the general chamfered rectangle.r: Double
 Corner radius of the general chamfered rectangle.m: CornerModifier
 Which corners to make chamfered of the general chamfered rectangle.p: Pose
 Pose of the general chamfered rectangle. Default is(0.0, 0.0)
with no rotation and no flip.
corners are chamfered.
GeneralChamferedRectangle¶
Create a general chamfered rectangle anchored to a specified alignment with
public defn GeneralChamferedRectangle (anchor:Anchor, w:Double, h:Double, r:Double, m:CornerModifier)
anchor: Anchor
 Anchor to align the general chamfered rectangle with to the origin.w: Double
 Width of the general chamfered rectangle.h: Double
 Height of the general chamfered rectangle.r: Double
 Corner radius of the general chamfered rectangle.m: CornerModifier
 Which corners to make chamfered of the general chamfered rectangle.
respect to the origin and using a CornerModifier
to specify which
corners are chamfered.
Union¶
Union
public defstruct Union <: Shape & HasMetaUtils
shapes: Tuple<Shape>
shapes: Tuple<Shape>
 The shapes which comprise this union shape.
A shape formed from the joining of one or more other shapes together.
Functions¶
Union¶
Create a union shape from a sequence of shapes and/or other nested sequences.
public defn Union (elements:Seqable<ShapeSeqable>)
elements: Seqable<ShapeSeqable>
 The sequence of shapes and/or other nested sequences to make the union shape from.
The sequence is "flattened" first to create the tuple of shapes used.
Point¶
Point
public defstruct Point <: Shape & Centerable & HasMetaUtils
x: Double
y: Double

x: Double
 Xaxis coordinate of this point. 
y: Double
 Yaxis coordinate of this point.
A single 2D point with an X and a Y coordinate. A point is centerable and has zero area.
Functions¶
iy¶
The truncated integer value of the Y coordinate of the point.
public defn iy (p:Point)
Point¶
Create a point from two integer coordinates.
public defn Point (x:Int, y:Int)
min¶
Create the point which is the result of taking the minimum coordinate along each axis of the coordinates of a
and b
.
public defn min (a:Point, b:Point)
max¶
Create the point which is the result of taking the maximum coordinate along each axis of the coordinates of a
and b
.
public defn max (a:Point, b:Point)
center¶
Find the midpoint of the segment, i.e. the average of the start and end points
public defn center (seg:Segment) > Point
seg: Segment
 The segment to find the midpoint of. Returns
Point
of the segment.
get¶
Retrieve the X or Y coordinate of the point, using an index to select which
public defn get (p:Point, i:Int) > Double
p: Point
 The point to retrieve the coordinate of.i: Int
 Index to select which coordinate to retrieve (0 for X, 1 for Y). Returns
Double
 Throws
Error
 ifi
is not 0 or 1.
coordinate. Index 0 is the X coordinate, 1 is the Y coordinate.
Polygon¶
Create a polygon from a sequence of points and/or other nested sequences of
public defn Polygon (pts:Seqable<PointSeqable>)
pts: Seqable<PointSeqable>
 The sequence of points and/or nested sequences of points to make the polygon from.
points. The sequence is "flattened" first to create the tuple of points used.
ix¶
The truncated integer value of the X coordinate of the point.
public defn ix (p:Point)
Operators¶
minus 
¶
Create the point which is the result of subtracting the coordinates of b
from
public defn minus (a:Point, b:Point)
the coordinates of a
.
divide /
¶
Create the point which is the result of dividing the coordinates of a
by n
.
public defn divide (a:Point, n:Double)
negate 
¶
Create the point with both coordinates negated of the given point.
public defn negate (a:Point)
plus +
¶
Create the point which is the result of adding the coordinates of a
and b
.
public defn plus (a:Point, b:Point)
times *
¶
Create the point which is the result of multiplying the coordinates of a
by
public defn times (a:Double, b:Point)
n
.
Circle¶
Circle
public defstruct Circle <: Shape & Centerable & HasMetaUtils
radius: Double
radius: Double
 Radius of this circle. Must be nonnegative.
A circle specified by its center point and radius. If the radius is 0.0
then
the actual shape of the circle is a point.
Constructors¶
Circle¶
Constructor for defstruct Circle
public defn Circle (center:Point = ?, radius:Double)
Functions¶
topolygon¶
Create a polygon approximation of the circle with the given number of points.
public defn topolygon (c:Circle, num:Int) > Polygon
c: Circle
 The circle to create the approximate polygon of.num: Int
 The number of points in the returned polygon. Returns
Polygon
Circle¶
Create a circle using a center X coordinate, center Y coordinate, and radius.
public defn Circle (x:Double, y:Double, radius:Double)
x: Double
 X coordinate of the center of the circle.y: Double
 Y coordinate of the center of the circle.radius: Double
 Radius of the circle
Circle¶
Create a circle anchored to a specific alignment with respect to a point.
public defn Circle (anchor:Anchor, x:Double, y:Double, radius:Double)
anchor: Anchor
 Anchor to align the circle with to the point(x, y)
.x: Double
 X coordinate of the point to align the circle'sanchor
to.y: Double
 Y coordinate of the point to align the circle'sanchor
to.radius: Double
 Radius of the circle
Circle¶
Create a circle anchored to a specific alignment with respect to the origin.
public defn Circle (anchor:Anchor, radius:Double)
anchor: Anchor
 Anchor to align the circle with to the origin.radius: Double
 Radius of the circle.
outline¶
Create a line with width 0.0
which approximately traces the outline of the
public defn outline (c:Circle)
c: Circle
 The circle to create the approximate outline of.
given circle with 32 line segments.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given circle.
public defn topolygonwitharcs (c:Circle) > PolygonWithArcs
c: Circle
 The circle to create the polygon with arcs s equivalent of. Returns
PolygonWithArcs
Arc¶
Arc
public defstruct Arc <: Shape & HasMetaUtils
angle: Double
center: Point
radius: Double
startangle: Double

angle: Double
 Sweep angle of this arc in degrees counterclockwise. A negative value indicates a clockwise sweep. Must be between360.0
and360.0
inclusive. A sweep angle of0.0
indicates a singlepoint arc. A sweep angle of exactly360.0
or360.0
indicates a full circle. 
center: Point
 Center point of this arc. 
radius: Double
 Radius of this arc. Must be nonnegative. If the radius is 0.0 then the actual shape is considered to be a point at the center of this arc. 
startangle: Double
 Starting angle of this arc in degrees counterclockwise from the positive X axis. Must be nonnegative and strictly less than360.0
.
A circular arc specified by its center point, radius, starting angle, and sweep angle.
Constructors¶
Arc¶
Constructor for defstruct Arc
public defn Arc (center:Point, radius:Double, startangle:Double, angle:Double)
Functions¶
topolygon¶
Create a polygon approximation of the region enclosed by the arc and the chord
public defn topolygon (a:Arc, num:Int) > Polygon
a: Arc
 The arc to create the approximate polygon of.num: Int
 The approximate number of points in the returned polygon. Returns
Polygon
connecting the start and end points of the arc, with approximately the given number of points.
topolygon¶
Create a polygon approximation of the region created by "thickening" the arc
public defn topolygon (a:Arc, width:Double, num:Int = ?)
a: Arc
 The arc to create the approximate polygon of.width: Double
 The width of the "thickened" arc region to create the approximate polygon of.num: Int
 The approximate number of points in each half of the returned polygon.
and giving it the given width. Approximately targets twice num
number of
points in the returned polygon.
outline¶
Create a line with width 0.0
which approximately traces the given arc with
public defn outline (a:Arc)
a: Arc
 The arc to create the approximate outline of.
line segments which approximate sectors of the arc. Each sector is 1/32 of a whole circle.
Arc¶
Create an arc, specifying the center with separate X and Y coordinate values
public defn Arc (x:Double, y:Double, radius:Double, startangle:Double, angle:Double) > Arc
x: Double
 X coordinate of the center of the arc.y: Double
 Y coordinate of the center of the arc.startangle: Double
 Starting angle of the arc in degrees counterclockwise from the positive X axis.angle: Double
 Counterclockwise sweep angle of the arc. Returns
Arc
instead of as a Point
.
toline¶
Create the line which approximately traces the given arc, with approximately
public defn toline (a:Arc, num:Int) > Line
a: Arc
 The arc to create the approximate line of.num: Int
 The approximate number of points in the returned line. Returns
Line
the given number of points.
length¶
Calculate the length of the arc.
public defn length (a:Arc) > Double
a: Arc
 The arc to calculate the length of. Returns
Double
EmptyShape¶
Empty Shape
public defstruct EmptyShape <: Shape & HasMetaUtils
An empty shape. Empty shapes have zero area and no pose.
DShape¶
D Shape
public defstruct DShape <: Shape & Centerable & HasMetaUtils
height: Double
pose: Pose
radius: Double
width: Double

height: Double
 Height of this D shape. Must be nonnegative. 
pose: Pose
 Pose of this D shape. Default value is(0.0, 0.0)
with no rotation and no flip. 
radius: Double
 Radius of the two rounded corners of this D shape. Must be nonnegative and at most the minimum of the width and half of the height. 
width: Double
 Width of this D shape. Must be nonnegative.
A rectangle with only its two right corners (top and bottom) rounded, similar to the shape of the letter "D". The two right corners are rounded to the same radius, and the top left corners are normal (unrounded). Has a width, height, corner radius and pose. The pose center is the center of the rectangle. The flip of the pose affects the ordering of the chamfered rectangle's points when converted to a polygon (clockwise when flipped, otherwise counterclockwise).
Constructors¶
DShape¶
Constructor for defstruct DShape
public defn DShape (width:Double, height:Double, radius:Double, pose:Pose = ?)
Functions¶
topolygon¶
Create a polygon approximation of the D shape. May be clockwiseordered if the
public defn topolygon (r:DShape, num:Int) > Polygon
r: DShape
 The D shape to create the approximate equivalent polygon of.num: Int
 Four times the approximate number of points to target for each rounded portion of the returned polygon. Returns
Polygon
D shape's pose is flipped.
Note: does not work well for num
< 4.
Note: recommend that num
is a multiple of 4
outline¶
Create a line with width 0.0
which approximately traces the outline of the
public defn outline (r:DShape)
r: DShape
 The D shape to create the approximate outline of.
given D shape, with exact line segments for the straight sides and approximate line segments for sectors of the two rounded corners. Each sector is 1/32 of a whole circle.
topolygonwitharcs¶
Create the polygon with arcs equivalent of the given D shape. May be
public defn topolygonwitharcs (d:DShape) > PolygonWithArcs
d: DShape
 The D shape to create the polygon with arcs equivalent of. Returns
PolygonWithArcs
clockwiseordered if the D shape's pose is flipped.
DShape¶
Create a D shape anchored to a specified alignment with respect to the origin.
public defn DShape (anchor:Anchor, w:Double, h:Double, r:Double)
anchor: Anchor
 Anchor to align the D shape with to the origin.w: Double
 Width of the D shape.h: Double
 Height of the D shape.r: Double
 Corner radius of the D shape.
The alignment is performed with respect to the unrounded rectangular bounding box of the D shape.
axisaligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axisaligned? (r:RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle)
r: RectangleCapsuleRoundedRectangleChamferedRectangleDShapeGeneralRoundedRectangleGeneralChamferedRectangle
 The shape to check the pose of.
General Definitions¶
iy¶
The truncated integer value of the Y coordinate of the pose's center.
public defn iy (p:Pose)
iangle¶
The truncated integer value of the pose's angle.
public defn iangle (p:Pose)
anglemod90?¶
Return true if the angle of the pose is an exact multiple of 90 degrees.
public defn anglemod90? (p:Pose)
p: Pose
 The pose to check the angle of.
ix¶
The truncated integer value of the X coordinate of the pose's center.
public defn ix (p:Pose)
Related Packages¶
Forwarded by package: jitx