Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Point

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

  • 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

  • Gets or sets the x value of the Point.

  • Gets or sets the y value of the Point.

Methods

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

  • compareWithLineSegmentPoint(p: Point, q: Point): number
  • since

    2.2

    Parameters

    • p: Point

      one end of the finite line segment

    • q: Point

      the other end of the finite line segment

    Returns number

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

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

    Returns Point

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

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

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

  • 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(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(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(): boolean
  • True if this Point has X and Y values that are real numbers and not infinity.

    Returns boolean

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

  • 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

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

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

  • 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(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(x: number, y: number): Point
  • Modify this Point with new X and Y values.

    Parameters

    • x: number
    • y: number

    Returns Point

    this.

  • 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

  • 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

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

  • compareWithLineSegment(a1x: number, a1y: number, a2x: number, a2y: number, px: number, py: number): number
  • since

    2.2

    Parameters

    • a1x: number
    • a1y: number
    • a2x: number
    • a2y: number
    • px: number
    • py: number

    Returns number

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

  • 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

  • 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(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

  • intersectingLineSegments(a1x: number, a1y: number, a2x: number, a2y: number, b1x: number, b1y: number, b2x: number, b2y: number): boolean
  • since

    2.2

    Parameters

    • a1x: number
    • a1y: number
    • a2x: number
    • a2y: number
    • b1x: number
    • b1y: number
    • b2x: number
    • b2y: number

    Returns boolean

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

  • 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

  • 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

    Returns string