Struct Point

GoDiagram®
v10.0.12
by Northwoods Software®

A Point represents an x- and y-coordinate pair in two-dimensional space.

Namespace: Northwoods.Go
Assembly: Northwoods.GoDiagram.Avalonia.dll
Syntax
[JsonConverter(typeof(PointJsonConverter))]
public struct Point
Remarks

Use the static functions Parse(string) and Stringify(Point) to convert to and from a standard string representation that is independent of the current locale.

Constructors

Point(double, double)

The default constructor produces the Point(0,0). This constructor may take either zero arguments or two arguments.

Declaration
public Point(double x = 0, double y = 0)
Parameters
Type Name Description
double x

The x value.

double y

The y value.

Properties

X

Gets or sets the x value of the Point.

Declaration
public double X { readonly get; set; }
Property Value
Type Description
double

Y

Gets or sets the y value of the Point.

Declaration
public double Y { readonly get; set; }
Property Value
Type Description
double

Methods

Add(Point)

Returns a new Point that is the sum of this Point and the x and y coordinates of the given Point.

Declaration
public Point Add(Point p)
Parameters
Type Name Description
Point p

The Point to add to this Point.

Returns
Type Description
Point

A new Point.

See Also

CompareWithLineSegment(Point, Point)

Compare this point with a finite line segment given by two Points.

Declaration
public double CompareWithLineSegment(Point p, Point q)
Parameters
Type Name Description
Point p

one end of the finite line segment

Point q

the other end of the finite line segment

Returns
Type Description
double

<0 if on the left side, or >0 if on the right side, or zero if exactly on the finite line segment

Remarks

This method compares this point with a finite line segment determined by the given two Points. If the point is on the finite line segment, this returns zero. If the point is on the left side of the segment, this returns a positive number. If the point is on the right side of the segment, this returns a negative number. If the point is on the infinitely extended line but not within the segment, then this returns a positive number if the point is beyond the end of the segment when going from A1 to A2, or this returns a negative number if the point comes before the segment's start at A1.

CompareWithLineSegment(double, double, double, double, double, double)

This static function compares a point with a finite line segment. If the point is on the finite line segment, this returns zero. If the point is on the left side of the segment, this returns a positive number. If the point is on the right side of the segment, this returns a negative number. If the point is on the infinitely extended line but not within the segment, then this returns a positive number if the point is beyond the end of the segment when going from A1 to A2, or this returns a negative number if the point comes before the segment's start at A1.

Declaration
public static double CompareWithLineSegment(double a1x, double a1y, double a2x, double a2y, double px, double py)
Parameters
Type Name Description
double a1x

start of line segment A1

double a1y

start of line segment A1

double a2x

end of line segment A2

double a2y

end of line segment A2

double px

point to be compared with the line segment A1-A2

double py

point to be compared with the line segment A1-A2

Returns
Type Description
double

<0 if on the left side, or >0 if on the right side, or zero if exactly on the finite line segment

Direction(Point)

Compute the angle from this Point to a given Point. However, if the given Point is the same as this Point, the direction is zero.

Declaration
public double Direction(Point p)
Parameters
Type Name Description
Point p

the other Point to which to measure the relative angle.

Returns
Type Description
double

The angle, in degrees, of the line from this Point to the given point.

See Also

Direction(double, double, double, double)

This static function returns the angle in degrees of the line from point P to point Q.

Declaration
public static double Direction(double px, double py, double qx, double qy)
Parameters
Type Name Description
double px
double py
double qx
double qy
Returns
Type Description
double

Direction(double, double)

Compute the angle from this Point to a given (px, py) point. However, if the point is the same as this Point, the direction is zero.

Declaration
public double Direction(double px, double py)
Parameters
Type Name Description
double px
double py
Returns
Type Description
double

The angle, in degrees, of the line from this Point to the given point.

See Also

DistanceLineSegmentSquared(double, double, double, double, double, double)

This static function returns the square of the distance from the point P to the finite line segment from point A to point B.

Declaration
public static double DistanceLineSegmentSquared(double px, double py, double ax, double ay, double bx, double by)
Parameters
Type Name Description
double px
double py
double ax
double ay
double bx
double by
Returns
Type Description
double

The euclidean distance.

DistanceSquared(Point)

Returns the square of the distance from this Point to a given Point.

Declaration
public double DistanceSquared(Point p)
Parameters
Type Name Description
Point p

the other Point to measure to.

Returns
Type Description
double

The square of the euclidean distance.

See Also

DistanceSquared(double, double, double, double)

This static function returns the square of the distance from the point P to the point Q.

Declaration
public static double DistanceSquared(double px, double py, double qx, double qy)
Parameters
Type Name Description
double px
double py
double qx
double qy
Returns
Type Description
double

DistanceSquared(double, double)

Returns the square of the distance from this point to a given point (px, py).

Declaration
public double DistanceSquared(double px, double py)
Parameters
Type Name Description
double px
double py
Returns
Type Description
double

The square of the euclidean distance.

See Also

Equals(double, double)

Indicates whether the given point (x, y) is equal to this Point.

Declaration
public bool Equals(double x, double y)
Parameters
Type Name Description
double x
double y
Returns
Type Description
bool

True if the two Points have identical X and Y values, false otherwise.

See Also

Equals(object)

Indicates whether the given Point is equal to this Point.

Declaration
public override bool Equals(object obj)
Parameters
Type Name Description
object obj

The Point to compare to the current Point.

Returns
Type Description
bool

True if the two Points have identical X and Y values, false otherwise.

Overrides
See Also

EqualsApprox(Point)

Indicates whether the given Point is nearly equal to this Point.

Declaration
public bool EqualsApprox(Point p)
Parameters
Type Name Description
Point p

The Point to compare to the current Point.

Returns
Type Description
bool

True if the two Points have x and y values that are equal with a tolerance of 0.5, false otherwise.

GetHashCode()

Creates a hash code for the point.

Declaration
public override int GetHashCode()
Returns
Type Description
int

A hash code for the current point structure.

Overrides

IntersectingLineSegments(double, double, double, double, double, double, double, double)

This static function is true if two finite straight line segments intersect each other.

Declaration
public static bool IntersectingLineSegments(double a1x, double a1y, double a2x, double a2y, double b1x, double b1y, double b2x, double b2y)
Parameters
Type Name Description
double a1x
double a1y
double a2x
double a2y
double b1x
double b1y
double b2x
double b2y
Returns
Type Description
bool

True if the two given finite line segments intersect with each other, false otherwise.

IsReal()

True if this Point has X and Y values that are real numbers and not infinity.

Declaration
public bool IsReal()
Returns
Type Description
bool

Normalize()

Returns a new Point that is this Point normalized to a unit length. However, if this Point is the origin (zero, zero), its length remains zero.

Declaration
public Point Normalize()
Returns
Type Description
Point

A new Point.

Offset(double, double)

Returns a new point by shifting this Point's values with the given DX and DY offsets.

Declaration
public Point Offset(double dx, double dy)
Parameters
Type Name Description
double dx
double dy
Returns
Type Description
Point

A new Point.

See Also

Parse(object)

This is a convenience method for Parse(string) that can be used as a Converter.

Declaration
public static object Parse(object str)
Parameters
Type Name Description
object str
Returns
Type Description
object

Parse(string)

This static method can be used to read in a Point from a string that was produced by Stringify(Point).

Declaration
public static Point Parse(string str)
Parameters
Type Name Description
string str
Returns
Type Description
Point
Remarks

Point.Parse("1 2") produces the Point new Point(1, 2).

ProjectOntoLineSegment(Point, Point)

Returns the closest Point to this Point that is on a finite line segment.

Declaration
public Point ProjectOntoLineSegment(Point p, Point q)
Parameters
Type Name Description
Point p

one end of the finite line segment

Point q

the other end of the finite line segment

Returns
Type Description
Point

A new Point.

See Also

ProjectOntoLineSegment(double, double, double, double)

Returns the closest Point to this Point that is on a finite line segment.

Declaration
public Point ProjectOntoLineSegment(double px, double py, double qx, double qy)
Parameters
Type Name Description
double px

one end of the finite line segment

double py

one end of the finite line segment

double qx

the other end of the finite line segment

double qy

the other end of the finite line segment

Returns
Type Description
Point

A new Point.

See Also

Rotate(double)

Returns a new Point that is this Point rotated about the origin by the given angle.

Declaration
public Point Rotate(double angle)
Parameters
Type Name Description
double angle

an angle in degrees.

Returns
Type Description
Point

A new Point.

Scale(double, double)

Returns a new Point that is this Point scaled by given factors along the X and Y axes.

Declaration
public Point Scale(double sx, double sy)
Parameters
Type Name Description
double sx
double sy
Returns
Type Description
Point

A new Point.

SetSpot(Rect, Spot)

Returns a new Point that's X and Y values correspond to a particular Spot in a given Rect.

Declaration
public static Point SetSpot(Rect r, Spot spot)
Parameters
Type Name Description
Rect r

the Rect for which we are finding the point.

Spot spot

the Spot; IsSpot() must be true for this Spot.

Returns
Type Description
Point

A new Point.

Remarks

The result is meaningless if IsNoSpot() is true for the given Spot.

See Also

SetSpot(double, double, double, double, Spot)

Returns a new Point that's X and Y values correspond to a particular Spot in a given rectangle.

Declaration
public static Point SetSpot(double x, double y, double w, double h, Spot spot)
Parameters
Type Name Description
double x

The X coordinate of the Rect for which we are finding the point.

double y

The Y coordinate of the Rect for which we are finding the point.

double w

The Width of the Rect for which we are finding the point.

double h

The Height of the Rect for which we are finding the point.

Spot spot

the Spot; IsSpot() must be true for this Spot.

Returns
Type Description
Point

A new Point, the spot in the rectangle.

Remarks

The result is meaningless if IsNoSpot() is true for the given Spot.

See Also

SnapToGrid(Point, Size)

Returns the closest Point to this Point on an infinite grid, given the grid's origin and size of each grid cell.

Declaration
public Point SnapToGrid(Point origin, Size cellsize)
Parameters
Type Name Description
Point origin

the top-left point of the grid

Size cellsize

the size of each grid cell

Returns
Type Description
Point

A new Point.

SnapToGrid(double, double, double, double)

Returns the closest Point to this Point on an infinite grid, given the grid's x and y origin and the width and height of its cells.

Declaration
public Point SnapToGrid(double originx, double originy, double cellwidth, double cellheight)
Parameters
Type Name Description
double originx

the x value of the top-left point of the grid

double originy

the y value of the top-left point of the grid

double cellwidth

the width of each grid cell -- must be a real number larger than zero

double cellheight

the height of each grid cell -- must be a real number larger than zero

Returns
Type Description
Point

A new Point.

Stringify(Point)

This static method can be used to write out a Point as a string that can be read by Parse(string).

Declaration
public static string Stringify(Point val)
Parameters
Type Name Description
Point val
Returns
Type Description
string
Remarks

Point.Stringify(new Point(1, 2)) produces the string "1 2".

Stringify(object)

This is a convenience method for Stringify(Point) that can be used as a BackConverter.

Declaration
public static object Stringify(object pt)
Parameters
Type Name Description
object pt
Returns
Type Description
object

Subtract(Point)

Returns a new Point that is the difference of this Point and the x and y coordinates of the given Point.

Declaration
public Point Subtract(Point p)
Parameters
Type Name Description
Point p

The Point to subtract from the current Point.

Returns
Type Description
Point

A new Point.

See Also

ToString()

Returns a string representation of the point.

Declaration
public override string ToString()
Returns
Type Description
string

A string representation of the current point.

Overrides

Operators

operator ==(Point, Point)

Declaration
public static bool operator ==(Point left, Point right)
Parameters
Type Name Description
Point left
Point right
Returns
Type Description
bool

operator !=(Point, Point)

Declaration
public static bool operator !=(Point left, Point right)
Parameters
Type Name Description
Point left
Point right
Returns
Type Description
bool