Open CASCADE Technology  7.2.0
gp_Dir Class Reference

Describes a unit vector in 3D space. This unit vector is also called "Direction". See Also gce_MakeDir which provides functions for more complex unit vector constructions Geom_Direction which provides additional functions for constructing unit vectors and works, in particular, with the parametric equations of unit vectors. More...

`#include <gp_Dir.hxx>`

## Public Member Functions

gp_Dir ()
Creates a direction corresponding to X axis. More...

gp_Dir (const gp_Vec &V)
Normalizes the vector V and creates a direction. Raises ConstructionError if V.Magnitude() <= Resolution. More...

gp_Dir (const gp_XYZ &Coord)
Creates a direction from a triplet of coordinates. Raises ConstructionError if Coord.Modulus() <= Resolution from gp. More...

gp_Dir (const Standard_Real Xv, const Standard_Real Yv, const Standard_Real Zv)
Creates a direction with its 3 cartesian coordinates. Raises ConstructionError if Sqrt(Xv*Xv + Yv*Yv + Zv*Zv) <= Resolution Modification of the direction's coordinates If Sqrt (X*X + Y*Y + Z*Z) <= Resolution from gp where X, Y ,Z are the new coordinates it is not possible to construct the direction and the method raises the exception ConstructionError. More...

void SetCoord (const Standard_Integer Index, const Standard_Real Xi)
For this unit vector, assigns the value Xi to: More...

void SetCoord (const Standard_Real Xv, const Standard_Real Yv, const Standard_Real Zv)
For this unit vector, assigns the values Xv, Yv and Zv to its three coordinates. Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. More...

void SetX (const Standard_Real X)
Assigns the given value to the X coordinate of this unit vector. More...

void SetY (const Standard_Real Y)
Assigns the given value to the Y coordinate of this unit vector. More...

void SetZ (const Standard_Real Z)
Assigns the given value to the Z coordinate of this unit vector. More...

void SetXYZ (const gp_XYZ &Coord)
Assigns the three coordinates of Coord to this unit vector. More...

Standard_Real Coord (const Standard_Integer Index) const
Returns the coordinate of range Index : Index = 1 => X is returned Index = 2 => Y is returned Index = 3 => Z is returned Exceptions Standard_OutOfRange if Index is not 1, 2, or 3. More...

void Coord (Standard_Real &Xv, Standard_Real &Yv, Standard_Real &Zv) const
Returns for the unit vector its three coordinates Xv, Yv, and Zv. More...

Standard_Real X () const
Returns the X coordinate for a unit vector. More...

Standard_Real Y () const
Returns the Y coordinate for a unit vector. More...

Standard_Real Z () const
Returns the Z coordinate for a unit vector. More...

const gp_XYZXYZ () const
for this unit vector, returns its three coordinates as a number triplea. More...

Standard_Boolean IsEqual (const gp_Dir &Other, const Standard_Real AngularTolerance) const
Returns True if the angle between the two directions is lower or equal to AngularTolerance. More...

Standard_Boolean IsNormal (const gp_Dir &Other, const Standard_Real AngularTolerance) const
Returns True if the angle between this unit vector and the unit vector Other is equal to Pi/2 (normal). More...

Standard_Boolean IsOpposite (const gp_Dir &Other, const Standard_Real AngularTolerance) const
Returns True if the angle between this unit vector and the unit vector Other is equal to Pi (opposite). More...

Standard_Boolean IsParallel (const gp_Dir &Other, const Standard_Real AngularTolerance) const
Returns true if the angle between this unit vector and the unit vector Other is equal to 0 or to Pi. Note: the tolerance criterion is given by AngularTolerance. More...

Standard_Real Angle (const gp_Dir &Other) const
Computes the angular value in radians between <me> and <Other>. This value is always positive in 3D space. Returns the angle in the range [0, PI]. More...

Standard_Real AngleWithRef (const gp_Dir &Other, const gp_Dir &VRef) const
Computes the angular value between <me> and <Other>. <VRef> is the direction of reference normal to <me> and <Other> and its orientation gives the positive sense of rotation. If the cross product <me> ^ <Other> has the same orientation as <VRef> the angular value is positive else negative. Returns the angular value in the range -PI and PI (in radians). Raises DomainError if <me> and <Other> are not parallel this exception is raised when <VRef> is in the same plane as <me> and <Other> The tolerance criterion is Resolution from package gp. More...

void Cross (const gp_Dir &Right)
Computes the cross product between two directions Raises the exception ConstructionError if the two directions are parallel because the computed vector cannot be normalized to create a direction. More...

void operator^= (const gp_Dir &Right)

gp_Dir Crossed (const gp_Dir &Right) const
Computes the triple vector product. <me> ^ (V1 ^ V2) Raises the exception ConstructionError if V1 and V2 are parallel or <me> and (V1^V2) are parallel because the computed vector can't be normalized to create a direction. More...

gp_Dir operator^ (const gp_Dir &Right) const

void CrossCross (const gp_Dir &V1, const gp_Dir &V2)

gp_Dir CrossCrossed (const gp_Dir &V1, const gp_Dir &V2) const
Computes the double vector product this ^ (V1 ^ V2). More...

Standard_Real Dot (const gp_Dir &Other) const
Computes the scalar product. More...

Standard_Real operator* (const gp_Dir &Other) const

Standard_Real DotCross (const gp_Dir &V1, const gp_Dir &V2) const
Computes the triple scalar product <me> * (V1 ^ V2). Warnings : The computed vector V1' = V1 ^ V2 is not normalized to create a unitary vector. So this method never raises an exception even if V1 and V2 are parallel. More...

void Reverse ()

gp_Dir Reversed () const
Reverses the orientation of a direction geometric transformations Performs the symmetrical transformation of a direction with respect to the direction V which is the center of the symmetry.]. More...

gp_Dir operator- () const

void Mirror (const gp_Dir &V)

gp_Dir Mirrored (const gp_Dir &V) const
Performs the symmetrical transformation of a direction with respect to the direction V which is the center of the symmetry. More...

void Mirror (const gp_Ax1 &A1)

gp_Dir Mirrored (const gp_Ax1 &A1) const
Performs the symmetrical transformation of a direction with respect to an axis placement which is the axis of the symmetry. More...

void Mirror (const gp_Ax2 &A2)

gp_Dir Mirrored (const gp_Ax2 &A2) const
Performs the symmetrical transformation of a direction with respect to a plane. The axis placement A2 locates the plane of the symmetry : (Location, XDirection, YDirection). More...

void Rotate (const gp_Ax1 &A1, const Standard_Real Ang)

gp_Dir Rotated (const gp_Ax1 &A1, const Standard_Real Ang) const
Rotates a direction. A1 is the axis of the rotation. Ang is the angular value of the rotation in radians. More...

void Transform (const gp_Trsf &T)

gp_Dir Transformed (const gp_Trsf &T) const
Transforms a direction with a "Trsf" from gp. Warnings : If the scale factor of the "Trsf" T is negative then the direction <me> is reversed. More...

## Detailed Description

Describes a unit vector in 3D space. This unit vector is also called "Direction". See Also gce_MakeDir which provides functions for more complex unit vector constructions Geom_Direction which provides additional functions for constructing unit vectors and works, in particular, with the parametric equations of unit vectors.

## ◆ gp_Dir() [1/4]

 gp_Dir::gp_Dir ( )

Creates a direction corresponding to X axis.

## ◆ gp_Dir() [2/4]

 gp_Dir::gp_Dir ( const gp_Vec & V )

Normalizes the vector V and creates a direction. Raises ConstructionError if V.Magnitude() <= Resolution.

## ◆ gp_Dir() [3/4]

 gp_Dir::gp_Dir ( const gp_XYZ & Coord )

Creates a direction from a triplet of coordinates. Raises ConstructionError if Coord.Modulus() <= Resolution from gp.

## ◆ gp_Dir() [4/4]

 gp_Dir::gp_Dir ( const Standard_Real Xv, const Standard_Real Yv, const Standard_Real Zv )

Creates a direction with its 3 cartesian coordinates. Raises ConstructionError if Sqrt(Xv*Xv + Yv*Yv + Zv*Zv) <= Resolution Modification of the direction's coordinates If Sqrt (X*X + Y*Y + Z*Z) <= Resolution from gp where X, Y ,Z are the new coordinates it is not possible to construct the direction and the method raises the exception ConstructionError.

## ◆ Angle()

 Standard_Real gp_Dir::Angle ( const gp_Dir & Other ) const

Computes the angular value in radians between <me> and <Other>. This value is always positive in 3D space. Returns the angle in the range [0, PI].

## ◆ AngleWithRef()

 Standard_Real gp_Dir::AngleWithRef ( const gp_Dir & Other, const gp_Dir & VRef ) const

Computes the angular value between <me> and <Other>. <VRef> is the direction of reference normal to <me> and <Other> and its orientation gives the positive sense of rotation. If the cross product <me> ^ <Other> has the same orientation as <VRef> the angular value is positive else negative. Returns the angular value in the range -PI and PI (in radians). Raises DomainError if <me> and <Other> are not parallel this exception is raised when <VRef> is in the same plane as <me> and <Other> The tolerance criterion is Resolution from package gp.

## ◆ Coord() [1/2]

 Standard_Real gp_Dir::Coord ( const Standard_Integer Index ) const

Returns the coordinate of range Index : Index = 1 => X is returned Index = 2 => Y is returned Index = 3 => Z is returned Exceptions Standard_OutOfRange if Index is not 1, 2, or 3.

## ◆ Coord() [2/2]

 void gp_Dir::Coord ( Standard_Real & Xv, Standard_Real & Yv, Standard_Real & Zv ) const

Returns for the unit vector its three coordinates Xv, Yv, and Zv.

## ◆ Cross()

 void gp_Dir::Cross ( const gp_Dir & Right )

Computes the cross product between two directions Raises the exception ConstructionError if the two directions are parallel because the computed vector cannot be normalized to create a direction.

## ◆ CrossCross()

 void gp_Dir::CrossCross ( const gp_Dir & V1, const gp_Dir & V2 )

## ◆ CrossCrossed()

 gp_Dir gp_Dir::CrossCrossed ( const gp_Dir & V1, const gp_Dir & V2 ) const

Computes the double vector product this ^ (V1 ^ V2).

• CrossCrossed creates a new unit vector. Exceptions Standard_ConstructionError if:
• V1 and V2 are parallel, or
• this unit vector and (V1 ^ V2) are parallel. This is because, in these conditions, the computed vector is null and cannot be normalized.

## ◆ Crossed()

 gp_Dir gp_Dir::Crossed ( const gp_Dir & Right ) const

Computes the triple vector product. <me> ^ (V1 ^ V2) Raises the exception ConstructionError if V1 and V2 are parallel or <me> and (V1^V2) are parallel because the computed vector can't be normalized to create a direction.

## ◆ Dot()

 Standard_Real gp_Dir::Dot ( const gp_Dir & Other ) const

Computes the scalar product.

## ◆ DotCross()

 Standard_Real gp_Dir::DotCross ( const gp_Dir & V1, const gp_Dir & V2 ) const

Computes the triple scalar product <me> * (V1 ^ V2). Warnings : The computed vector V1' = V1 ^ V2 is not normalized to create a unitary vector. So this method never raises an exception even if V1 and V2 are parallel.

## ◆ IsEqual()

 Standard_Boolean gp_Dir::IsEqual ( const gp_Dir & Other, const Standard_Real AngularTolerance ) const

Returns True if the angle between the two directions is lower or equal to AngularTolerance.

## ◆ IsNormal()

 Standard_Boolean gp_Dir::IsNormal ( const gp_Dir & Other, const Standard_Real AngularTolerance ) const

Returns True if the angle between this unit vector and the unit vector Other is equal to Pi/2 (normal).

## ◆ IsOpposite()

 Standard_Boolean gp_Dir::IsOpposite ( const gp_Dir & Other, const Standard_Real AngularTolerance ) const

Returns True if the angle between this unit vector and the unit vector Other is equal to Pi (opposite).

## ◆ IsParallel()

 Standard_Boolean gp_Dir::IsParallel ( const gp_Dir & Other, const Standard_Real AngularTolerance ) const

Returns true if the angle between this unit vector and the unit vector Other is equal to 0 or to Pi. Note: the tolerance criterion is given by AngularTolerance.

## ◆ Mirror() [1/3]

 void gp_Dir::Mirror ( const gp_Dir & V )

## ◆ Mirror() [2/3]

 void gp_Dir::Mirror ( const gp_Ax1 & A1 )

## ◆ Mirror() [3/3]

 void gp_Dir::Mirror ( const gp_Ax2 & A2 )

## ◆ Mirrored() [1/3]

 gp_Dir gp_Dir::Mirrored ( const gp_Dir & V ) const

Performs the symmetrical transformation of a direction with respect to the direction V which is the center of the symmetry.

## ◆ Mirrored() [2/3]

 gp_Dir gp_Dir::Mirrored ( const gp_Ax1 & A1 ) const

Performs the symmetrical transformation of a direction with respect to an axis placement which is the axis of the symmetry.

## ◆ Mirrored() [3/3]

 gp_Dir gp_Dir::Mirrored ( const gp_Ax2 & A2 ) const

Performs the symmetrical transformation of a direction with respect to a plane. The axis placement A2 locates the plane of the symmetry : (Location, XDirection, YDirection).

## ◆ operator*()

 Standard_Real gp_Dir::operator* ( const gp_Dir & Other ) const
inline

## ◆ operator-()

 gp_Dir gp_Dir::operator- ( ) const
inline

## ◆ operator^()

 gp_Dir gp_Dir::operator^ ( const gp_Dir & Right ) const
inline

## ◆ operator^=()

 void gp_Dir::operator^= ( const gp_Dir & Right )
inline

## ◆ Reverse()

 void gp_Dir::Reverse ( )

## ◆ Reversed()

 gp_Dir gp_Dir::Reversed ( ) const

Reverses the orientation of a direction geometric transformations Performs the symmetrical transformation of a direction with respect to the direction V which is the center of the symmetry.].

## ◆ Rotate()

 void gp_Dir::Rotate ( const gp_Ax1 & A1, const Standard_Real Ang )

## ◆ Rotated()

 gp_Dir gp_Dir::Rotated ( const gp_Ax1 & A1, const Standard_Real Ang ) const

Rotates a direction. A1 is the axis of the rotation. Ang is the angular value of the rotation in radians.

## ◆ SetCoord() [1/2]

 void gp_Dir::SetCoord ( const Standard_Integer Index, const Standard_Real Xi )

For this unit vector, assigns the value Xi to:

• the X coordinate if Index is 1, or
• the Y coordinate if Index is 2, or
• the Z coordinate if Index is 3, and then normalizes it. Warning Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly. Exceptions Standard_OutOfRange if Index is not 1, 2, or 3. Standard_ConstructionError if either of the following is less than or equal to gp::Resolution():
• Sqrt(Xv*Xv + Yv*Yv + Zv*Zv), or
• the modulus of the number triple formed by the new value Xi and the two other coordinates of this vector that were not directly modified.

## ◆ SetCoord() [2/2]

 void gp_Dir::SetCoord ( const Standard_Real Xv, const Standard_Real Yv, const Standard_Real Zv )

For this unit vector, assigns the values Xv, Yv and Zv to its three coordinates. Remember that all the coordinates of a unit vector are implicitly modified when any single one is changed directly.

## ◆ SetX()

 void gp_Dir::SetX ( const Standard_Real X )

Assigns the given value to the X coordinate of this unit vector.

## ◆ SetXYZ()

 void gp_Dir::SetXYZ ( const gp_XYZ & Coord )

Assigns the three coordinates of Coord to this unit vector.

## ◆ SetY()

 void gp_Dir::SetY ( const Standard_Real Y )

Assigns the given value to the Y coordinate of this unit vector.

## ◆ SetZ()

 void gp_Dir::SetZ ( const Standard_Real Z )

Assigns the given value to the Z coordinate of this unit vector.

## ◆ Transform()

 void gp_Dir::Transform ( const gp_Trsf & T )

## ◆ Transformed()

 gp_Dir gp_Dir::Transformed ( const gp_Trsf & T ) const

Transforms a direction with a "Trsf" from gp. Warnings : If the scale factor of the "Trsf" T is negative then the direction <me> is reversed.

## ◆ X()

 Standard_Real gp_Dir::X ( ) const

Returns the X coordinate for a unit vector.

## ◆ XYZ()

 const gp_XYZ& gp_Dir::XYZ ( ) const

for this unit vector, returns its three coordinates as a number triplea.

## ◆ Y()

 Standard_Real gp_Dir::Y ( ) const

Returns the Y coordinate for a unit vector.

## ◆ Z()

 Standard_Real gp_Dir::Z ( ) const

Returns the Z coordinate for a unit vector.

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