Loading...
Searching...
No Matches
Parallelogram< ValueType > Class Template Reference

Represents a parallelogram that is defined by 3 points. More...

Public Member Functions

 Parallelogram ()=default
 Creates a parallelogram with zero size at the origin.
 
 Parallelogram (const Parallelogram &)=default
 Creates a copy of another parallelogram.
 
 Parallelogram (Point< ValueType > topLeftPosition, Point< ValueType > topRightPosition, Point< ValueType > bottomLeftPosition) noexcept
 Creates a parallelogram based on 3 points.
 
 Parallelogram (Rectangle< ValueType > rectangle) noexcept
 Creates a parallelogram from a rectangle.
 
Parallelogramoperator= (const Parallelogram &)=default
 
 ~Parallelogram ()=default
 Destructor.
 
bool isEmpty () const noexcept
 Returns true if the parallelogram has an area of zero.
 
bool isFinite () const noexcept
 Returns true if the parallelogram's coordinates are all finite numbers, i.e.
 
ValueType getWidth () const noexcept
 Returns the width of the parallelogram (i.e.
 
ValueType getHeight () const noexcept
 Returns the height of the parallelogram (i.e.
 
Point< ValueType > getTopLeft () const noexcept
 Returns the parallelogram's top-left position as a Point.
 
Point< ValueType > getTopRight () const noexcept
 Returns the parallelogram's top-right position as a Point.
 
Point< ValueType > getBottomLeft () const noexcept
 Returns the parallelogram's bottom-left position as a Point.
 
Point< ValueType > getBottomRight () const noexcept
 Returns the parallelogram's bottom-right position as a Point.
 
bool operator== (const Parallelogram &other) const noexcept
 Returns true if the two parallelograms are identical.
 
bool operator!= (const Parallelogram &other) const noexcept
 Returns true if the two parallelograms are not identical.
 
Parallelogram operator+ (Point< ValueType > deltaPosition) const noexcept
 Returns a parallelogram which is the same as this one moved by a given amount.
 
Parallelogramoperator+= (Point< ValueType > deltaPosition) noexcept
 Moves this parallelogram by a given amount.
 
Parallelogram operator- (Point< ValueType > deltaPosition) const noexcept
 Returns a parallelogram which is the same as this one moved by a given amount.
 
Parallelogramoperator-= (Point< ValueType > deltaPosition) noexcept
 Moves this parallelogram by a given amount.
 
template<typename PointOrScalarType>
Parallelogram operator* (PointOrScalarType scaleFactor) const noexcept
 Returns a parallelogram that has been scaled by the given amount, centred around the origin.
 
template<typename PointOrScalarType>
Parallelogram operator*= (PointOrScalarType scaleFactor) noexcept
 Scales this parallelogram by the given amount, centred around the origin.
 
Point< ValueType > getRelativePoint (Point< ValueType > relativePosition) const noexcept
 Returns a point within this parallelogram, specified as proportional coordinates.
 
Parallelogram transformedBy (const AffineTransform &transform) const noexcept
 Returns a transformed version of the parallelogram.
 
Rectangle< ValueType > getBoundingBox () const noexcept
 Returns the smallest rectangle that encloses this parallelogram.
 

Public Attributes

Point< ValueType > topLeft
 
Point< ValueType > topRight
 
Point< ValueType > bottomLeft
 

Detailed Description

template<typename ValueType>
class Parallelogram< ValueType >

Represents a parallelogram that is defined by 3 points.

See also
Rectangle, Point, Line

Constructor & Destructor Documentation

◆ Parallelogram() [1/4]

template<typename ValueType>
Parallelogram< ValueType >::Parallelogram ( )
default

Creates a parallelogram with zero size at the origin.

Referenced by operator!=(), operator*(), operator*=(), operator+(), operator+=(), operator-(), operator-=(), operator=(), operator==(), Parallelogram(), and transformedBy().

◆ Parallelogram() [2/4]

template<typename ValueType>
Parallelogram< ValueType >::Parallelogram ( const Parallelogram< ValueType > & )
default

Creates a copy of another parallelogram.

References Parallelogram().

◆ Parallelogram() [3/4]

template<typename ValueType>
Parallelogram< ValueType >::Parallelogram ( Point< ValueType > topLeftPosition,
Point< ValueType > topRightPosition,
Point< ValueType > bottomLeftPosition )
noexcept

Creates a parallelogram based on 3 points.

References Point.

◆ Parallelogram() [4/4]

template<typename ValueType>
Parallelogram< ValueType >::Parallelogram ( Rectangle< ValueType > rectangle)
noexcept

Creates a parallelogram from a rectangle.

◆ ~Parallelogram()

template<typename ValueType>
Parallelogram< ValueType >::~Parallelogram ( )
default

Destructor.

Member Function Documentation

◆ operator=()

template<typename ValueType>
Parallelogram & Parallelogram< ValueType >::operator= ( const Parallelogram< ValueType > & )
default

References Parallelogram().

◆ isEmpty()

template<typename ValueType>
bool Parallelogram< ValueType >::isEmpty ( ) const
noexcept

Returns true if the parallelogram has an area of zero.

References bottomLeft, topLeft, and topRight.

◆ isFinite()

template<typename ValueType>
bool Parallelogram< ValueType >::isFinite ( ) const
noexcept

Returns true if the parallelogram's coordinates are all finite numbers, i.e.

not NaN or infinity.

References bottomLeft, topLeft, and topRight.

◆ getWidth()

template<typename ValueType>
ValueType Parallelogram< ValueType >::getWidth ( ) const
noexcept

Returns the width of the parallelogram (i.e.

the straight-line distance between the top-left and top-right.

References Line< ValueType >::getLength(), topLeft, and topRight.

◆ getHeight()

template<typename ValueType>
ValueType Parallelogram< ValueType >::getHeight ( ) const
noexcept

Returns the height of the parallelogram (i.e.

the straight-line distance between the top-left and bottom-left.

References bottomLeft, Line< ValueType >::getLength(), and topLeft.

◆ getTopLeft()

template<typename ValueType>
Point< ValueType > Parallelogram< ValueType >::getTopLeft ( ) const
noexcept

Returns the parallelogram's top-left position as a Point.

References Point, and topLeft.

◆ getTopRight()

template<typename ValueType>
Point< ValueType > Parallelogram< ValueType >::getTopRight ( ) const
noexcept

Returns the parallelogram's top-right position as a Point.

References Point, and topRight.

◆ getBottomLeft()

template<typename ValueType>
Point< ValueType > Parallelogram< ValueType >::getBottomLeft ( ) const
noexcept

Returns the parallelogram's bottom-left position as a Point.

References bottomLeft, and Point.

◆ getBottomRight()

template<typename ValueType>
Point< ValueType > Parallelogram< ValueType >::getBottomRight ( ) const
noexcept

Returns the parallelogram's bottom-right position as a Point.

References bottomLeft, Point, topLeft, and topRight.

Referenced by getBoundingBox().

◆ operator==()

template<typename ValueType>
bool Parallelogram< ValueType >::operator== ( const Parallelogram< ValueType > & other) const
noexcept

Returns true if the two parallelograms are identical.

References bottomLeft, Parallelogram(), topLeft, and topRight.

Referenced by operator!=().

◆ operator!=()

template<typename ValueType>
bool Parallelogram< ValueType >::operator!= ( const Parallelogram< ValueType > & other) const
noexcept

Returns true if the two parallelograms are not identical.

References operator==(), and Parallelogram().

◆ operator+()

template<typename ValueType>
Parallelogram Parallelogram< ValueType >::operator+ ( Point< ValueType > deltaPosition) const
noexcept

Returns a parallelogram which is the same as this one moved by a given amount.

References Parallelogram(), and Point.

Referenced by operator-().

◆ operator+=()

template<typename ValueType>
Parallelogram & Parallelogram< ValueType >::operator+= ( Point< ValueType > deltaPosition)
noexcept

Moves this parallelogram by a given amount.

References bottomLeft, Parallelogram(), Point, topLeft, and topRight.

Referenced by operator-=().

◆ operator-()

template<typename ValueType>
Parallelogram Parallelogram< ValueType >::operator- ( Point< ValueType > deltaPosition) const
noexcept

Returns a parallelogram which is the same as this one moved by a given amount.

References operator+(), Parallelogram(), and Point.

◆ operator-=()

template<typename ValueType>
Parallelogram & Parallelogram< ValueType >::operator-= ( Point< ValueType > deltaPosition)
noexcept

Moves this parallelogram by a given amount.

References operator+=(), Parallelogram(), and Point.

◆ operator*()

template<typename ValueType>
template<typename PointOrScalarType>
Parallelogram Parallelogram< ValueType >::operator* ( PointOrScalarType scaleFactor) const
noexcept

Returns a parallelogram that has been scaled by the given amount, centred around the origin.

References Parallelogram().

◆ operator*=()

template<typename ValueType>
template<typename PointOrScalarType>
Parallelogram Parallelogram< ValueType >::operator*= ( PointOrScalarType scaleFactor)
noexcept

Scales this parallelogram by the given amount, centred around the origin.

References bottomLeft, Parallelogram(), topLeft, and topRight.

◆ getRelativePoint()

template<typename ValueType>
Point< ValueType > Parallelogram< ValueType >::getRelativePoint ( Point< ValueType > relativePosition) const
noexcept

Returns a point within this parallelogram, specified as proportional coordinates.

The relative X and Y values should be between 0 and 1, where 0 is the left or top of this parallelogram, and 1 is the right or bottom. (Out-of-bounds values will return a point outside the parallelogram).

References bottomLeft, Point, topLeft, and topRight.

◆ transformedBy()

template<typename ValueType>
Parallelogram Parallelogram< ValueType >::transformedBy ( const AffineTransform & transform) const
noexcept

Returns a transformed version of the parallelogram.

References Parallelogram().

◆ getBoundingBox()

template<typename ValueType>
Rectangle< ValueType > Parallelogram< ValueType >::getBoundingBox ( ) const
noexcept

Returns the smallest rectangle that encloses this parallelogram.

References bottomLeft, Rectangle< ValueType >::findAreaContainingPoints(), getBottomRight(), Point, topLeft, and topRight.

Member Data Documentation

◆ topLeft

template<typename ValueType>
Point<ValueType> Parallelogram< ValueType >::topLeft

◆ topRight

template<typename ValueType>
Point<ValueType> Parallelogram< ValueType >::topRight

◆ bottomLeft

template<typename ValueType>
Point<ValueType> Parallelogram< ValueType >::bottomLeft
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram