public class Yarn extends java.lang.Object implements java.lang.Comparable<Yarn>, java.io.Serializable
Terminus
.
The intersection of two Yarns is a Join
.Modifier and Type | Field and Description |
---|---|
static long |
serialVersionUID
For serialization.
|
Modifier and Type | Method and Description |
---|---|
void |
add(Join j)
Add a Join to the end of the list of Joins.
|
void |
add(Yarn y)
Add a Yarn to the end of the list of Yarns that this one crosses.
|
void |
add(Yarn y,
Join j)
Add a Yarn at the end of the list of Yarns and a Join at the end of the list of Joins.
|
void |
addFirst(Join j)
Add a Join to the beginning of the list of Joins.
|
void |
addFirst(Yarn y)
Add a Yarn to the beginning of the list of Yarns that this one crosses.
|
void |
addLast(Join j)
Add a Join to the end of the list of Joins.
|
void |
addLast(Yarn y)
Add a Yarn to the end of the list of Yarns that this one crosses.
|
boolean |
ccwStart(Yarn other)
Move counterclockwise through the Termini, starting with the start
of this.
|
void |
collapse(Join j)
Remove a Join from the list of Joins on this Yarn.
|
int |
compareTo(Yarn other)
Compare to another Yarn on the basis of the start and end indices of their Termini.
|
boolean |
consecutive(Yarn y1,
Yarn y2)
Check to see if this hits two other Yarns in a row.
|
static Yarn |
createYarn(Terminus s,
Terminus e)
Public static factory method.
|
java.util.List<Yarn> |
cross() |
int |
crossCount() |
boolean |
crosses(Yarn other)
Check if this crosses a particular Yarn.
|
int |
crossRatio(Yarn other)
Compute the sign of the cross ratio between this and another Yarn.
|
java.lang.String |
crossString()
A String listing all Yarns this crosses.
|
Join |
firstJoin()
Getter method.
|
java.util.List<Yarn> |
getCross()
Getter method.
|
int |
getEndAngle()
Getter method.
|
int |
getEndIndex()
Getter method.
|
Yarn |
getOpposite()
Getter method.
|
int |
getStartAngle()
Getter method.
|
int |
getStartIndex()
Getter method.
|
boolean |
hits(Yarn y1,
Yarn y2)
Check to see if this hits two other Yarns in a row.
|
java.lang.Iterable<Join> |
joins() |
Join |
joinWith(Yarn other)
Assuming that this crosses a given Yarn, return the corresponding
Join.
|
Join |
lastJoin()
Getter method.
|
Yarn |
nextYarn(Yarn y1,
Yarn y2)
Assume that y1 and y2 intersect this consecutively.
|
void |
remove(Join j)
Remove a Join from the list of Joins between this Yarn and other Yarns.
|
void |
remove(Yarn y)
Remove a Yarn from the list of Yarns that cross this one.
|
void |
removeFirst()
Remove the first Yarn that this one crosses, along with the corresponding Join.
|
void |
removeLast()
Remove the last Yarn that this one crosses, along with the corresponding Join.
|
void |
setOpposite(Yarn y)
Set the Yarn opposite this one.
|
boolean |
shouldCross(Yarn other)
A method for use shortly after construction.
|
static java.util.List<Hex> |
surroundingTriples(Yarn y0,
Yarn y1,
Yarn y2)
Assume that y0, y1 and y2 intersect in a triple.
|
void |
swap(Yarn y1,
Yarn y2)
Swap the positions of two Yarns that cross this one.
|
boolean |
symmetric()
Determine if this Yarn is its own opposite.
|
void |
symmetrize()
Call this method when the list of Yarns crossing this one has been
partly filled, and likewise for its opposite.
|
java.lang.String |
toString()
A basic String describing this Yarn.
|
boolean |
valid()
Check for validity of crossings.
|
public static final long serialVersionUID
public static Yarn createYarn(Terminus s, Terminus e)
s
- The start.e
- The end.public Join firstJoin()
public Join lastJoin()
public void add(Yarn y)
y
- The Yarn we add.public void addFirst(Yarn y)
y
- The Yarn we add.public void addLast(Yarn y)
y
- The Yarn we add.public void add(Join j)
j
- The Join we add.public void addFirst(Join j)
j
- The Join we add.public void addLast(Join j)
j
- The Join we add.public void add(Yarn y, Join j)
y
- The Yarn we add.j
- The Join we add.public void remove(Yarn y)
y
- The Yarn we remove.public void remove(Join j)
j
- The Join we remove.public void removeFirst()
public void removeLast()
public void setOpposite(Yarn y)
y
- The Yarn that we are declaring to be opposite this one.public boolean symmetric()
public void symmetrize()
public void collapse(Join j)
j
- The Join that we remove.public int getStartIndex()
public int getEndIndex()
public int getStartAngle()
public int getEndAngle()
public Yarn getOpposite()
public int compareTo(Yarn other)
compareTo
in interface java.lang.Comparable<Yarn>
other
- The Yarn to which we compare this one.public boolean hits(Yarn y1, Yarn y2)
y1
- The first Yarn for which we check for an intersection with this one.y2
- The second Yarn for which we check for an intersection with this one.public void swap(Yarn y1, Yarn y2)
y1
- The first of the two Yarns we swap.y2
- The second of the two Yarns we swap.hits(Yarn, Yarn)
public boolean consecutive(Yarn y1, Yarn y2)
y1
- The first Yarn for which we check for an intersection with this one.y2
- The second Yarn for which we check for an intersection with this one.public int crossCount()
public boolean crosses(Yarn other)
other
- The other Yarn that we are checking for a cross with this.public java.util.List<Yarn> getCross()
public boolean shouldCross(Yarn other)
other
- A Yarn that we are checking to see if it should cross this.public int crossRatio(Yarn other)
other
- The Yarn for which we are computing the cross ratio with this.public boolean ccwStart(Yarn other)
other
- The Yarn for which we are comparing Termini positions with this.public boolean valid()
Point.N()
(mod 2N) then the crossings are valid; otherwise they're
invalid.public Join joinWith(Yarn other)
other
- The Yarn whose Join with this we are seeking.public Yarn nextYarn(Yarn y1, Yarn y2)
y1
- The first of two Yarns that intersect this consecutively.y2
- The second of two Yarns that intersect this consecutively.public static java.util.List<Hex> surroundingTriples(Yarn y0, Yarn y1, Yarn y2)
y0
- One of three Yarns.y1
- One of three Yarns.y2
- One of three Yarns.public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String crossString()
public java.util.List<Yarn> cross()
public java.lang.Iterable<Join> joins()