Polygon
Namespace: Murder.Core.Geometry
Assembly: Murder.dll
public sealed struct Polygon
⭐ Constructors
public Polygon()
public Polygon(IEnumerable<T> vertices, Vector2 position)
Parameters
vertices IEnumerable<T>
position Vector2
public Polygon(IEnumerable<T> vertices)
Parameters
vertices IEnumerable<T>
⭐ Properties
DIAMOND
public readonly static Polygon DIAMOND;
Returns
Polygon
EMPTY
public readonly static Polygon EMPTY;
Returns
Polygon
Vertices
public readonly ImmutableArray<T> Vertices;
Returns
ImmutableArray<T>
⭐ Methods
Contains(Point)
public bool Contains(Point point)
Parameters
point Point
Returns
bool
Contains(Vector2)
public bool Contains(Vector2 vector)
Parameters
vector Vector2
Returns
bool
IsClockwise(List)
public bool IsClockwise(List<T> vertices)
Parameters
vertices List<T>
Returns
bool
IsConvex()
public bool IsConvex()
Returns
bool
IsPointInTriangle(Vector2, Vector2, Vector2, Vector2)
public bool IsPointInTriangle(Vector2 point, Vector2 a, Vector2 b, Vector2 c)
Parameters
point Vector2
a Vector2
b Vector2
c Vector2
Returns
bool
TryMerge(Polygon, Polygon, float, out Polygon&)
public bool TryMerge(Polygon a, Polygon b, float minDistance, Polygon& result)
Parameters
a Polygon
b Polygon
minDistance float
result Polygon&
Returns
bool
GetNormals()
public IEnumerable<T> GetNormals()
Returns
IEnumerable<T>
GetLines()
public Line2[] GetLines()
Returns
Line2[]
EarClippingTriangulation(Polygon)
public List<T> EarClippingTriangulation(Polygon polygon)
Parameters
polygon Polygon
Returns
List<T>
FindConcaveVertices(ImmutableArray)
public List<T> FindConcaveVertices(ImmutableArray<T> points)
Parameters
points ImmutableArray<T>
Returns
List<T>
PartitionToConvex(Polygon)
public List<T> PartitionToConvex(Polygon concave)
This doesn't work yet
Parameters
concave Polygon
Returns
List<T>
ReorderVertices(List)
public List<T> ReorderVertices(List<T> vertices)
Parameters
vertices List<T>
Returns
List<T>
AddPosition(Vector2)
public Polygon AddPosition(Vector2 add)
Parameters
add Vector2
Returns
Polygon
AtPosition(Point)
public Polygon AtPosition(Point target)
Returns this polygon with a new position. The position is calculated using the vertice 0 as origin.
Parameters
target Point
Returns
Polygon
Exceptions
NotImplementedException
FromRectangle(int, int, int, int)
public Polygon FromRectangle(int x, int y, int width, int height)
Parameters
x int
y int
width int
height int
Returns
Polygon
RemoveVerticeAt(int)
public Polygon RemoveVerticeAt(int index)
Parameters
index int
Returns
Polygon
WithNewVerticeAt(int, Vector2)
public Polygon WithNewVerticeAt(int index, Vector2 target)
Parameters
index int
target Vector2
Returns
Polygon
WithVerticeAt(int, Vector2)
public Polygon WithVerticeAt(int index, Vector2 target)
Parameters
index int
target Vector2
Returns
Polygon
GetBoundingBox()
public Rectangle GetBoundingBox()
Returns
Rectangle
Intersects(Polygon, Vector2, Vector2)
public T? Intersects(Polygon other, Vector2 positionA, Vector2 positionB)
Check if a polygon is inside another, if they do, return the minimum translation vector to move the polygon out of the other.
Parameters
other Polygon
positionA Vector2
positionB Vector2
Returns
T?
MergePolygons(Polygon, Polygon)
public T? MergePolygons(Polygon a, Polygon b)
Parameters
a Polygon
b Polygon
Returns
T?
ProjectOntoAxis(Vector2, Vector2)
public ValueTuple<T1, T2> ProjectOntoAxis(Vector2 axis, Vector2 offset)
Parameters
axis Vector2
offset Vector2
Returns
ValueTuple<T1, T2>
Draw(Batch2D, Vector2, bool, Color)
public void Draw(Batch2D batch, Vector2 position, bool flip, Color color)
Parameters
batch Batch2D
position Vector2
flip bool
color Color
⚡