#include <Point.h>
Public Member Functions | |
void | average (const Point &p) |
short | compare (const Point &p) const |
double | distanceTo (const Point &p) const |
double | distanceToSegment (const Point &p1, const Point &p2) const |
double | elevationTo (const Point &p) const |
bool | fromString (const StringSection &str) |
void | interpole (double valX, const Point &p1, const Point &p2) |
bool | isSimilar (const Point &p, double tolerance) const |
bool | isValid () const |
void | move (double distance, const Angle &azimuth, const Angle &elevation) |
bool | operator!= (const Point &obj) const |
Point | operator* (double mul) const |
Point | operator* (const Point &p) const |
void | operator*= (const Point &p) |
void | operator*= (double mul) |
void | operator*= (const Matrix3x3 &transformation) |
void | operator*= (const Matrix4x4 &transformation) |
Point | operator+ (const Point &p) const |
void | operator+= (const Point &p) |
Point | operator- (const Point &p) const |
void | operator-= (const Point &p) |
Point | operator/ (double div) const |
Point | operator/ (const Point &p) const |
void | operator/= (const Point &p) |
void | operator/= (double div) |
bool | operator< (const Point &p) const |
bool | operator<= (const Point &obj) const |
Point & | operator= (const Point &p) |
Point & | operator= (const Point2D &p) |
bool | operator== (const Point &p) const |
bool | operator> (const Point &obj) const |
bool | operator>= (const Point &obj) const |
Point () | |
Point (double x, double y, double z=0.0) | |
Point (const QPoint &p) | |
Point (const QPointF &p) | |
Point (const Point2D &p) | |
Point (const Point &p) | |
Point (const QVector< double > &p) | |
double | scalarProduct (const Point &p) const |
void | set (double xi, double yi, double zi=0.0) |
void | setValid (bool) |
void | setZ (double v) |
QString | toString (int precision=6, char format='g') const |
void | translate (const Point &p) |
void | vectorialProduct (const Point &p1, const Point &p2) |
double | z () const |
Basic properties of a 3D point (coordinates in double precision)
QGpCoreTools::Point::Point | ( | ) | [inline] |
Default constructor
Referenced by operator*(), operator+(), operator-(), and operator/().
: Point2D() { _z=0.0; }
QGpCoreTools::Point::Point | ( | double | x, |
double | y, | ||
double | z = 0.0 |
||
) | [inline] |
Constructor setting x and y, and optionally z
: Point2D(xi, yi) { _z=zi; }
QGpCoreTools::Point::Point | ( | const QPoint & | p | ) | [inline] |
: Point2D(p) { _z=0.0; }
QGpCoreTools::Point::Point | ( | const QPointF & | p | ) | [inline] |
: Point2D(p) { _z=0.0; }
QGpCoreTools::Point::Point | ( | const Point2D & | p | ) | [inline] |
QGpCoreTools::Point::Point | ( | const Point & | p | ) | [inline] |
: Point2D(p) { _z=p._z; }
QGpCoreTools::Point::Point | ( | const QVector< double > & | p | ) | [inline] |
Copy constructor from a vector
: Point2D(p) { ASSERT(p.count()>2); _z=p.at(2); }
void QGpCoreTools::Point::average | ( | const Point & | p | ) | [inline] |
{ Point2D::average(p); _z=0.5*(_z+p._z); }
short QGpCoreTools::Point::compare | ( | const Point & | p | ) | const [inline] |
{ int c=Point2D::compare(p); if(c==0) { if(_z < p._z) return -1; else if(_z > p._z) return 1; else return 0; } else { return c; } }
double QGpCoreTools::Point::distanceTo | ( | const Point & | p | ) | const |
Calculates distance to p.
References QGpCoreTools::sqrt(), QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and z().
Referenced by GeopsyCore::Signal::correlation(), GeopsyGui::ArrayMap::countPoints(), QGpCoreTools::Segment::directionVector(), distanceToSegment(), ToolRefra::initStations(), main(), GeopsyCore::Signal::normalizedCorrelation(), GeopsyGui::ArrayMap::optimizeRing(), CoordReader::parse(), SignalReader::parse(), FKArrayMap::setSourceSignals(), ArrayCore::StationCouple::setStations(), and GeopsyGui::RelativePositions::updateCurrentDistAz().
{ double tmp=x()-p.x(); double dist=tmp*tmp; tmp=y()-p.y(); dist+=tmp*tmp; tmp=_z-p.z(); dist+=tmp*tmp; return ::sqrt(dist); }
double QGpCoreTools::Point::distanceToSegment | ( | const Point & | p1, |
const Point & | p2 | ||
) | const |
Calculates the distance to a segment defined by p1 and p2.
References distanceTo(), QGpCoreTools::sqrt(), TRACE, QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and z().
{ TRACE; double d1=distanceTo(p1); double d2=distanceTo(p2); double d12=p1.distanceTo(p2); Point dir1((x()-p1.x())/d1, (y()-p1.y())/d1, (z()-p1.z())/d1); Point dir2((x()-p2.x())/d2, (y()-p2.y())/d2, (z()-p2.z())/d2); Point dir12((p2.x()-p1.x())/d12, (p2.y()-p1.y())/d12, (p2.z()-p1.z())/d12); double costheta1=dir1.x()*dir12.x()+dir1.y()*dir12.y()+dir1.z()*dir12.z(); double costheta2=-dir2.x()*dir12.x()-dir2.y()*dir12.y()-dir2.z()*dir12.z(); if((costheta1 < 0.) || (costheta2 < 0.)) return -1.; double d=d1*::sqrt(1.-costheta1*costheta1); return d; }
double QGpCoreTools::Point::elevationTo | ( | const Point & | p | ) | const |
Calculates the angle from horizontal plane (Z axis). This is the third spherical coordinate.
References QGpCoreTools::sqrt(), QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and z().
bool QGpCoreTools::Point::fromString | ( | const StringSection & | str | ) |
Extracts coordinates from string str.
Reimplemented from QGpCoreTools::Point2D.
References QGpCoreTools::StringSection::isValid(), QGpCoreTools::StringSection::nextField(), QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), QGpCoreTools::StringSection::toDouble(), and TRACE.
Referenced by createCurve(), main(), QGpCoreTools::operator>>(), CoordReader::parse(), ProfileReader::setOptions(), TargetAdd::setOptions(), DinverDCCore::ParamGroundModel::xml_setProperty(), DinverDCCore::TargetList::xml_setProperty(), and GeopsyCore::Signal::xml_setProperty().
void QGpCoreTools::Point::interpole | ( | double | valX, |
const Point & | p1, | ||
const Point & | p2 | ||
) | [inline] |
Interpole between two points
References QGpCoreTools::Point2D::setX(), QGpCoreTools::Point2D::setY(), setZ(), QGpCoreTools::Point2D::x(), QGpCoreTools::Point2D::y(), and z().
bool QGpCoreTools::Point::isSimilar | ( | const Point & | p, |
double | tolerance | ||
) | const [inline] |
References z().
Referenced by QGpCoreTools::Segment::distanceTo(), QGpCoreTools::Segment::isSimilar(), and QGpCoreTools::Segment::parallelTo().
{ return Point2D::isSimilar(p, tolerance) && fabs(p.z()-z())<tolerance; }
bool QGpCoreTools::Point::isValid | ( | ) | const [inline] |
void QGpCoreTools::Point::move | ( | double | distance, |
const Angle & | azimuth, | ||
const Angle & | elevation | ||
) |
Moves this point by distance in direction azimuth (radians, mathematical sense, 0 is east) and elevation (radians, mathematical sense from horizontal plane).
References QGpCoreTools::Angle::cos(), and QGpCoreTools::Angle::sin().
{ Point2D::move(distance*elevation.cos(), azimuth); _z+=distance*elevation.sin(); }
bool QGpCoreTools::Point::operator!= | ( | const Point & | obj | ) | const [inline] |
{return ! (*this==obj);}
Point QGpCoreTools::Point::operator* | ( | double | mul | ) | const [inline] |
Reimplemented from QGpCoreTools::Point2D.
Reimplemented in QGpCoreTools::NamedPoint.
References Point(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Reimplemented in QGpCoreTools::NamedPoint.
References Point(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
void QGpCoreTools::Point::operator*= | ( | const Point & | p | ) | [inline] |
Referenced by operator*=(), and operator/=().
{ Point2D::operator*=(p); _z*=p._z; }
void QGpCoreTools::Point::operator*= | ( | double | mul | ) | [inline] |
Reimplemented from QGpCoreTools::Point2D.
References operator*=().
{ Point2D::operator*=(mul); _z*=mul; }
void QGpCoreTools::Point::operator*= | ( | const Matrix3x3 & | transformation | ) |
{
*this=transformation*(*this);
}
void QGpCoreTools::Point::operator*= | ( | const Matrix4x4 & | transformation | ) |
{
*this=transformation*(*this);
}
Reimplemented in QGpCoreTools::NamedPoint.
References Point(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
void QGpCoreTools::Point::operator+= | ( | const Point & | p | ) | [inline] |
{ Point2D::operator+=(p); _z+=p._z; }
Reimplemented in QGpCoreTools::NamedPoint.
References Point(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
void QGpCoreTools::Point::operator-= | ( | const Point & | p | ) | [inline] |
{ Point2D::operator-=(p); _z-=p._z; }
Point QGpCoreTools::Point::operator/ | ( | double | div | ) | const [inline] |
Reimplemented from QGpCoreTools::Point2D.
Reimplemented in QGpCoreTools::NamedPoint.
References Point(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Reimplemented in QGpCoreTools::NamedPoint.
References Point(), QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
void QGpCoreTools::Point::operator/= | ( | const Point & | p | ) | [inline] |
{ Point2D::operator/=(p); _z/=p._z; }
void QGpCoreTools::Point::operator/= | ( | double | div | ) | [inline] |
Reimplemented from QGpCoreTools::Point2D.
References operator*=().
{ double f=1.0/div; Point2D::operator*=(f); _z*=f; }
bool QGpCoreTools::Point::operator< | ( | const Point & | p | ) | const [inline] |
References QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
bool QGpCoreTools::Point::operator<= | ( | const Point & | obj | ) | const [inline] |
{return *this==obj || *this<obj;}
Reimplemented in QGpCoreTools::NamedPoint.
Referenced by operator=().
{ Point2D::operator=(p); _z=p._z; return *this; }
Reimplemented from QGpCoreTools::Point2D.
Reimplemented in QGpCoreTools::NamedPoint, and TapePoint.
References operator=().
{ Point2D::operator=(p); _z=0.0; return *this; }
bool QGpCoreTools::Point::operator== | ( | const Point & | p | ) | const [inline] |
{ return Point2D::operator==(p) && _z==p._z; }
bool QGpCoreTools::Point::operator> | ( | const Point & | obj | ) | const [inline] |
{return ! (*this<=obj);}
bool QGpCoreTools::Point::operator>= | ( | const Point & | obj | ) | const [inline] |
{return ! (*this<obj);}
double QGpCoreTools::Point::scalarProduct | ( | const Point & | p | ) | const [inline] |
References QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Referenced by QGpCoreTools::Segment::distanceTo().
void QGpCoreTools::Point::set | ( | double | xi, |
double | yi, | ||
double | zi = 0.0 |
||
) | [inline] |
Referenced by GeopsyCore::SubSignalPool::rotateComponents().
{ Point2D::set(xi, yi); _z=zi; }
void QGpCoreTools::Point::setValid | ( | bool | v | ) | [inline] |
void QGpCoreTools::Point::setZ | ( | double | v | ) | [inline] |
Referenced by QGpCoreTools::NamedPoint::fromString(), interpole(), QGpCoreTools::Matrix3x3::operator*(), QGpCoreTools::Matrix4x4::operator*(), QGpCoreTools::operator>>(), SciFigs::ComplexStatisticalLine::point(), SciFigs::RealStatisticalLine::point(), QGpGuiWave::MagnetoTelluricLine::point(), QGpGuiWave::ModalLine::point(), QGpGuiWave::RefractionLine::point(), GeopsyCore::Signal::read(), Measurement::set(), GeopsyGui::StationCoordinatesItem::setData(), GeopsyCore::Signal::setHeader(), QGpCoreTools::Plane::setNormalVector(), QGpCoreTools::Plane::setNormalVectorXY(), GeopsyCore::SignalHeaderObject::setReceiverZ(), GeopsyCore::SignalHeaderObject::setSourceZ(), and vectorialProduct().
{_z=v;}
QString QGpCoreTools::Point::toString | ( | int | precision = 6 , |
char | format = 'g' |
||
) | const |
Returns the point as a string with space separation between coordinates. precision is the number of significant digits. format is 'g' or 'f'.
Reimplemented from QGpCoreTools::Point2D.
Reimplemented in QGpCoreTools::NamedPoint.
References TRACE, QGpCoreTools::Point2D::x(), and QGpCoreTools::Point2D::y().
Referenced by TargetExtract::execute(), DinverDCCore::TargetList2D::humanInfo(), SpectrumStation::save(), HVStation::save(), ToolSPAC::setArrayMap(), ProfileReader::terminate(), CoordReader::terminate(), DinverDCCore::ParamGroundModel::xml_writeProperties(), and DinverDCCore::TargetList::xml_writeProperties().
void QGpCoreTools::Point::translate | ( | const Point & | p | ) | [inline] |
Referenced by CoordReader::parse().
{operator+=(p);}
void QGpCoreTools::Point::vectorialProduct | ( | const Point & | p1, |
const Point & | p2 | ||
) | [inline] |
double QGpCoreTools::Point::z | ( | ) | const [inline] |
Referenced by QGpCoreTools::Parallelepiped::add(), GeopsyGui::StationCoordinatesItem::data(), SciFigs::LineItem::data(), distanceTo(), distanceToSegment(), elevationTo(), geopsyToFile(), GeopsyCore::Signal::header(), QGpCoreTools::Parallelepiped::includes(), QGpCoreTools::Segment::includes(), interpole(), QGpCoreTools::Segment::intersects(), isSimilar(), LinearFKActiveArrayStations::name(), QGpCoreTools::NamedPoint::operator*(), QGpCoreTools::Matrix3x3::operator*(), QGpCoreTools::Matrix4x4::operator*(), QGpCoreTools::NamedPoint::operator+(), QGpCoreTools::NamedPoint::operator-(), QGpCoreTools::NamedPoint::operator/(), QGpCoreTools::operator<<(), QGpCoreTools::operator>>(), QGpCoreTools::Parallelepiped::Parallelepiped(), GeopsyCore::SignalHeaderObject::receiverZ(), QGpCoreTools::Segment::set(), QGpCompatibility::CompatFunction::set(), GeopsyCore::SEGYTraceHeader::setElevationFactor(), GeopsyCore::SEGYTraceHeader::setReceiver(), GeopsyCore::SEGYTraceHeader::setSource(), GeopsyCore::SignalHeaderObject::sourceZ(), vectorialProduct(), Acquisition::write(), GeopsyCore::Signal::writeSac(), GeopsyCore::Signal::writeSeg2(), and QGpCoreTools::Plane::z().
{return _z;}