#include <math.h>#include <qpainter.h>#include "qwt_math.h"#include "qwt_painter.h"#include "qwt_compass_rose.h"Go to the source code of this file.
Functions | |
| static QPoint | cutPoint (QPoint p11, QPoint p12, QPoint p21, QPoint p22) |
| static QPoint cutPoint | ( | QPoint | p11, |
| QPoint | p12, | ||
| QPoint | p21, | ||
| QPoint | p22 | ||
| ) | [static] |
Definition at line 16 of file qwt_compass_rose.cpp.
References QuadProgPP::t().
Referenced by QwtSimpleCompassRose::drawRose().
{
double dx1 = p12.x() - p11.x();
double dy1 = p12.y() - p11.y();
double dx2 = p22.x() - p21.x();
double dy2 = p22.y() - p21.y();
if ( dx1 == 0.0 && dx2 == 0.0 )
return QPoint();
if ( dx1 == 0.0 )
{
const double m = dy2 / dx2;
const double t = p21.y() - m * p21.x();
return QPoint(p11.x(), qRound(m * p11.x() + t));
}
if ( dx2 == 0 )
{
const double m = dy1 / dx1;
const double t = p11.y() - m * p11.x();
return QPoint(p21.x(), qRound(m * p21.x() + t));
}
const double m1 = dy1 / dx1;
const double t1 = p11.y() - m1 * p11.x();
const double m2 = dy2 / dx2;
const double t2 = p21.y() - m2 * p21.x();
if ( m1 == m2 )
return QPoint();
const double x = ( t2 - t1 ) / ( m1 - m2 );
const double y = t1 + m1 * x;
return QPoint(qRound(x), qRound(y));
}
1.7.2