JUCE: Point< ValueType > Class Template Reference

JUCE

Public Types | Public Member Functions | Public Attributes | List of all members
Point< ValueType > Class Template Reference
juce_graphics » geometry

A pair of (x, y) coordinates. More...

`#include <juce_Point.h>`

## Public Types
using | FloatType = typename TypeHelpers::SmallestFloatType< ValueType >::type
| This type will be double if the Point's type is double, otherwise it will be float. More...

## Public Member Functions
constexpr | Point ()=default
| Creates a point at the origin. More...
constexpr | Point (const Point &)=default
| Creates a copy of another point. More...
constexpr | Point (ValueType initialX, ValueType initialY) noexcept
| Creates a point from an (x, y) position. More...
Point & | operator= (const Point &)=default
| Copies this point from another one. More...
constexpr bool | operator== (Point other) const noexcept
constexpr bool | operator!= (Point other) const noexcept
constexpr bool | isOrigin () const noexcept
| Returns true if the point is (0, 0). More...
constexpr bool | isFinite () const noexcept
| Returns true if the coordinates are finite values. More...
constexpr ValueType | getX () const noexcept
| Returns the point's x coordinate. More...
constexpr ValueType | getY () const noexcept
| Returns the point's y coordinate. More...
void | setX (ValueType newX) noexcept
| Sets the point's x coordinate. More...
void | setY (ValueType newY) noexcept
| Sets the point's y coordinate. More...
constexpr Point | withX (ValueType newX) const noexcept
| Returns a point which has the same Y position as this one, but a new X. More...
constexpr Point | withY (ValueType newY) const noexcept
| Returns a point which has the same X position as this one, but a new Y. More...
void | setXY (ValueType newX, ValueType newY) noexcept
| Changes the point's x and y coordinates. More...
void | addXY (ValueType xToAdd, ValueType yToAdd) noexcept
| Adds a pair of coordinates to this value. More...
constexpr Point | translated (ValueType deltaX, ValueType deltaY) const noexcept
| Returns a point with a given offset from this one. More...
constexpr Point | operator+ (Point other) const noexcept
| Adds two points together. More...
Point & | operator+= (Point other) noexcept
| Adds another point's coordinates to this one. More...
constexpr Point | operator- (Point other) const noexcept
| Subtracts one points from another. More...
Point & | operator-= (Point other) noexcept
| Subtracts another point's coordinates to this one. More...
template<typename OtherType >
constexpr Point | operator* (Point< OtherType > other) const noexcept
| Multiplies two points together. More...
template<typename OtherType >
Point & | operator*= (Point< OtherType > other) noexcept
| Multiplies another point's coordinates to this one. More...
template<typename OtherType >
constexpr Point | operator/ (Point< OtherType > other) const noexcept
| Divides one point by another. More...
template<typename OtherType >
Point & | operator/= (Point< OtherType > other) noexcept
| Divides this point's coordinates by another. More...
template<typename OtherType >
constexpr Point | operator* (OtherType multiplier) const noexcept
| Returns a point whose coordinates are multiplied by a given scalar value. More...
template<typename OtherType >
constexpr Point | operator/ (OtherType divisor) const noexcept
| Returns a point whose coordinates are divided by a given scalar value. More...
template<typename FloatType >
Point & | operator*= (FloatType multiplier) noexcept
| Multiplies the point's coordinates by a scalar value. More...
template<typename FloatType >
Point & | operator/= (FloatType divisor) noexcept
| Divides the point's coordinates by a scalar value. More...
constexpr Point | operator- () const noexcept
| Returns the inverse of this point. More...
ValueType | getDistanceFromOrigin () const noexcept
| Returns the straight-line distance between this point and the origin. More...
ValueType | getDistanceFrom (Point other) const noexcept
| Returns the straight-line distance between this point and another one. More...
constexpr ValueType | getDistanceSquaredFromOrigin () const noexcept
| Returns the square of the straight-line distance between this point and the origin. More...
constexpr ValueType | getDistanceSquaredFrom (Point other) const noexcept
| Returns the square of the straight-line distance between this point and another one. More...
FloatType | getAngleToPoint (Point other) const noexcept
| Returns the angle from this point to another one. More...
Point | rotatedAboutOrigin (ValueType angleRadians) const noexcept
| Returns the point that would be reached by rotating this point clockwise about the origin by the specified angle. More...
Point< FloatType > | getPointOnCircumference (float radius, float angle) const noexcept
| Taking this point to be the centre of a circle, this returns a point on its circumference. More...
Point< FloatType > | getPointOnCircumference (float radiusX, float radiusY, float angle) const noexcept
| Taking this point to be the centre of an ellipse, this returns a point on its circumference. More...
constexpr FloatType | getDotProduct (Point other) const noexcept
| Returns the dot-product of two points (x1 * x2 + y1 * y2). More...
void | applyTransform (const AffineTransform &transform) noexcept
| Uses a transform to change the point's coordinates. More...
Point | transformedBy (const AffineTransform &transform) const noexcept
| Returns the position of this point, if it is transformed by a given AffineTransform. More...
constexpr Point< int > | toInt () const noexcept
| Casts this point to a Point<int> object. More...
constexpr Point< float > | toFloat () const noexcept
| Casts this point to a Point<float> object. More...
constexpr Point< double > | toDouble () const noexcept
| Casts this point to a Point<double> object. More...
constexpr Point< int > | roundToInt () const noexcept
| Casts this point to a Point<int> object using roundToInt() to convert the values. More...
String | toString () const
| Returns the point as a string in the form "x, y". More...

## Public Attributes
ValueType | x {}
| The point's X coordinate. More...
ValueType | y {}
| The point's Y coordinate. More...

## Detailed Description

template<typename ValueType>
class Point< ValueType >

A pair of (x, y) coordinates.

The ValueType template should be a primitive type such as int, float, double, rather than a class.

See also
  Line, Path, AffineTransform

## Member Typedef Documentation

## ◆ FloatType

template<typename ValueType >

using Point< ValueType >::FloatType = typename TypeHelpers::SmallestFloatType<ValueType>::type

This type will be double if the Point's type is double, otherwise it will be float.

## Constructor & Destructor Documentation

## ◆ Point() [1/3]

template<typename ValueType >

constexpr Point< ValueType >::Point | ( |  | ) |
| constexprdefault

Creates a point at the origin.

Referenced by Point< ValueType >::operator*(), Point< ValueType >::operator+(), Point< ValueType >::operator-(), Point< ValueType >::operator/(), Point< ValueType >::rotatedAboutOrigin(), Point< ValueType >::transformedBy(), Point< ValueType >::translated(), Point< ValueType >::withX(), and Point< ValueType >::withY().

## ◆ Point() [2/3]

template<typename ValueType >

constexpr Point< ValueType >::Point | ( | const Point< ValueType > & |  | ) |
| constexprdefault

Creates a copy of another point.

## ◆ Point() [3/3]

template<typename ValueType >

constexpr Point< ValueType >::Point | ( | ValueType | initialX,
|  | ValueType | initialY
| ) |  |
| constexprnoexcept

Creates a point from an (x, y) position.

## Member Function Documentation

## ◆ operator=()

template<typename ValueType >

Point & Point< ValueType >::operator= | ( | const Point< ValueType > & |  | ) |
| default

Copies this point from another one.

## ◆ operator==()

template<typename ValueType >

constexpr bool Point< ValueType >::operator== | ( | Point< ValueType > | other | ) | const
| constexprnoexcept

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator!=()

template<typename ValueType >

constexpr bool Point< ValueType >::operator!= | ( | Point< ValueType > | other | ) | const
| constexprnoexcept

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ isOrigin()

template<typename ValueType >

constexpr bool Point< ValueType >::isOrigin | ( |  | ) | const
| constexprnoexcept

Returns true if the point is (0, 0).

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ isFinite()

template<typename ValueType >

constexpr bool Point< ValueType >::isFinite | ( |  | ) | const
| constexprnoexcept

Returns true if the coordinates are finite values.

References juce_isfinite(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getX()

template<typename ValueType >

constexpr ValueType Point< ValueType >::getX | ( |  | ) | const
| constexprnoexcept

Returns the point's x coordinate.

References Point< ValueType >::x.

## ◆ getY()

template<typename ValueType >

constexpr ValueType Point< ValueType >::getY | ( |  | ) | const
| constexprnoexcept

Returns the point's y coordinate.

References Point< ValueType >::y.

## ◆ setX()

template<typename ValueType >

void Point< ValueType >::setX | ( | ValueType | newX | ) |
| noexcept

Sets the point's x coordinate.

References Point< ValueType >::x.

## ◆ setY()

template<typename ValueType >

void Point< ValueType >::setY | ( | ValueType | newY | ) |
| noexcept

Sets the point's y coordinate.

References Point< ValueType >::y.

## ◆ withX()

template<typename ValueType >

constexpr Point Point< ValueType >::withX | ( | ValueType | newX | ) | const
| constexprnoexcept

Returns a point which has the same Y position as this one, but a new X.

References Point< ValueType >::Point(), and Point< ValueType >::y.

## ◆ withY()

template<typename ValueType >

constexpr Point Point< ValueType >::withY | ( | ValueType | newY | ) | const
| constexprnoexcept

Returns a point which has the same X position as this one, but a new Y.

References Point< ValueType >::Point(), and Point< ValueType >::x.

## ◆ setXY()

template<typename ValueType >

void Point< ValueType >::setXY | ( | ValueType | newX,
|  | ValueType | newY
| ) |  |
| noexcept

Changes the point's x and y coordinates.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ addXY()

template<typename ValueType >

void Point< ValueType >::addXY | ( | ValueType | xToAdd,
|  | ValueType | yToAdd
| ) |  |
| noexcept

Adds a pair of coordinates to this value.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ translated()

template<typename ValueType >

constexpr Point Point< ValueType >::translated | ( | ValueType | deltaX,
|  | ValueType | deltaY
| ) |  | const
| constexprnoexcept

Returns a point with a given offset from this one.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator+()

template<typename ValueType >

constexpr Point Point< ValueType >::operator+ | ( | Point< ValueType > | other | ) | const
| constexprnoexcept

Adds two points together.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator+=()

template<typename ValueType >

Point & Point< ValueType >::operator+= | ( | Point< ValueType > | other | ) |
| noexcept

Adds another point's coordinates to this one.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator-() [1/2]

template<typename ValueType >

constexpr Point Point< ValueType >::operator- | ( | Point< ValueType > | other | ) | const
| constexprnoexcept

Subtracts one points from another.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator-=()

template<typename ValueType >

Point & Point< ValueType >::operator-= | ( | Point< ValueType > | other | ) |
| noexcept

Subtracts another point's coordinates to this one.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator*() [1/2]

template<typename ValueType >
template<typename OtherType >

constexpr Point Point< ValueType >::operator* | ( | Point< OtherType > | other | ) | const
| constexprnoexcept

Multiplies two points together.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator*=() [1/2]

template<typename ValueType >
template<typename OtherType >

Point & Point< ValueType >::operator*= | ( | Point< OtherType > | other | ) |
| noexcept

Multiplies another point's coordinates to this one.

## ◆ operator/() [1/2]

template<typename ValueType >
template<typename OtherType >

constexpr Point Point< ValueType >::operator/ | ( | Point< OtherType > | other | ) | const
| constexprnoexcept

Divides one point by another.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator/=() [1/2]

template<typename ValueType >
template<typename OtherType >

Point & Point< ValueType >::operator/= | ( | Point< OtherType > | other | ) |
| noexcept

Divides this point's coordinates by another.

## ◆ operator*() [2/2]

template<typename ValueType >
template<typename OtherType >

constexpr Point Point< ValueType >::operator* | ( | OtherType | multiplier | ) | const
| constexprnoexcept

Returns a point whose coordinates are multiplied by a given scalar value.

References Point< ValueType >::Point(), gl::type, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator/() [2/2]

template<typename ValueType >
template<typename OtherType >

constexpr Point Point< ValueType >::operator/ | ( | OtherType | divisor | ) | const
| constexprnoexcept

Returns a point whose coordinates are divided by a given scalar value.

References gl::divisor, Point< ValueType >::Point(), gl::type, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator*=() [2/2]

template<typename ValueType >
template<typename FloatType >

Point & Point< ValueType >::operator*= | ( | FloatType | multiplier | ) |
| noexcept

Multiplies the point's coordinates by a scalar value.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator/=() [2/2]

template<typename ValueType >
template<typename FloatType >

Point & Point< ValueType >::operator/= | ( | FloatType | divisor | ) |
| noexcept

Divides the point's coordinates by a scalar value.

References gl::divisor, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ operator-() [2/2]

template<typename ValueType >

constexpr Point Point< ValueType >::operator- | ( |  | ) | const
| constexprnoexcept

Returns the inverse of this point.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getDistanceFromOrigin()

template<typename ValueType >

ValueType Point< ValueType >::getDistanceFromOrigin | ( |  | ) | const
| noexcept

Returns the straight-line distance between this point and the origin.

References juce_hypot(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getDistanceFrom()

template<typename ValueType >

ValueType Point< ValueType >::getDistanceFrom | ( | Point< ValueType > | other | ) | const
| noexcept

Returns the straight-line distance between this point and another one.

References juce_hypot(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getDistanceSquaredFromOrigin()

template<typename ValueType >

constexpr ValueType Point< ValueType >::getDistanceSquaredFromOrigin | ( |  | ) | const
| constexprnoexcept

Returns the square of the straight-line distance between this point and the origin.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getDistanceSquaredFrom()

template<typename ValueType >

constexpr ValueType Point< ValueType >::getDistanceSquaredFrom | ( | Point< ValueType > | other | ) | const
| constexprnoexcept

Returns the square of the straight-line distance between this point and another one.

## ◆ getAngleToPoint()

template<typename ValueType >

FloatType Point< ValueType >::getAngleToPoint | ( | Point< ValueType > | other | ) | const
| noexcept

Returns the angle from this point to another one.

Taking this point to be the centre of a circle, and the other point being a position on the circumference, the return value is the number of radians clockwise from the 12 o'clock direction. So 12 o'clock = 0, 3 o'clock = Pi/2, 6 o'clock = Pi, 9 o'clock = -Pi/2

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ rotatedAboutOrigin()

template<typename ValueType >

Point Point< ValueType >::rotatedAboutOrigin | ( | ValueType | angleRadians | ) | const
| noexcept

Returns the point that would be reached by rotating this point clockwise about the origin by the specified angle.

References Point< ValueType >::Point(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getPointOnCircumference() [1/2]

template<typename ValueType >

Point< FloatType > Point< ValueType >::getPointOnCircumference | ( | float | radius,
|  | float | angle
| ) |  | const
| noexcept

Taking this point to be the centre of a circle, this returns a point on its circumference.

Parameters

  radius | the radius of the circle.
  angle | the angle of the point, in radians clockwise from the 12 o'clock position.

References gl::angle, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getPointOnCircumference() [2/2]

template<typename ValueType >

Point< FloatType > Point< ValueType >::getPointOnCircumference | ( | float | radiusX,
|  | float | radiusY,
|  | float | angle
| ) |  | const
| noexcept

Taking this point to be the centre of an ellipse, this returns a point on its circumference.

Parameters

  radiusX | the horizontal radius of the circle.
  radiusY | the vertical radius of the circle.
  angle | the angle of the point, in radians clockwise from the 12 o'clock position.

References gl::angle, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ getDotProduct()

template<typename ValueType >

constexpr FloatType Point< ValueType >::getDotProduct | ( | Point< ValueType > | other | ) | const
| constexprnoexcept

Returns the dot-product of two points (x1 * x2 + y1 * y2).

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ applyTransform()

template<typename ValueType >

void Point< ValueType >::applyTransform | ( | const AffineTransform & | transform | ) |
| noexcept

Uses a transform to change the point's coordinates.

This will only compile if ValueType = float!

See also
  AffineTransform::transformPoint

References gl::transform, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ transformedBy()

template<typename ValueType >

Point Point< ValueType >::transformedBy | ( | const AffineTransform & | transform | ) | const
| noexcept

Returns the position of this point, if it is transformed by a given AffineTransform.

References Point< ValueType >::Point(), gl::transform, Point< ValueType >::x, and Point< ValueType >::y.

## ◆ toInt()

template<typename ValueType >

constexpr Point< int > Point< ValueType >::toInt | ( |  | ) | const
| constexprnoexcept

Casts this point to a Point<int> object.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ toFloat()

template<typename ValueType >

constexpr Point< float > Point< ValueType >::toFloat | ( |  | ) | const
| constexprnoexcept

Casts this point to a Point<float> object.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ toDouble()

template<typename ValueType >

constexpr Point< double > Point< ValueType >::toDouble | ( |  | ) | const
| constexprnoexcept

Casts this point to a Point<double> object.

References Point< ValueType >::x, and Point< ValueType >::y.

## ◆ roundToInt()

template<typename ValueType >

constexpr Point< int > Point< ValueType >::roundToInt | ( |  | ) | const
| constexprnoexcept

Casts this point to a Point<int> object using roundToInt() to convert the values.

References roundToInt(), Point< ValueType >::x, and Point< ValueType >::y.

## ◆ toString()

template<typename ValueType >

String Point< ValueType >::toString | ( |  | ) | const

Returns the point as a string in the form "x, y".

References Point< ValueType >::x, and Point< ValueType >::y.

## Member Data Documentation

## ◆ x

template<typename ValueType >

ValueType Point< ValueType >::x {}

The point's X coordinate.

Referenced by Point< ValueType >::addXY(), Point< ValueType >::applyTransform(), Point< ValueType >::getAngleToPoint(), Point< ValueType >::getDistanceFrom(), Point< ValueType >::getDistanceFromOrigin(), Point< ValueType >::getDistanceSquaredFromOrigin(), Point< ValueType >::getDotProduct(), Point< ValueType >::getPointOnCircumference(), Point< ValueType >::getX(), Point< ValueType >::isFinite(), Point< ValueType >::isOrigin(), Point< ValueType >::operator!=(), Point< ValueType >::operator*(), Point< ValueType >::operator*=(), Point< ValueType >::operator+(), Point< ValueType >::operator+=(), Point< ValueType >::operator-(), Point< ValueType >::operator-=(), Point< ValueType >::operator/(), Point< ValueType >::operator/=(), Point< ValueType >::operator==(), Point< ValueType >::rotatedAboutOrigin(), Point< ValueType >::roundToInt(), Point< ValueType >::setX(), Point< ValueType >::setXY(), Point< ValueType >::toDouble(), Point< ValueType >::toFloat(), Point< ValueType >::toInt(), Point< ValueType >::toString(), Point< ValueType >::transformedBy(), Point< ValueType >::translated(), and Point< ValueType >::withY().

## ◆ y

template<typename ValueType >

ValueType Point< ValueType >::y {}

The point's Y coordinate.

Referenced by Point< ValueType >::addXY(), Point< ValueType >::applyTransform(), Point< ValueType >::getAngleToPoint(), Point< ValueType >::getDistanceFrom(), Point< ValueType >::getDistanceFromOrigin(), Point< ValueType >::getDistanceSquaredFromOrigin(), Point< ValueType >::getDotProduct(), Point< ValueType >::getPointOnCircumference(), Point< ValueType >::getY(), Point< ValueType >::isFinite(), Point< ValueType >::isOrigin(), Point< ValueType >::operator!=(), Point< ValueType >::operator*(), Point< ValueType >::operator*=(), Point< ValueType >::operator+(), Point< ValueType >::operator+=(), Point< ValueType >::operator-(), Point< ValueType >::operator-=(), Point< ValueType >::operator/(), Point< ValueType >::operator/=(), Point< ValueType >::operator==(), Point< ValueType >::rotatedAboutOrigin(), Point< ValueType >::roundToInt(), Point< ValueType >::setXY(), Point< ValueType >::setY(), Point< ValueType >::toDouble(), Point< ValueType >::toFloat(), Point< ValueType >::toInt(), Point< ValueType >::toString(), Point< ValueType >::transformedBy(), Point< ValueType >::translated(), and Point< ValueType >::withX().

The documentation for this class was generated from the following file:

- juce_Point.h