Itasca C++ Interface
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
Orientation3 Class Reference

Class for storing an "orientation", or a direction in 2D or 3D space. More...

#include <orientation.h>

Public Member Functions

BASE_EXPORT Orientation3 ()
 Default 3D orientation is +Z normal vector.
 
BASE_EXPORT Orientation3 (const Orientation3 &o)
 Copy constructor.
 
BASE_EXPORT Orientation3 (const DVect3 &dv3)
 Explicit constructor by normal vector, dv3 need not be a unit vector.
 
BASE_EXPORT Orientation3 (const double &dip, const double &dd=0.0)
 Explicit constructor by dip and dip direction, in radians.
 
BASE_EXPORT const Orientation3operator= (const Orientation3 &o)
 Equality operator.
 
BASE_EXPORT bool operator== (const Orientation3 &o) const
 Comparison operator, by normal vector (unit, not user).
 
BASE_EXPORT bool operator!= (const Orientation3 &o) const
 
BASE_EXPORT const DVect3 & getNormal () const
 Returns the unit normal of this orientation.
 
BASE_EXPORT const DVect3 & getNormalUser () const
 Returns the normal vector specified by the user, which may not be a unit vector.
 
BASE_EXPORT DVect2 getDipDD () const
 Returns the dip and dip direction (in radians) encoded in a DVect2. x = dip, y = dd.
 
BASE_EXPORT double getDip () const
 Returns the dip in radians.
 
BASE_EXPORT double getDipDirection () const
 Returns the dip direction in radians.
 
BASE_EXPORT bool wasDefinedByNormal () const
 
BASE_EXPORT double getJointAngle () const
 Returns joint angle in radians.
 
BASE_EXPORT double getAzimuth () const
 Returns azimuth in radians.
 
BASE_EXPORT double getPlunge () const
 Returns plunge in radians.
 
BASE_EXPORT void setNormal (const DVect3 &norm)
 Sets the normal vector – this value need not be a unit vector, and it is recoverable in getNormalUser().
 
BASE_EXPORT void setNormalX (const double &x)
 Sets the X-component of the normal user vector, the other components are held constant.
 
BASE_EXPORT void setNormalY (const double &y)
 Sets the Y-component of the normal user vector, the other components are held constant.
 
BASE_EXPORT void setNormalZ (const double &z)
 Sets the Z-component of the normal user vector, the other components are held constant.
 
BASE_EXPORT void setDipDD (const double &dip, const double &dd)
 Sets the dip and dip direction, in radians.
 
BASE_EXPORT void setDip (const double &dip)
 Sets dip in radians, the dip direction is held constant.
 
BASE_EXPORT void setDipDirection (const double &dd)
 Sets the dip direction in radians, the dip is held constant.
 
BASE_EXPORT void setJointAngle (const double &angle)
 
BASE_EXPORT void setAzimuthPlunge (const double &azimuth, const double &plunge)
 
BASE_EXPORT bool isIn (const DVect3 &normal, const DVect2 &tol) const
 Utility class, returns TRUE if normal is within tolerance of this orientation.
 

Static Public Member Functions

static BASE_EXPORT DVect3 getNormFromDipDD (const double &dip, const double &dd)
 Converts from a dip and dip direction (in radians) to a normal vector.
 
static BASE_EXPORT DVect3 getVectorFromAzimuthPlunge (const double &az, const double &plunge)
 Converts from azimuth and plunge (in radians) to the corresponding vector.
 
static BASE_EXPORT DVect3 getNormFromAzimuthPlunge (const double &azimuth, const double &plunge)
 Converts from a dip and dip direction (in radians) to a normal vector.
 
static BASE_EXPORT DVect2 getDipDDFromNorm (const DVect3 &norm)
 
static BASE_EXPORT double getJointAngleFromNorm (const DVect3 &norm)
 Converts a normal vector (need not be unit) to a joint angle in radians.
 
static BASE_EXPORT double getAzimuthFromNorm (const DVect3 &norm)
 
static BASE_EXPORT double getPlungeFromNorm (const DVect3 &norm)
 
static BASE_EXPORT bool getLHS ()
 
static BASE_EXPORT void setLHS (bool b)
 

Detailed Description

Class for storing an "orientation", or a direction in 2D or 3D space.

Class for storing an "orientation", or a direction in 2D or 3D space.

Orientations can be viewed as defining either a normal direction, or a plane in space normal to that direction.
2D orientations are specified by either a plane dip angle (clockwise from +X) or a normal vector.
3D orientations are specified by a dip angle (clockwise from XY plane) and a dip direction (steepest Z descent line projected onto XY plane, clockwise from +Y).

3D orientation objects remember if they were specified with dip/dd or normal.

The original data specified (non-normalized direction vector, dip/dd outside range) is retained, so that it can be changed/updated by the user on a component basis.

For historical (3DEC) reasons, an orientation has a global Left Handed System mode — which changes the 3D definition of dip and dip direction.

An Orientation can also return a "joint angle", which is defined as the intersection of the plane with the xy plane, measured positive counter-clockwise from x. In 2D the joint angle is the negative of the dip. Note that "joint angle" can not fully specify a normal vector, because it has no concept of a side; thus, a joint angle of 45 is equivalent to a joint angle of 225. Joint angles are always returned in the range 0 to 180.

An "Azimuth" of a 3D normal vector is the clockwise-angle from +Y projected onto the XY plane. In a LHS system, the YZ axes are swapped.
A "Plunge" of a 3D normal vector is the angle between the vector and the XY plane. In a LHS system, the YZ axes are swapped.

Note
Orientation2 relies on the default (compiler supplied) copy contructor and = operator.

Member Function Documentation

◆ getAzimuthFromNorm()

double Orientation3::getAzimuthFromNorm ( const DVect3 & norm)
static

Converts from a normal vector (need not be unit) to an azimuth in radians. Azimuth is the angle betweent he projection of the vector in the XY plane makes with the +y Axes, clockwise.

◆ getDipDDFromNorm()

DVect2 Orientation3::getDipDDFromNorm ( const DVect3 & norm)
static

Converts from a normal vector (need not be unit) to a dip and dip direction encoded in a DVect2. x = dip, y = dip direction.

◆ getLHS()

static BASE_EXPORT bool Orientation3::getLHS ( )
inlinestatic

These functions specify if a Left Handed coordinate system is being used. This changes the way that dip/dd is converted into a normal vector.

◆ getPlungeFromNorm()

double Orientation3::getPlungeFromNorm ( const DVect3 & norm)
static

Converts from a normal vector (need not be unit) to a plunge in radians. The plunge is the angle between the normal vector and the horizontal plane, with positive being below the plane.

◆ setAzimuthPlunge()

void Orientation3::setAzimuthPlunge ( const double & azimuth,
const double & plunge )

Sets the orientation in terms of azimuth and plunge. For definitions see getAzimuthFromNorm and getPlungeFromNorm.

◆ setJointAngle()

void Orientation3::setJointAngle ( const double & angle)

Sets the joint angle, in radians. Dip is always set to 90 deg, Dip Direction is negative Joint Angle. If in LHS, then Dip Direction is set to 90 deg, Dip is negative Joint Angle.

◆ setLHS()

static BASE_EXPORT void Orientation3::setLHS ( bool b)
inlinestatic

These functions specify if a Left Handed coordinate system is being used. This changes the way that dip/dd is converted into a normal vector.

◆ wasDefinedByNormal()

BASE_EXPORT bool Orientation3::wasDefinedByNormal ( ) const
inline

Returns true if the orientation was defined by a normal vector – setNormal(. Returns false if it was defined by dip/dd or joint angle.


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