#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;}