Class PolarCoordinate
A Polar Coordinate.
Implements
Namespace: SadRogue.Primitives
Assembly: TheSadRogue.Primitives.dll
Syntax
public sealed class PolarCoordinate : ValueType, IEquatable<PolarCoordinate>, IMatchable<PolarCoordinate>, IEquatable<(double, double)>, IMatchable<(double, double)>
Remarks
See wikipedia: https://en.wikipedia.org/wiki/Polar_coordinate_system Polar Coordinates are very, very slow and should not be used often
Constructors
PolarCoordinate(Double, Double)
Creates a new Polar Coordinate with the given Radius and Theta
Declaration
public PolarCoordinate(double radius, double theta)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | radius | Radius of the Polar Coord |
| Double | theta | Degree of rotation (clockwise) of the Polar Coord |
Fields
Radius
The distance away from the Origin (0,0) of this Polar Coord
Declaration
public readonly double Radius
Field Value
| Type | Description |
|---|---|
| Double |
Theta
The angle of rotation, clockwise, in radians
Declaration
public readonly double Theta
Field Value
| Type | Description |
|---|---|
| Double |
Properties
Functions
A handy list of example polar functions for you.
Declaration
public static Dictionary<string, Func<double, Point>> Functions { get; }
Property Value
| Type | Description |
|---|---|
| Dictionary<String, Func<Double, Point>> |
Remarks
This list contains several examples of Polar Coordinates you can use.
Add more by calling PolarFunctions.Add((theta) => { Return new PolarCoordinate(radius, theta);});
Each function accepts a parameter of Theta, which is the angle of rotation around the center. They return a Point that can be used on the map. Polar functions are very slow. Use them seldom, for things like spirographs As the radius gets larger, there will be increased likelihood of functions producing gaps in output. You've been warned.
Methods
Deconstruct(out Double, out Double)
Adds support for C# Deconstruction syntax.
Declaration
public void Deconstruct(out double radius, out double theta)
Parameters
| Type | Name | Description |
|---|---|---|
| Double | radius | |
| Double | theta |
Equals(PolarCoordinate)
Performs comparison between this PolarCoordinate and an other
Declaration
public bool Equals(PolarCoordinate other)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | other | The other Polar Coordinate to analyze |
Returns
| Type | Description |
|---|---|
| Boolean | Whether these two PolarCoordinates are equal |
Equals(Object)
Compares the equality of this Polar Coordinate to another object
Declaration
public override bool Equals(object obj)
Parameters
| Type | Name | Description |
|---|---|---|
| Object | obj | The object against which to compare |
Returns
| Type | Description |
|---|---|
| Boolean | Whether or not these objects are equal |
Equals((Double, Double))
Compares the values in this polar coordinate to the specified values.
Declaration
public bool Equals((double, double) other)
Parameters
| Type | Name | Description |
|---|---|---|
| (, )<Double, Double> | other |
Returns
| Type | Description |
|---|---|
| Boolean |
FromCartesian(Point)
Returns a new PolarCoordinate that is equivalent to the Cartesian point provided.
Declaration
public static PolarCoordinate FromCartesian(Point cartesian)
Parameters
| Type | Name | Description |
|---|---|---|
| Point | cartesian | The cartesian point to analyze |
Returns
| Type | Description |
|---|---|
| PolarCoordinate | An Equivalent Polar Coordinate |
FromCartesian(Int32, Int32)
Returns a new PolarCoordinate that is equivalent to the Cartesian point provided.
Declaration
public static PolarCoordinate FromCartesian(int cartesianX, int cartesianY)
Parameters
| Type | Name | Description |
|---|---|---|
| Int32 | cartesianX | X-value of the cartesian point to analyze. |
| Int32 | cartesianY | Y-value of the cartesian point to analyze. |
Returns
| Type | Description |
|---|---|
| PolarCoordinate | An Equivalent Polar Coordinate |
GetHashCode()
Gets the Object's Hash Code
Declaration
public override int GetHashCode()
Returns
| Type | Description |
|---|---|
| Int32 | A Hash code. |
Matches(PolarCoordinate)
Performs comparison between this PolarCoordinate and an other
Declaration
public bool Matches(PolarCoordinate other)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | other | The other Polar Coordinate to analyze |
Returns
| Type | Description |
|---|---|
| Boolean | Whether these two PolarCoordinates are equal |
Matches((Double, Double))
Compares the values in this polar coordinate to the specified values.
Declaration
public bool Matches((double, double) other)
Parameters
| Type | Name | Description |
|---|---|---|
| (, )<Double, Double> | other |
Returns
| Type | Description |
|---|---|
| Boolean |
ToCartesian()
Returns the Cartesian Equivalent of this Polar Coordinate
Declaration
public Point ToCartesian()
Returns
| Type | Description |
|---|---|
| Point | A Cartesian Coordinate that points at the same spot on the map as the Polar Coord |
ToString()
Ovverride ToString to help you debug
Declaration
public override string ToString()
Returns
| Type | Description |
|---|---|
| String | A short representation of the Polar Coordinate |
Operators
Equality(PolarCoordinate, PolarCoordinate)
Compares two polar Coordinates
Declaration
public static bool operator ==(PolarCoordinate left, PolarCoordinate right)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | left | The first polar coordinate to analyze |
| PolarCoordinate | right | The Second polar coordinate to analyze |
Returns
| Type | Description |
|---|---|
| Boolean | Whether or not these two Polar Coordinates are similar enough to be considered "Equal" |
Equality(PolarCoordinate, (Double, Double))
True if the two polar coordinates' radius and theta values are close enough to equal.
Declaration
public static bool operator ==(PolarCoordinate c, (double, double) tuple)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | c | |
| (, )<Double, Double> | tuple |
Returns
| Type | Description |
|---|---|
| Boolean | True if the two polar coordinates are equivalent, false if not. |
Equality((Double, Double), PolarCoordinate)
True if the two polar coordinate's values are equivalent.
Declaration
public static bool operator ==((double, double) tuple, PolarCoordinate c)
Parameters
| Type | Name | Description |
|---|---|---|
| (, )<Double, Double> | tuple | |
| PolarCoordinate | c |
Returns
| Type | Description |
|---|---|
| Boolean | True if the two polar coordinates are equal, false if not. |
Implicit(PolarCoordinate to Point)
Implicitly converts the polar coordinate to its cartesian plane equivalent.
Declaration
public static implicit operator Point(PolarCoordinate pos)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | pos | Polar coordinate to convert. |
Returns
| Type | Description |
|---|---|
| Point | The equivalent cartesian coordinate. |
Implicit(PolarCoordinate to (Double, Double))
Implicitly converts a PolarCoordinate to an equivalent tuple of two doubles.
Declaration
public static implicit operator (double, double)(PolarCoordinate c)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | c |
Returns
| Type | Description |
|---|---|
| (, )<Double, Double> |
Implicit((Double, Double) to PolarCoordinate)
Implicitly converts a tuple of two doubles to an equivalent PolarCoordinate.
Declaration
public static implicit operator PolarCoordinate((double, double) tuple)
Parameters
| Type | Name | Description |
|---|---|---|
| (, )<Double, Double> | tuple |
Returns
| Type | Description |
|---|---|
| PolarCoordinate |
Inequality(PolarCoordinate, PolarCoordinate)
Compares two PolarCoordinates
Declaration
public static bool operator !=(PolarCoordinate left, PolarCoordinate right)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | left | The first polar coordinate to analyze |
| PolarCoordinate | right | The second PolarCoordinate to analyze |
Returns
| Type | Description |
|---|---|
| Boolean | Whether these polar coordinates are dissimilar enough to not be equal |
Inequality(PolarCoordinate, (Double, Double))
True if either the radius or theta values aren't equivalent.
Declaration
public static bool operator !=(PolarCoordinate c, (double, double) tuple)
Parameters
| Type | Name | Description |
|---|---|---|
| PolarCoordinate | c | |
| (, )<Double, Double> | tuple |
Returns
| Type | Description |
|---|---|
| Boolean | True if either the radius or theta values are not equal, false if they are both equal. |
Inequality((Double, Double), PolarCoordinate)
True if either the radius or theta values are not equal.
Declaration
public static bool operator !=((double, double) tuple, PolarCoordinate c)
Parameters
| Type | Name | Description |
|---|---|---|
| (, )<Double, Double> | tuple | |
| PolarCoordinate | c |
Returns
| Type | Description |
|---|---|
| Boolean | True if either the radius or theta values are not equal, false if they are both equal. |