#include <cmath>
#include <QDebug>
+#include <QLineF>
+#include <QPointF>
+#include <QVariant>
#include "geocoordinate.h"
#include "map/osm.h"
qDebug() << __PRETTY_FUNCTION__;
}
-SceneCoordinate::SceneCoordinate(GeoCoordinate &coordinate)
+SceneCoordinate::SceneCoordinate(const GeoCoordinate &coordinate)
{
qDebug() << __PRETTY_FUNCTION__;
convertFrom(coordinate);
}
+qreal SceneCoordinate::azimuthTo(const SceneCoordinate &to) const
+{
+ QLineF line = QLineF(this->toPointF(), to.toPointF());
+ return -line.angle() + 90.0;
+}
+
void SceneCoordinate::convertFrom(const GeoCoordinate &coordinate)
{
qDebug() << __PRETTY_FUNCTION__;
value -= max - min + 1;
}
-double SceneCoordinate::x() const
+void SceneCoordinate::setX(double x)
{
qDebug() << __PRETTY_FUNCTION__;
- return m_x;
+ m_x = x;
}
-double SceneCoordinate::y() const
+void SceneCoordinate::setY(double y)
{
qDebug() << __PRETTY_FUNCTION__;
- return m_y;
+ m_y = y;
}
-void SceneCoordinate::setX(double x)
+QPointF SceneCoordinate::toPointF() const
{
qDebug() << __PRETTY_FUNCTION__;
- m_x = x;
+ return QPointF(m_x, m_y);
}
-void SceneCoordinate::setY(double y)
+double SceneCoordinate::x() const
{
qDebug() << __PRETTY_FUNCTION__;
- m_y = y;
+ return m_x;
+}
+
+double SceneCoordinate::y() const
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ return m_y;
+}
+
+SceneCoordinate::operator QVariant() const
+{
+ return QVariant::fromValue(*this);
}
QDebug operator<<(QDebug dbg, const SceneCoordinate &coordinate)
return dbg.space();
}
+
+SceneCoordinate & SceneCoordinate::operator*=(double factor)
+{
+ m_x *= factor;
+ m_y *= factor;
+ return *this;
+}
+
+SceneCoordinate & SceneCoordinate::operator+=(const SceneCoordinate &coordinate)
+{
+ m_x += coordinate.x();
+ m_y += coordinate.y();
+ return *this;
+}
+
+SceneCoordinate & SceneCoordinate::operator-=(const SceneCoordinate &coordinate)
+{
+ m_x -= coordinate.x();
+ m_y -= coordinate.y();
+ return *this;
+}
+
+const SceneCoordinate operator* (double factor, const SceneCoordinate &coordinate)
+{
+ return SceneCoordinate(coordinate) *= factor;
+}
+
+const SceneCoordinate SceneCoordinate::operator+(const SceneCoordinate &other) const
+{
+ return SceneCoordinate(*this) += other;
+}
+
+const SceneCoordinate SceneCoordinate::operator-(const SceneCoordinate &other) const
+{
+ return SceneCoordinate(*this) -= other;
+}