A geometrical plane. More...
#include <Plane.h>
Public Member Functions | |
Plane () | |
Plane (const Point &normal, const Point &reference) | |
Plane (const Plane &o) | |
bool | setNormalVector () |
void | setNormalVectorXY () |
void | setReference (int index, const Point &p) |
void | setZ (int index, double z) |
double | z (const Point &at) |
A geometrical plane.
A geometrical plane optimized to return the interpolated z at any postion.
QGpCoreTools::Plane::Plane | ( | ) | [inline] |
{_d=0.0;}
QGpCoreTools::Plane::Plane | ( | const Point & | normal, |
const Point & | reference | ||
) |
{ _normalVector=normal; _references[0]=reference; _d=d(); }
QGpCoreTools::Plane::Plane | ( | const Plane & | o | ) |
{ _references[0]=o._references[0]; _references[1]=o._references[1]; _references[2]=o._references[2]; _directionalVector[0]=o._directionalVector[0]; _directionalVector[1]=o._directionalVector[1]; _normalVector=o._normalVector; _d=o._d; }
bool QGpCoreTools::Plane::setNormalVector | ( | ) |
Calculates internal normal vector from 3 references
References QGpCoreTools::endl(), setNormalVectorXY(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreTools::Point::setZ(), QGpCoreTools::App::stream(), and QGpCoreTools::tr().
Referenced by QGpCoreWave::Seismic1DModel::interpole(), and DinverDCCore::TargetList2D::setParamProfiles().
{ if(_references[0]==_references[1] || _references[0]==_references[2] || _references[1]==_references[2]) { App::stream() << tr("Some reference points have the same coordinates:\n" " %1\n %2\n %3") .arg(_references[0].toString()) .arg(_references[1].toString()) .arg(_references[2].toString()) << endl; return false; } else { _directionalVector[0].setX(_references[0].x()-_references[1].x()); _directionalVector[1].setX(_references[0].x()-_references[2].x()); _directionalVector[0].setY(_references[0].y()-_references[1].y()); _directionalVector[1].setY(_references[0].y()-_references[2].y()); _normalVector.setZ(_directionalVector[0].x()*_directionalVector[1].y()- _directionalVector[0].y()*_directionalVector[1].x()); setNormalVectorXY(); return true; } }
Calculates internal normal vector from 3 references, valid only after altering z components from references points.
References QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreTools::Point::setZ(), and z().
Referenced by QGpCoreWave::Seismic1DModel::interpole(), and setNormalVector().
{ _directionalVector[0].setZ(_references[0].z()-_references[1].z()); _directionalVector[1].setZ(_references[0].z()-_references[2].z()); _normalVector.setX(_directionalVector[0].y()*_directionalVector[1].z()- _directionalVector[0].z()*_directionalVector[1].y()); _normalVector.setY(_directionalVector[1].x()*_directionalVector[0].z()- _directionalVector[1].z()*_directionalVector[0].x()); _d=d(); }
void QGpCoreTools::Plane::setReference | ( | int | index, |
const Point & | p | ||
) | [inline] |
Referenced by QGpCoreWave::Seismic1DModel::interpole(), and DinverDCCore::TargetList2D::setParamProfiles().
{ASSERT(index<3); _references[index]=p;}
void QGpCoreTools::Plane::setZ | ( | int | index, |
double | z | ||
) | [inline] |
index ranges from 0 to 2. setNormalVectorXY() must be called whenever z is changed.
Referenced by QGpCoreWave::Seismic1DModel::interpole().
double QGpCoreTools::Plane::z | ( | const Point & | at | ) | [inline] |
Returns the z value at at, only (x, y) are considered in at.
References TRACE, QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and QGpCoreTools::Point::z().
Referenced by QGpCoreWave::Seismic1DModel::interpole(), and setNormalVectorXY().