#include <opennurbs_point.h>

Public Member Functions

 ON_2dVector ()=default
 x,y not initialized More...
 ON_2dVector (const ON_2dVector &)=default
 ON_2dVector (double x, double y)
 ON_2dVector (const ON_3dVector &)
 ON_2dVector (const ON_2dPoint &)
 ON_2dVector (const ON_3dPoint &)
 ON_2dVector (const double *)
 ON_2dVector (const ON_2fVector &)
 ON_2dVector (const ON_3fVector &)
 ON_2dVector (const ON_2fPoint &)
 ON_2dVector (const ON_3fPoint &)
 ON_2dVector (const float *)
 ~ON_2dVector ()=default
ON__UINT32 DataCRC (ON__UINT32 current_remainder) const
bool Decompose (const ON_2dVector &, const ON_2dVector &, double *, double *) const
bool IsNotZero () const
int IsParallelTo (const ON_2dVector &other, double angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE) const
bool IsPerpendicularTo (const ON_2dVector &other, double angle_tolerance=ON_DEFAULT_ANGLE_TOLERANCE) const
bool IsTiny (double tiny_tol=ON_ZERO_TOLERANCE) const
 Test a vector to see if it is very short More...
bool IsUnitVector () const
bool IsUnset () const
bool IsValid () const
bool IsZero () const
double Length () const
double LengthSquared () const
double MaximumCoordinate () const
int MaximumCoordinateIndex () const
double MinimumCoordinate () const
int MinimumCoordinateIndex () const
 operator const double * () const
 operator double * ()
 (double*) conversion operators More...
bool operator!= (const ON_2dVector &) const
double operator* (const ON_2dVector &) const
 DO NOT ADD ANY MORE overrides of += or -=. More...
double operator* (const ON_2dPoint &) const
double operator* (const ON_2fVector &) const
ON_2dVector operator* (int) const
ON_2dVector operator* (float) const
ON_2dVector operator* (double) const
ON_2dVector operator* (const ON_Xform &) const
ON_2dVectoroperator*= (double)
ON_2dVector operator+ (const ON_2dVector &) const
ON_2dPoint operator+ (const ON_2dPoint &) const
ON_3dVector operator+ (const ON_3dVector &) const
ON_3dPoint operator+ (const ON_3dPoint &) const
ON_2dVector operator+ (const ON_2fVector &) const
ON_2dPoint operator+ (const ON_2fPoint &) const
ON_3dVector operator+ (const ON_3fVector &) const
ON_3dPoint operator+ (const ON_3fPoint &) const
ON_2dVectoroperator+= (const ON_2dVector &)
ON_2dVector operator- () const
ON_2dVector operator- (const ON_2dVector &) const
ON_2dPoint operator- (const ON_2dPoint &) const
ON_3dVector operator- (const ON_3dVector &) const
ON_3dPoint operator- (const ON_3dPoint &) const
ON_2dVector operator- (const ON_2fVector &) const
ON_2dPoint operator- (const ON_2fPoint &) const
ON_3dVector operator- (const ON_3fVector &) const
ON_3dPoint operator- (const ON_3fPoint &) const
ON_2dVectoroperator-= (const ON_2dVector &)
ON_2dVector operator/ (int) const
ON_2dVector operator/ (float) const
ON_2dVector operator/ (double) const
ON_2dVectoroperator/= (double)
bool operator< (const ON_2dVector &) const
bool operator<= (const ON_2dVector &) const
 dictionary order comparisons More...
ON_2dVectoroperator= (const ON_2dVector &)=default
ON_2dVectoroperator= (const ON_3dVector &)
 use implicit operator=(const ON_2dVector&) More...
ON_2dVectoroperator= (const ON_2dPoint &)
ON_2dVectoroperator= (const ON_3dPoint &)
ON_2dVectoroperator= (const double *)
ON_2dVectoroperator= (const ON_2fVector &)
ON_2dVectoroperator= (const ON_3fVector &)
ON_2dVectoroperator= (const ON_2fPoint &)
ON_2dVectoroperator= (const ON_3fPoint &)
ON_2dVectoroperator= (const float *)
bool operator== (const ON_2dVector &) const
bool operator> (const ON_2dVector &) const
bool operator>= (const ON_2dVector &) const
double & operator[] (int)
 index operators mimic double[2] behavior More...
double operator[] (int) const
double & operator[] (unsigned int)
double operator[] (unsigned int) const
bool PerpendicularTo (const ON_2dVector &)
 set this vector to be perpendicular to another vector More...
bool PerpendicularTo (const ON_2dPoint &, const ON_2dPoint &)
 set this vector to be perpendicular to a line defined by 2 points More...
void Reverse ()
void Rotate (double angle)
void Rotate (double sin_angle, double cos_angle)
void Set (double x, double y)
 set 2d vector value More...
void Transform (const ON_Xform &)
bool Unitize ()
ON_2dVector UnitVector () const
double WedgeProduct (const ON_2dVector &B) const
void Zero ()

Static Public Member Functions

static int Compare (const ON_2dVector &lhs, const ON_2dVector &rhs)
 A well ordered dictionary compare function that is nan aware and can be used for robust sorting. More...
static const ON_2dVectorUnitVector (int)
 A index driven function to get unit axis vectors. More...

Public Attributes

double x
double y

Static Public Attributes

static const ON_2dVector NanVector
static const ON_2dVector UnsetVector
static const ON_2dVector XAxis
static const ON_2dVector YAxis
static const ON_2dVector ZeroVector

Constructor & Destructor Documentation

◆ ON_2dVector() [1/12]

ON_2dVector::ON_2dVector ( )
default

x,y not initialized

◆ ~ON_2dVector()

ON_2dVector::~ON_2dVector ( )
default

◆ ON_2dVector() [2/12]

ON_2dVector::ON_2dVector ( const ON_2dVector )
default

◆ ON_2dVector() [3/12]

ON_2dVector::ON_2dVector ( double  x,
double  y 
)
explicit

◆ ON_2dVector() [4/12]

ON_2dVector::ON_2dVector ( const ON_3dVector )
explicit

◆ ON_2dVector() [5/12]

ON_2dVector::ON_2dVector ( const ON_2dPoint )

◆ ON_2dVector() [6/12]

ON_2dVector::ON_2dVector ( const ON_3dPoint )
explicit

◆ ON_2dVector() [7/12]

ON_2dVector::ON_2dVector ( const double *  )
explicit

◆ ON_2dVector() [8/12]

ON_2dVector::ON_2dVector ( const ON_2fVector )

◆ ON_2dVector() [9/12]

ON_2dVector::ON_2dVector ( const ON_3fVector )
explicit

◆ ON_2dVector() [10/12]

ON_2dVector::ON_2dVector ( const ON_2fPoint )
explicit

◆ ON_2dVector() [11/12]

ON_2dVector::ON_2dVector ( const ON_3fPoint )
explicit

◆ ON_2dVector() [12/12]

ON_2dVector::ON_2dVector ( const float *  )
explicit

Member Function Documentation

◆ Compare()

static int ON_2dVector::Compare ( const ON_2dVector lhs,
const ON_2dVector rhs 
)
static

A well ordered dictionary compare function that is nan aware and can be used for robust sorting.

◆ DataCRC()

ON__UINT32 ON_2dVector::DataCRC ( ON__UINT32  current_remainder) const

◆ Decompose()

bool ON_2dVector::Decompose ( const ON_2dVector ,
const ON_2dVector ,
double *  ,
double *   
) const

◆ IsNotZero()

bool ON_2dVector::IsNotZero ( ) const
Returns
true if at lease one coordinate is not zero and no coordinates are nans.

◆ IsParallelTo()

int ON_2dVector::IsParallelTo ( const ON_2dVector other,
double  angle_tolerance = ON_DEFAULT_ANGLE_TOLERANCE 
) const

◆ IsPerpendicularTo()

bool ON_2dVector::IsPerpendicularTo ( const ON_2dVector other,
double  angle_tolerance = ON_DEFAULT_ANGLE_TOLERANCE 
) const

◆ IsTiny()

bool ON_2dVector::IsTiny ( double  tiny_tol = ON_ZERO_TOLERANCE) const

Test a vector to see if it is very short

Parameters
tiny_tol[in] (default = ON_ZERO_TOLERANCE) a nonzero value used as the coordinate zero tolerance.
Returns

( fabs(x) <= tiny_tol && fabs(y) <= tiny_tol )

◆ IsUnitVector()

bool ON_2dVector::IsUnitVector ( ) const
Returns
true if vector is valid and has length 1.

◆ IsUnset()

bool ON_2dVector::IsUnset ( ) const
Returns
True if any coordinate is ON_UNSET_VALUE or ON_UNSET_POSITIVE_VALUE

◆ IsValid()

bool ON_2dVector::IsValid ( ) const
Returns
False if any coordinate is infinte, a nan, or ON_UNSET_VALUE.

◆ IsZero()

bool ON_2dVector::IsZero ( ) const
Returns
true if vector is the zero vector.

◆ Length()

double ON_2dVector::Length ( ) const

◆ LengthSquared()

double ON_2dVector::LengthSquared ( ) const

◆ MaximumCoordinate()

double ON_2dVector::MaximumCoordinate ( ) const

◆ MaximumCoordinateIndex()

int ON_2dVector::MaximumCoordinateIndex ( ) const

◆ MinimumCoordinate()

double ON_2dVector::MinimumCoordinate ( ) const

◆ MinimumCoordinateIndex()

int ON_2dVector::MinimumCoordinateIndex ( ) const

◆ operator const double *()

ON_2dVector::operator const double * ( ) const

◆ operator double *()

ON_2dVector::operator double * ( )

(double*) conversion operators

◆ operator!=()

bool ON_2dVector::operator!= ( const ON_2dVector ) const

◆ operator*() [1/7]

double ON_2dVector::operator* ( const ON_2dVector ) const

DO NOT ADD ANY MORE overrides of += or -=.

◆ operator*() [2/7]

double ON_2dVector::operator* ( const ON_2dPoint ) const

◆ operator*() [3/7]

double ON_2dVector::operator* ( const ON_2fVector ) const

◆ operator*() [4/7]

ON_2dVector ON_2dVector::operator* ( int  ) const

◆ operator*() [5/7]

ON_2dVector ON_2dVector::operator* ( float  ) const

◆ operator*() [6/7]

ON_2dVector ON_2dVector::operator* ( double  ) const

◆ operator*() [7/7]

ON_2dVector ON_2dVector::operator* ( const ON_Xform ) const

◆ operator*=()

ON_2dVector& ON_2dVector::operator*= ( double  )

◆ operator+() [1/8]

ON_2dVector ON_2dVector::operator+ ( const ON_2dVector ) const

◆ operator+() [2/8]

ON_2dPoint ON_2dVector::operator+ ( const ON_2dPoint ) const

◆ operator+() [3/8]

ON_3dVector ON_2dVector::operator+ ( const ON_3dVector ) const

◆ operator+() [4/8]

ON_3dPoint ON_2dVector::operator+ ( const ON_3dPoint ) const

◆ operator+() [5/8]

ON_2dVector ON_2dVector::operator+ ( const ON_2fVector ) const

◆ operator+() [6/8]

ON_2dPoint ON_2dVector::operator+ ( const ON_2fPoint ) const

◆ operator+() [7/8]

ON_3dVector ON_2dVector::operator+ ( const ON_3fVector ) const

◆ operator+() [8/8]

ON_3dPoint ON_2dVector::operator+ ( const ON_3fPoint ) const

◆ operator+=()

ON_2dVector& ON_2dVector::operator+= ( const ON_2dVector )

◆ operator-() [1/9]

ON_2dVector ON_2dVector::operator- ( ) const

◆ operator-() [2/9]

ON_2dVector ON_2dVector::operator- ( const ON_2dVector ) const

◆ operator-() [3/9]

ON_2dPoint ON_2dVector::operator- ( const ON_2dPoint ) const

◆ operator-() [4/9]

ON_3dVector ON_2dVector::operator- ( const ON_3dVector ) const

◆ operator-() [5/9]

ON_3dPoint ON_2dVector::operator- ( const ON_3dPoint ) const

◆ operator-() [6/9]

ON_2dVector ON_2dVector::operator- ( const ON_2fVector ) const

◆ operator-() [7/9]

ON_2dPoint ON_2dVector::operator- ( const ON_2fPoint ) const

◆ operator-() [8/9]

ON_3dVector ON_2dVector::operator- ( const ON_3fVector ) const

◆ operator-() [9/9]

ON_3dPoint ON_2dVector::operator- ( const ON_3fPoint ) const

◆ operator-=()

ON_2dVector& ON_2dVector::operator-= ( const ON_2dVector )

◆ operator/() [1/3]

ON_2dVector ON_2dVector::operator/ ( int  ) const

◆ operator/() [2/3]

ON_2dVector ON_2dVector::operator/ ( float  ) const

◆ operator/() [3/3]

ON_2dVector ON_2dVector::operator/ ( double  ) const

◆ operator/=()

ON_2dVector& ON_2dVector::operator/= ( double  )

◆ operator<()

bool ON_2dVector::operator< ( const ON_2dVector ) const

◆ operator<=()

bool ON_2dVector::operator<= ( const ON_2dVector ) const

dictionary order comparisons

◆ operator=() [1/10]

ON_2dVector& ON_2dVector::operator= ( const ON_2dVector )
default

◆ operator=() [2/10]

ON_2dVector& ON_2dVector::operator= ( const ON_3dVector )

◆ operator=() [3/10]

ON_2dVector& ON_2dVector::operator= ( const ON_2dPoint )

◆ operator=() [4/10]

ON_2dVector& ON_2dVector::operator= ( const ON_3dPoint )

◆ operator=() [5/10]

ON_2dVector& ON_2dVector::operator= ( const double *  )

◆ operator=() [6/10]

ON_2dVector& ON_2dVector::operator= ( const ON_2fVector )

◆ operator=() [7/10]

ON_2dVector& ON_2dVector::operator= ( const ON_3fVector )

◆ operator=() [8/10]

ON_2dVector& ON_2dVector::operator= ( const ON_2fPoint )

◆ operator=() [9/10]

ON_2dVector& ON_2dVector::operator= ( const ON_3fPoint )

◆ operator=() [10/10]

ON_2dVector& ON_2dVector::operator= ( const float *  )

◆ operator==()

bool ON_2dVector::operator== ( const ON_2dVector ) const

◆ operator>()

bool ON_2dVector::operator> ( const ON_2dVector ) const

◆ operator>=()

bool ON_2dVector::operator>= ( const ON_2dVector ) const

◆ operator[]() [1/4]

double& ON_2dVector::operator[] ( int  )

index operators mimic double[2] behavior

◆ operator[]() [2/4]

double ON_2dVector::operator[] ( int  ) const

◆ operator[]() [3/4]

double& ON_2dVector::operator[] ( unsigned  int)

◆ operator[]() [4/4]

double ON_2dVector::operator[] ( unsigned  int) const

◆ PerpendicularTo() [1/2]

bool ON_2dVector::PerpendicularTo ( const ON_2dVector )

set this vector to be perpendicular to another vector

◆ PerpendicularTo() [2/2]

bool ON_2dVector::PerpendicularTo ( const ON_2dPoint ,
const ON_2dPoint  
)

set this vector to be perpendicular to a line defined by 2 points

◆ Reverse()

void ON_2dVector::Reverse ( )

◆ Rotate() [1/2]

void ON_2dVector::Rotate ( double  angle)

◆ Rotate() [2/2]

void ON_2dVector::Rotate ( double  sin_angle,
double  cos_angle 
)

◆ Set()

void ON_2dVector::Set ( double  x,
double  y 
)

set 2d vector value

◆ Transform()

void ON_2dVector::Transform ( const ON_Xform )

◆ Unitize()

bool ON_2dVector::Unitize ( )

◆ UnitVector() [1/2]

static const ON_2dVector& ON_2dVector::UnitVector ( int  )
static

A index driven function to get unit axis vectors.

Parameters
index[in] 0 returns (1,0), 1 returns (0,1)
Returns
Unit 2d vector with vector[i] = (i==index)?1:0;

◆ UnitVector() [2/2]

ON_2dVector ON_2dVector::UnitVector ( ) const
Returns
If this is a valid non-zero vector, a unit vector parallel to this is returned. Otherwise the zero vector is returned.

◆ WedgeProduct()

double ON_2dVector::WedgeProduct ( const ON_2dVector B) const

◆ Zero()

void ON_2dVector::Zero ( )

Member Data Documentation

◆ NanVector

const ON_2dVector ON_2dVector::NanVector
static

◆ UnsetVector

const ON_2dVector ON_2dVector::UnsetVector
static

◆ x

double ON_2dVector::x

◆ XAxis

const ON_2dVector ON_2dVector::XAxis
static

◆ y

double ON_2dVector::y

◆ YAxis

const ON_2dVector ON_2dVector::YAxis
static

◆ ZeroVector

const ON_2dVector ON_2dVector::ZeroVector
static