#include "kmath.h" // Ermittelt von einem Punkt p aus den Nächstgelegenen Punkt auf einer Linie zwischen zwei Punkten a und b QPoint Math::getNearestPointOnLine( QPoint p, QPoint a, QPoint b ) { double xp = p.x(), yp = p.y(), xa = a.x(), ya = a.y(), xb = b.x(), yb = b.y(), xr, yr; if( xb == xa ) { xr = 1; yr = 0; } else if( yb == ya ) { xr = 0; yr = 1; } else { xr = 1; yr = -1 / ( (yb - ya) / (xb - xa) ); } double xd = xb - xa, yd = yb - ya; double x = ((yp-ya)*xr + (xa-xp)*yr) / (yd*xr - xd*yr); if( x >= 0 && x <= 1 ) return QPoint( (int)( xa + x * xd ), (int)( ya + x * yd ) ); if( (xa - xp) * (xa - xp) + (ya - yp) * (ya - yp) > (xb - xp) * (xb - xp) + (yb - yp) * (yb - yp) ) return b; else return a; } // Ermittelt das Quadrat von dem Abstand zwischen den Punkten a und b int Math::diffSquare( QPoint a, QPoint b ) { QPoint tmp = b - a; return tmp.x() * tmp.x() + tmp.y() * tmp.y(); }