### Hierarchy

- Point

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

Use the static functions Point.parse and Point.stringify to convert to and from a standard string representation that is independent of the current locale.

When an instance of this class is the value of a property of a GraphObject class or Diagram or CommandHandler or a Tool class, you should treat the object as if it were frozen or read-only -- you cannot modify its properties. This allows the property to return a value without allocating a new instance. If you need to do your own calculations with the value, call copy to make a new instance with the same values that you can modify.

Many methods modify the object's properties and then return a reference to "this" object. The only instance method to allocate a new object is the copy method. The static Point.parse method also allocates a new object.

The "Debug" implementation of this class is significantly slower than the "Release" implementation, mostly due to additional error checking.

You cannot inherit from this class.

## Index

### Constructors

- constructor

### Properties

- x
- y

### Methods

- add
- copy
- direction
- direction
- directionPoint
- distanceLineSegmentSquared
- distanceSquared
- distanceSquared
- distanceSquaredPoint
- equalTo
- equals
- isReal
- normalize
- offset
- parse
- projectOntoLineSegment
- projectOntoLineSegmentPoint
- rotate
- scale
- set
- setRectSpot
- setSpot
- setTo
- snapToGrid
- snapToGridPoint
- stringify
- subtract

## Constructors

### constructor

- new Point(x?: number, y?: number): Point

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

  #### Parameters

  - ##### Optional x: number

    The x value.

  - ##### Optional y: number

    The y value.

  #### Returns Point

## Properties

### x : number

- Gets or sets the x value of the Point.

### y : number

- Gets or sets the y value of the Point.

## Methods

### add

- add(p: Point): Point

- Modify this point so that is the sum of the current Point and the x and y co-ordinates of the given Point.

  see

    offset, subtract

  #### Parameters

  - ##### p: Point

    The Point to add to this Point.

  #### Returns Point

  this.

### Virtual copy

- copy(): Point

- Create a copy of this Point, with the same values.

  #### Returns Point

### direction

- direction(px: number, py: number): number

- 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.

  see

    directionPoint

  #### Parameters

  - ##### px: number

  - ##### py: number

  #### Returns number

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

### Static direction

- direction(px: number, py: number, qx: number, qy: number): number

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

  #### Parameters

  - ##### px: number

  - ##### py: number

  - ##### qx: number

  - ##### qy: number

  #### Returns number

### directionPoint

- directionPoint(p: Point): number

- 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.

  see

    direction

  #### Parameters

  - ##### p: Point

    the other Point to which to measure the relative angle.

  #### Returns number

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

### Static distanceLineSegmentSquared

- distanceLineSegmentSquared(px: number, py: number, ax: number, ay: number, bx: number, by: number): number

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

  #### Parameters

  - ##### px: number

  - ##### py: number

  - ##### ax: number

  - ##### ay: number

  - ##### bx: number

  - ##### by: number

  #### Returns number

  the euclidean distance.

### distanceSquared

- distanceSquared(px: number, py: number): number

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

  see

    distanceSquaredPoint

  #### Parameters

  - ##### px: number

  - ##### py: number

  #### Returns number

  the square of the euclidean distance.

### Static distanceSquared

- distanceSquared(px: number, py: number, qx: number, qy: number): number

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

  #### Parameters

  - ##### px: number

  - ##### py: number

  - ##### qx: number

  - ##### qy: number

  #### Returns number

### distanceSquaredPoint

- distanceSquaredPoint(p: Point): number

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

  see

    distanceSquared

  #### Parameters

  - ##### p: Point

    the other Point to measure to.

  #### Returns number

  the square of the euclidean distance.

### equalTo

- equalTo(x: number, y: number): boolean

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

  see

    equals

  #### Parameters

  - ##### x: number

  - ##### y: number

  #### Returns boolean

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

### equals

- equals(p: Point): boolean

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

  see

    equalTo

  #### Parameters

  - ##### p: Point

    The Point to compare to the current Point.

  #### Returns boolean

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

### isReal

- isReal(): boolean

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

  #### Returns boolean

### normalize

- normalize(): Point

- Modify this Point so that its X and Y values have been normalized to a unit length. However, if this Point is the origin (zero, zero), its length remains zero.

  #### Returns Point

  this.

### offset

- offset(dx: number, dy: number): Point

- Modify this point by shifting its values with the given DX and DY offsets.

  see

    add, subtract

  #### Parameters

  - ##### dx: number

  - ##### dy: number

  #### Returns Point

  this.

### Static parse

- parse(str: string): Point

- This static function can be used to read in a Point from a string that was produced by Point.stringify.

  `go.Point.parse("1 2")` produces the Point `new go.Point(1, 2)`.

  #### Parameters

  - ##### str: string

  #### Returns Point

### projectOntoLineSegment

- projectOntoLineSegment(px: number, py: number, qx: number, qy: number): Point

- Modify this point to be the closest point to this point that is on a finite line segment.

  since

    1.3

  #### Parameters

  - ##### px: number

    one end of the finite line segment

  - ##### py: number

    one end of the finite line segment

  - ##### qx: number

    the other end of the finite line segment

  - ##### qy: number

    the other end of the finite line segment

  #### Returns Point

  this modified Point

### projectOntoLineSegmentPoint

- projectOntoLineSegmentPoint(p: Point, q: Point): Point

- Modify this point to be the closest point to this point that is on a finite line segment.

  since

    1.3

  #### Parameters

  - ##### p: Point

    one end of the finite line segment

  - ##### q: Point

    the other end of the finite line segment

  #### Returns Point

  this modified Point

### rotate

- rotate(angle: number): Point

- Modify this Point so that has been rotated about the origin by the given angle.

  #### Parameters

  - ##### angle: number

    an angle in degrees.

  #### Returns Point

  this.

### scale

- scale(sx: number, sy: number): Point

- Modify this Point so that its X and Y values have been scaled by given factors along the X and Y axes.

  #### Parameters

  - ##### sx: number

  - ##### sy: number

  #### Returns Point

  this.

### set

- set(p: Point): Point

- Modify this Point so that its X and Y values are the same as the given Point.

  #### Parameters

  - ##### p: Point

    the given Point.

  #### Returns Point

  this.

### setRectSpot

- setRectSpot(r: Rect, spot: Spot): Point

- Modify this Point so that its X and Y values correspond to a particular Spot in a given Rect.

  The result is meaningless if Spot.isNoSpot is true for the given Spot.

  see

    setSpot

  #### Parameters

  - ##### r: Rect

    the Rect for which we are finding the point.

  - ##### spot: Spot

    the Spot; Spot.isSpot must be true for this Spot.

  #### Returns Point

  this.

### setSpot

- setSpot(x: number, y: number, w: number, h: number, spot: Spot): Point

- Modify this Point so that its X and Y values correspond to a particular Spot in a given rectangle.

  The result is meaningless if Spot.isNoSpot is true for the given Spot.

  see

    setRectSpot

  #### Parameters

  - ##### x: number

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

  - ##### y: number

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

  - ##### w: number

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

  - ##### h: number

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

  - ##### spot: Spot

    the Spot; Spot.isSpot must be true for this Spot.

  #### Returns Point

  this the point of the spot in the rectangle.

### setTo

- setTo(x: number, y: number): Point

- Modify this Point with new X and Y values.

  #### Parameters

  - ##### x: number

  - ##### y: number

  #### Returns Point

  this.

### snapToGrid

- snapToGrid(originx: number, originy: number, cellwidth: number, cellheight: number): Point

- Modify this point to be at the nearest point on an infinite grid, given the grid's origin and size of each grid cell.

  since

    1.3

  #### Parameters

  - ##### originx: number

    the top-left point of one of the grid cells

  - ##### originy: number

    the top-left point of one of the grid cells

  - ##### cellwidth: number

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

  - ##### cellheight: number

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

  #### Returns Point

  this modified Point

### snapToGridPoint

- snapToGridPoint(origin: Point, cellsize: Size): Point

- Modify this point to be at the nearest point on an infinite grid, given the grid's origin and size of each grid cell.

  since

    1.3

  #### Parameters

  - ##### origin: Point

    the top-left point of one of the grid cells

  - ##### cellsize: Size

    the size of each grid cell

  #### Returns Point

  this modified Point

### Static stringify

- stringify(val: Point): string

- This static function can be used to write out a Point as a string that can be read by Point.parse.

  `go.Point.stringify(new go.Point(1, 2))` produces the string "1 2".

  #### Parameters

  - ##### val: Point

  #### Returns string

### subtract

- subtract(p: Point): Point

- Modify this point so that is the difference of this Point and the x and y co-ordinates of the given Point.

  see

    offset, add

  #### Parameters

  - ##### p: Point

    The Point to subtract from the current Point.

  #### Returns Point

  this.

Copyright © 1998-2020 by Northwoods Software Corporation.