jsl/landpatterns/grid-planner¶
Package name: jsl/landpatterns/grid-planner
Summary¶
Data Types¶
GridPlanner¶
Pad Grid Pose Planner
Constructors¶
Function | Description |
---|---|
GridPlanner (+ 1) | Constructor for defstruct GridPlanner |
Functions¶
Function | Description |
---|---|
GridPlanner | Construct GridPlanner with Anchor |
StaggerPhase¶
Stagger Phase Definition
Functions¶
Function | Description |
---|---|
stagger-pattern | Stagger Pattern for Marking Active Pads |
GridPosition¶
Constructors¶
Function | Description |
---|---|
GridPosition | Constructor for defstruct GridPosition |
General Definitions¶
Function | Description |
---|---|
equilateral-triangle-pitch | Construct the asymmetric pitch for an equilateral triangle grid. |
Definitions¶
GridPlanner¶
Pad Grid Pose Planner
public defstruct GridPlanner :
columns: Int
pitch: Double|Dims
pose: Pose
rows: Int
-
columns: Int
- Number of Columns in the Grid This value is expected to be a positive integer The columns traverse the X dimension. -
pitch: Double|Dims
- Compute the Pitch (inter-pad distance) for the grid. The interpretation of thepitch
is up to theGridPlanner
implementation. For example aEquilateral Triangle
grid generator may interpret the pitch as being non-orthonormal and instead be the equidistant distance between pads.By default this is a field but could be implemented as a defmethod if needed.
-
pose: Pose
- Optional Pose Rotation for the Grid This can be useful when we want to orientate the grid differently from how we construct it. -
rows: Int
- Number of Rows in the Grid This value is expected to be a positive integer The rows traverse the Y dimension.This value should be used when there is no uneven-ness in the grid.
This type defines the interface for the grid creation of a land pattern. The most obvious package with a grid is a Ball Grid Array (BGA) which is typically 2D orthonormal. But there is a wide diversity of different land pattern grids even within BGAs.
In JSL, the land pattern framework assumes that all land patterns have a grid. Some of those grids may be quite trivial - ie a single row or column with N pins. Others can be quite complex with Uneven sides, unpopulated grid locations, among other idiosyncrasies.
The Grid Planner type allows us to define typical grid patterns in a common reusable way so that we don't have to copy and paste the same implementations over and over.
Constructors¶
GridPlanner¶
Constructor for defstruct GridPlanner
public defn GridPlanner (pitch:Double|Dims, columns:Int, rows:Int, pose:Pose)
GridPlanner¶
Constructor for defstruct GridPlanner
public defn GridPlanner ( -- pitch:Double|Dims, columns:Int, rows:Int, pose:Pose = ?)
Multis¶
rows¶
Number of Rows in the Grid
public defmulti rows (g:GridPlanner, c:Int) -> Int
c: Int
- In some grids, the number of rows is variable. This means that from column to column the row count might change. The optionalc
argument identifies the column which may or may not be used.- Returns
Int
This value is expected to be a positive integer The rows traverse the Y dimension.
grid¶
Grid Generator
public defmulti grid (g:GridPlanner) -> Seq<GridPosition>
g: GridPlanner
- This Grid Planner- Returns
Seq<GridPosition>
- The generated grid consists ofGridPosition
objects which provide the row index, column index, and aPose
object for identifying the location of that grid position.
This method constructs a sequence of Pose
locations for the desired grid.
This method must be implemented by the derived grid type to generate this sequence.
Methods¶
grid¶
Default Grid Generator
defmethod grid (g:GridPlanner) -> Seq<GridPosition>
- Returns
Seq<GridPosition>
This default implementation creates either a regular or irregular grid
leveraging the grid-locs
function.
Functions¶
GridPlanner¶
Construct GridPlanner with Anchor
public defn GridPlanner ( -- pitch:Double|Dims, columns:Int, rows:Int, anchor:Anchor) -> GridPlanner
- Returns
GridPlanner
StaggerPhase¶
Stagger Phase Definition
public defenum StaggerPhase <: Equalable & Hashable
-
Even-Phase
-
Odd-Phase
This type is used to construct Staggered Grid implementations. The phase indicates whether the first row pad 0 is empty or populated.
In the following examples, the X
indicates a location where the
pad is not populated. An O
indicates a location where the pad
is populated.
Pattern #1 - Odd-Phase
:¶
X | O | X ...
O | X | O ...
...
Pattern #2 - Even-Phase
:¶
O | X | O ...
X | O | X ...
...
Functions¶
stagger-pattern¶
Stagger Pattern for Marking Active Pads
public defn stagger-pattern (phase:StaggerPhase, row:Int, column:Int) -> True|False
phase: StaggerPhase
- This indicates the ordering of when a location is populated or not.row: Int
- Row index (zero-based)column: Int
- Column index (zero-based)- Returns
True|False
This function is a re-usable pattern generator for the staggered phase grid approach.
GridPosition¶
public defstruct GridPosition :
column: Int
pose: Pose
row: Int
-
column: Int
-
pose: Pose
-
row: Int
Constructors¶
GridPosition¶
Constructor for defstruct GridPosition
public defn GridPosition (row:Int, column:Int, pose:Pose)
Multis¶
grid¶
Grid Generator
public defmulti grid (g:GridPlanner) -> Seq<GridPosition>
g: GridPlanner
- This Grid Planner- Returns
Seq<GridPosition>
- The generated grid consists ofGridPosition
objects which provide the row index, column index, and aPose
object for identifying the location of that grid position.
This method constructs a sequence of Pose
locations for the desired grid.
This method must be implemented by the derived grid type to generate this sequence.
Methods¶
grid¶
Default Grid Generator
defmethod grid (g:GridPlanner) -> Seq<GridPosition>
- Returns
Seq<GridPosition>
This default implementation creates either a regular or irregular grid
leveraging the grid-locs
function.
General Definitions¶
equilateral-triangle-pitch¶
Construct the asymmetric pitch for an equilateral triangle grid.
public defn equilateral-triangle-pitch (p:Double) -> Dims
p: Double
- Side length of the equilateral triangle.- Returns
Dims
- A two dimensional pitch where the row pitch is the height of an equilateral triangle and the col span isp / 2.0
. Every skipped pad in astagger-pattern
creates a full length side of the equilateral triangle.
This function assumes that you will use the stagger-pattern for constructing the active pads.
This constructs a pad pattern in the form of a grid where every 3 pads creates a equilateral triangle.
Related Packages¶
Forwarded by packages: jsl/landpatterns/framework, jsl/landpatterns