Shapes¶
Package name: jitx/shapes
Board Outline Example¶
val outline = RoundedRectangle(10.0, 5.0, 1.0)
set-board(default-board(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 |
---|---|
to-polygon | 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 |
to-polygon-with-arcs (+ 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. |
upper-extend | |
lower-extend |
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 |
to-polygon-with-arcs | Create the polygon with arcs equivalent of the given capsule. May be |
axis-aligned? | Return true if the shape's pose angle is aligned with the X or Y axis. |
to-polygon | 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 axis-aligned |
Text¶
Text
ChamferedRectangle¶
Chamfered Rectangle
Constructors¶
Function | Description |
---|---|
ChamferedRectangle | Constructor for defstruct ChamferedRectangle |
Functions¶
Function | Description |
---|---|
to-polygon | Create a polygon equivalent of the chamfered rectangle. May be clockwise-ordered |
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 |
axis-aligned? | 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 lower-left corner point of the rectangle. |
ne | Retrieve the upper-right corner point of the rectangle. |
axis-aligned? | Return true if the shape's pose angle is aligned with the X or Y axis. |
to-polygon | Create a polygon equivalent to the given rectangle. May be clockwise-ordered if |
normalize | Create an equivalent rectangle with pose angle 0.0 for the given axis-aligned |
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 |
angle-degrees | Calculate the angle in degrees counter-clockwise from the positive X axis of |
length | Calculate the length of the segment. |
Line¶
Line
Functions¶
Function | Description |
---|---|
to-polygon | 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 |
to-line | 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 |
---|---|
to-polygon | 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 |
axis-aligned? | Return true if the shape's pose angle is aligned with the X or Y axis. |
Polygon¶
Polygon
Functions¶
Function | Description |
---|---|
circle-points | Create a polygon consisting of points along an arc of a circle, specified with |
to-polygon (+ 8) | Create a polygon equivalent to the given rectangle. May be clockwise-ordered 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 |
to-polygon | 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 |
to-polygon-with-arcs | Create the polygon with arcs equivalent of the given rounded rectangle. May be |
axis-aligned? | Return true if the shape's pose angle is aligned with the X or Y axis. |
to-polygon | 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 |
---|---|
to-polygon | 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 |
to-polygon-with-arcs | Create the polygon with arcs equivalent of the given general rounded rectangle. |
axis-aligned? | 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 |
---|---|
to-polygon | 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 |
to-polygon-with-arcs | Create the polygon with arcs equivalent of the given circle. |
Arc¶
Arc
Functions¶
Function | Description |
---|---|
to-polygon (+ 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 |
to-line | 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 |
---|---|
to-polygon | Create a polygon approximation of the D shape. May be clockwise-ordered if the |
outline | Create a line with width 0.0 which approximately traces the outline of the |
to-polygon-with-arcs | 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. |
axis-aligned? | 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. |
angle-mod-90? | 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<Point|Arc>
elements: Tuple<Point|Arc>
- Elements of this polygon with arc's boundary in counter-clockwise 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 counter-clockwise order. Must be non-degenerate (have at least 3 vertices or at least 1 arc) and non-self-intersecting. 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¶
to-polygon¶
Create the polygon approximation of the given polygon with arcs.
public defn to-polygon (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<Shape|Seqable>)
elements: Seqable<Shape|Seqable>
- 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.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given circle.
public defn to-polygon-with-arcs (c:Circle) -> PolygonWithArcs
c: Circle
- The circle to create the polygon with arcs s equivalent of.- Returns
PolygonWithArcs
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given capsule. May be
public defn to-polygon-with-arcs (c:Capsule) -> PolygonWithArcs
c: Capsule
- The capsule to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
clockwise-ordered if the capsule's pose is flipped.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given D shape. May be
public defn to-polygon-with-arcs (d:DShape) -> PolygonWithArcs
d: DShape
- The D shape to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
clockwise-ordered if the D shape's pose is flipped.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given rounded rectangle. May be
public defn to-polygon-with-arcs (r:RoundedRectangle) -> PolygonWithArcs
r: RoundedRectangle
- The rounded rectangle to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
clockwise-ordered if the rounded rectangle's pose is flipped.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given general rounded rectangle.
public defn to-polygon-with-arcs (r:GeneralRoundedRectangle) -> PolygonWithArcs
r: GeneralRoundedRectangle
- The general rounded rectangle to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
May be clockwise-ordered 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
upper-extend¶
public defmulti upper-extend (sh:Shape) -> Double
- Returns
Double
lower-extend¶
public defmulti lower-extend (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<Shape|Seqable>)
elements: Seqable<Shape|Seqable>
- 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<Shape|Seqable>)
elements: Seqable<Shape|Seqable>
- 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<Shape|Seqable>)
pts: Seqable<Shape|Seqable>
- 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<Shape|Seqable>)
elements: Seqable<Shape|Seqable>
- 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
- X-axis dimension Also known as width. -
y: Double
- Y-axis 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 non-negative. -
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 non-negative.
A pill-like 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 counter-clockwise).
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.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given capsule. May be
public defn to-polygon-with-arcs (c:Capsule) -> PolygonWithArcs
c: Capsule
- The capsule to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
clockwise-ordered if the capsule's pose is flipped.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- The shape to check the pose of.
to-polygon¶
Create a polygon approximation of the capsule with approximately the given
public defn to-polygon (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 clockwise-ordered 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 axis-aligned
public defn normalize (r:Capsule)
r: Capsule
- The capsule to create the equivalent of.- Throws
Error
- if the capsule's pose angle is not axis-aligned.
capsule.
Text¶
Text
public defstruct Text <: Shape & HasMetaUtils
anchor: Anchor
font: String
hide?: True|False
pose: Pose
size: Double
string: String
text-kind: TextKind
type: Symbol|False
-
anchor: Anchor
- The alignment of this text shape with the pose. -
font: String
- The name of the font use for this text shape. -
hide?: True|False
- 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. -
text-kind: TextKind
- The kind of text of this text shape. -
type: Symbol|False
- 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 = ?, text-kind:TextKind = ?, hide?:True|False = ?, type:Symbol|False = ?)
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 non-negative. -
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 non-negative and at most half of the minimum of the width and height. -
width: Double
- Width of this chamfered rectangle. Must be non-negative.
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 counter-clockwise).
Constructors¶
ChamferedRectangle¶
Constructor for defstruct ChamferedRectangle
public defn ChamferedRectangle (width:Double, height:Double, radius:Double, pose:Pose = ?)
Functions¶
to-polygon¶
Create a polygon equivalent of the chamfered rectangle. May be clockwise-ordered
public defn to-polygon (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 axis-aligned.
axis-aligned 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 un-chamfered rectangular bounding box of the chamfered rectangle.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- 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 non-negative. -
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 non-negative.
A rectangle with a width, height, and pose. The pose center is the center of the rectangle. May be non-axis-aligned if the pose has non-zero rotation angle. The flip of the pose affects the ordering of the rectangle's points when converted to a polygon (clockwise when flipped, otherwise counter-clockwise).
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 lower-left corner point of the rectangle.
public defn sw (r:Rectangle)
r: Rectangle
- The rectangle to retrieve the lower-left corner point of.
ne¶
Retrieve the upper-right corner point of the rectangle.
public defn ne (r:Rectangle)
r: Rectangle
- The rectangle to retrieve the bottom-left corner point of.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- The shape to check the pose of.
to-polygon¶
Create a polygon equivalent to the given rectangle. May be clockwise-ordered if
public defn to-polygon (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 axis-aligned
public defn normalize (r:Rectangle)
r: Rectangle
- The rectangle to create the equivalent of.- Throws
Error
- if the rectangle's pose angle is not axis-aligned.
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 bottom-left and upper-right
public defn Rectangle (x1:Double, y1:Double, x2:Double, y2:Double)
x1: Double
- X coordinate of the bottom-left corner of the rectangle.y1: Double
- Y coordinate of the bottom-left corner of the rectangle.x2: Double
- X coordinate of the upper-right corner of the rectangle.y2: Double
- Y coordinate of the upper-right 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.
angle-degrees¶
Calculate the angle in degrees counter-clockwise from the positive X axis of
public defn angle-degrees (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 non-negative.
A thick polyline consisting of one or more straight line segments. Has a width (thickness) and a tuple of points along its centerline.
Functions¶
to-polygon¶
Create the polygon equivalent of the FIRST SEGMENT of the given line.
public defn to-polygon (l:Line, six-vertices?:True|False = ?)
l: Line
- The line to create the polygon equivalent of.six-vertices?: True|False
- 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<Shape|Seqable>)
pts: Seqable<Shape|Seqable>
- 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.
to-line¶
Create the line which approximately traces the given arc, with approximately
public defn to-line (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 non-negative. -
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 counter-clockwise order starting from the bottom left. Must all be non-negative. 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 non-negative.
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 bottom-left corner going
counter-clockwise. The flip of the pose affects the ordering of the general
rounded rectangle's points when converted to a polygon (clockwise when flipped,
otherwise counter-clockwise).
Constructors¶
GeneralChamferedRectangle¶
Constructor for defstruct GeneralChamferedRectangle
public defn GeneralChamferedRectangle (width:Double, height:Double, radii:Tuple<Double>, pose:Pose = ?)
Functions¶
to-polygon¶
Create a polygon equivalent of the general chamfered rectangle. May be
public defn to-polygon (r:GeneralChamferedRectangle) -> Polygon
r: GeneralChamferedRectangle
- The general chamfered rectangle to create the equivalent polygon of.- Returns
Polygon
clockwise-ordered 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 bottom-left going counter-clockwise.
respect to the origin.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- 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 counter-clockwise order.
A polygon specified by its vertices in counter-clockwise order. Must be non-degenerate (have at least 3 vertices) and be non-self-intersecting. May be concave.
Functions¶
circle-points¶
Create a polygon consisting of points along an arc of a circle, specified with
public defn circle-points (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 counter-clockwise 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.
to-polygon¶
Create a polygon equivalent to the given rectangle. May be clockwise-ordered if
public defn to-polygon (r:Rectangle) -> Polygon
r: Rectangle
- The rectangle to create the equivalent polygon of.- Returns
Polygon
the rectangle's pose is flipped.
to-polygon¶
Create a polygon approximation of the capsule with approximately the given
public defn to-polygon (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 clockwise-ordered 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
to-polygon¶
Create a polygon approximation of the rounded rectangle. May be
public defn to-polygon (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
clockwise-ordered 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
to-polygon¶
Create a polygon equivalent of the chamfered rectangle. May be clockwise-ordered
public defn to-polygon (r:ChamferedRectangle) -> Polygon
r: ChamferedRectangle
- The chamfered rectangle to create the equivalent polygon of.- Returns
Polygon
if the chamfered rectangle's pose is flipped.
to-polygon¶
Create a polygon approximation of the D shape. May be clockwise-ordered if the
public defn to-polygon (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
to-polygon¶
Create a polygon approximation of the general rounded rectangle. May be
public defn to-polygon (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
clockwise-ordered 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
to-polygon¶
Create a polygon equivalent of the general chamfered rectangle. May be
public defn to-polygon (r:GeneralChamferedRectangle) -> Polygon
r: GeneralChamferedRectangle
- The general chamfered rectangle to create the equivalent polygon of.- Returns
Polygon
clockwise-ordered if the general chamfered rectangle's pose is flipped.
to-polygon¶
Create a polygon approximation of the circle with the given number of points.
public defn to-polygon (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
to-polygon¶
Create a polygon approximation of the region enclosed by the arc and the chord
public defn to-polygon (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<Point|Seqable>)
pts: Seqable<Point|Seqable>
- 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<Point|Arc>
width: Double
-
elements: Tuple<Point|Arc>
- Elements along this line's centerline. Must have at least 2 points or 1 arc. -
width: Double
- Thickness of this polyline. Must be non-negative.
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<Shape|Seqable>)
elements: Seqable<Shape|Seqable>
- 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.
to-polygon¶
Create the polygon approximation of the given polyline.
public defn to-polygon (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 non-negative. -
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 non-negative and at most half of the minimum of the width and height. -
width: Double
- Width of this rounded rectangle. Must be non-negative.
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 counter-clockwise).
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 un-rounded rectangular bounding box of the rounded rectangle.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given rounded rectangle. May be
public defn to-polygon-with-arcs (r:RoundedRectangle) -> PolygonWithArcs
r: RoundedRectangle
- The rounded rectangle to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
clockwise-ordered if the rounded rectangle's pose is flipped.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- The shape to check the pose of.
to-polygon¶
Create a polygon approximation of the rounded rectangle. May be
public defn to-polygon (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
clockwise-ordered 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 axis-aligned.
axis-aligned 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 non-negative. -
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 counter-clockwise order starting from the bottom left. Must all be non-negative. 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 non-negative.
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
bottom-left corner going counter-clockwise. 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 counter-clockwise).
Constructors¶
GeneralRoundedRectangle¶
Constructor for defstruct GeneralRoundedRectangle
public defn GeneralRoundedRectangle (width:Double, height:Double, radii:Tuple<Double>, pose:Pose = ?)
Functions¶
to-polygon¶
Create a polygon approximation of the general rounded rectangle. May be
public defn to-polygon (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
clockwise-ordered 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 bottom-left going counter-clockwise.
respect to the origin.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given general rounded rectangle.
public defn to-polygon-with-arcs (r:GeneralRoundedRectangle) -> PolygonWithArcs
r: GeneralRoundedRectangle
- The general rounded rectangle to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
May be clockwise-ordered if the general rounded rectangle 's pose is flipped.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- 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<Shape|Seqable>)
elements: Seqable<Shape|Seqable>
- 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
- X-axis coordinate of this point. -
y: Double
- Y-axis 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<Point|Seqable>)
pts: Seqable<Point|Seqable>
- 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 non-negative.
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¶
to-polygon¶
Create a polygon approximation of the circle with the given number of points.
public defn to-polygon (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.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given circle.
public defn to-polygon-with-arcs (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
start-angle: Double
-
angle: Double
- Sweep angle of this arc in degrees counter-clockwise. A negative value indicates a clockwise sweep. Must be between-360.0
and360.0
inclusive. A sweep angle of0.0
indicates a single-point arc. A sweep angle of exactly-360.0
or360.0
indicates a full circle. -
center: Point
- Center point of this arc. -
radius: Double
- Radius of this arc. Must be non-negative. If the radius is 0.0 then the actual shape is considered to be a point at the center of this arc. -
start-angle: Double
- Starting angle of this arc in degrees counter-clockwise from the positive X axis. Must be non-negative 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, start-angle:Double, angle:Double)
Functions¶
to-polygon¶
Create a polygon approximation of the region enclosed by the arc and the chord
public defn to-polygon (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.
to-polygon¶
Create a polygon approximation of the region created by "thickening" the arc
public defn to-polygon (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, start-angle:Double, angle:Double) -> Arc
x: Double
- X coordinate of the center of the arc.y: Double
- Y coordinate of the center of the arc.start-angle: Double
- Starting angle of the arc in degrees counter-clockwise from the positive X axis.angle: Double
- Counter-clockwise sweep angle of the arc.- Returns
Arc
instead of as a Point
.
to-line¶
Create the line which approximately traces the given arc, with approximately
public defn to-line (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 non-negative. -
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 non-negative and at most the minimum of the width and half of the height. -
width: Double
- Width of this D shape. Must be non-negative.
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 counter-clockwise).
Constructors¶
DShape¶
Constructor for defstruct DShape
public defn DShape (width:Double, height:Double, radius:Double, pose:Pose = ?)
Functions¶
to-polygon¶
Create a polygon approximation of the D shape. May be clockwise-ordered if the
public defn to-polygon (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.
to-polygon-with-arcs¶
Create the polygon with arcs equivalent of the given D shape. May be
public defn to-polygon-with-arcs (d:DShape) -> PolygonWithArcs
d: DShape
- The D shape to create the polygon with arcs equivalent of.- Returns
PolygonWithArcs
clockwise-ordered 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 un-rounded rectangular bounding box of the D shape.
axis-aligned?¶
Return true if the shape's pose angle is aligned with the X or Y axis.
public defn axis-aligned? (r:Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle)
r: Rectangle|Capsule|RoundedRectangle|ChamferedRectangle|DShape|GeneralRoundedRectangle|GeneralChamferedRectangle
- 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)
angle-mod-90?¶
Return true if the angle of the pose is an exact multiple of 90 degrees.
public defn angle-mod-90? (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