Struct CairoPoint
A coordinate for a cell in a CiaroGrid. The base point is a pointy hex point, and indices run from 0 to 3.
[Version(1, 2, 0)]
[Serializable]
public struct CairoPoint : ISplicedPoint<CairoPoint, PointyHexPoint>, IGridPoint<CairoPoint>, IEquatable<CairoPoint>, IGridPoint, ISplicedVectorPoint<CairoPoint, PointyHexPoint>
- Implements
- Inherited Members
- Extension Methods
Constructors
CairoPoint(int, int, int)
public CairoPoint(int x, int y, int index)
Parameters
Fields
MainDirections
public static readonly IEnumerable<CairoPoint>[] MainDirections
Field Value
SpliceCount
public const int SpliceCount = 4
Field Value
Zero
public static readonly CairoPoint Zero
Field Value
Properties
BasePoint
Why is this public? - Convenience - Algorithm Design Otherwise the user will just make a new basepoint in any case, and perhaps make a mistake.
public PointyHexPoint BasePoint { get; }
Property Value
I
Returns the splice idnex for this point.
public int I { get; }
Property Value
SpliceIndex
For spliced grids, this is the index of the splice.
For Uniform grids, this is always 0.
public int SpliceIndex { get; }
Property Value
X
Returns the X-coordinate of this point.
public int X { get; }
Property Value
Y
Returns the Y-coordinate of this point.
public int Y { get; }
Property Value
Z
This is a redundant coordinate that is useful for certain algorithms and calculation. The coordinates of a triangle satsify this identity: X + Y + Z + I = 0.
public int Z { get; }
Property Value
Methods
DecIndex(int)
public CairoPoint DecIndex(int n)
Parameters
n
int
Returns
DistanceFrom(CairoPoint)
The lattice distance between two points.
Two points should have a distance of 1 if and only if they are neighbors.
public int DistanceFrom(CairoPoint other)
Parameters
other
CairoPoint
Returns
Equals(CairoPoint)
public bool Equals(CairoPoint other)
Parameters
other
CairoPoint
Returns
Equals(object)
public override bool Equals(object other)
Parameters
other
object
Returns
GetColor(int, int, int)
Gives a coloring of the grid such that if a point p has color k, then all points p + m[ux, 0 | 0] + n[vx, vy | 0] have the same color for any integers a and b.
Since version 1.7
public int GetColor(int ux, int vx, int vy)
Parameters
Returns
GetColor12()
public int GetColor12()
Returns
GetHashCode()
public override int GetHashCode()
Returns
IncIndex(int)
public CairoPoint IncIndex(int n)
Parameters
n
int
Returns
InvertIndex()
public CairoPoint InvertIndex()
Returns
MoveBackBy(CairoPoint)
If a spliced vectors u and v has base vector B and index I
public CairoPoint MoveBackBy(CairoPoint other)
Parameters
other
CairoPoint
Returns
Remarks
new SplicedVector(u.B.Subtract(v.B), (SpliceCount + u.I - v.I) % SpliceCount))
MoveBy(CairoPoint)
If a spliced vectors u and v has base vector B and index I,
public CairoPoint MoveBy(CairoPoint other)
Parameters
other
CairoPoint
Returns
Remarks
This operation is the same as
new SplicedVector(u.B.Translate(v.B), (u.I + v.I) % SpliceCount))
Negate()
Returns a new point with the vector component negated.
public CairoPoint Negate()
Returns
ScaleDown(int)
public CairoPoint ScaleDown(int r)
Parameters
r
int
Returns
ScaleUp(int)
public CairoPoint ScaleUp(int r)
Parameters
r
int
Returns
Subtract(PointyHexPoint)
Translates this point by the negation of the given vector.
public CairoPoint Subtract(PointyHexPoint other)
Parameters
other
PointyHexPoint
Returns
ToString()
public override string ToString()
Returns
Translate(PointyHexPoint)
Translate this point by the given vector.
public CairoPoint Translate(PointyHexPoint other)
Parameters
other
PointyHexPoint
Returns
Operators
operator +(CairoPoint, PointyHexPoint)
public static CairoPoint operator +(CairoPoint point1, PointyHexPoint point2)
Parameters
point1
CairoPointpoint2
PointyHexPoint
Returns
operator /(CairoPoint, int)
public static CairoPoint operator /(CairoPoint point, int n)
Parameters
point
CairoPointn
int
Returns
operator ==(CairoPoint, CairoPoint)
public static bool operator ==(CairoPoint point1, CairoPoint point2)
Parameters
point1
CairoPointpoint2
CairoPoint
Returns
operator !=(CairoPoint, CairoPoint)
public static bool operator !=(CairoPoint point1, CairoPoint point2)
Parameters
point1
CairoPointpoint2
CairoPoint
Returns
operator *(CairoPoint, int)
public static CairoPoint operator *(CairoPoint point, int n)
Parameters
point
CairoPointn
int
Returns
operator -(CairoPoint, PointyHexPoint)
public static CairoPoint operator -(CairoPoint point1, PointyHexPoint point2)
Parameters
point1
CairoPointpoint2
PointyHexPoint
Returns
operator -(CairoPoint)
public static CairoPoint operator -(CairoPoint point)
Parameters
point
CairoPoint
Returns
operator +(CairoPoint)
public static CairoPoint operator +(CairoPoint point)
Parameters
point
CairoPoint