Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_algebra_2d.cpp File Reference
#include "kis_algebra_2d.h"
#include <QTransform>
#include <QPainterPath>
#include <kis_debug.h>
#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics/stats.hpp>
#include <boost/accumulators/statistics/min.hpp>
#include <boost/accumulators/statistics/max.hpp>
#include <array>
#include <QVector2D>
#include <QVector3D>
#include <QtMath>
#include <config-gsl.h>
#include <Eigen/Eigenvalues>
#include <KisBezierUtils.h>

Go to the source code of this file.

Namespaces

namespace  KisAlgebra2D
 

Macros

#define SANITY_CHECKS
 

Functions

void KisAlgebra2D::adjustIfOnPolygonBoundary (const QPolygonF &poly, int polygonDirection, QPointF *pt)
 
QPointF KisAlgebra2D::alignForZoom (const QPointF &pt, qreal zoom)
 
qreal KisAlgebra2D::angleBetweenVectors (const QPointF &v1, const QPointF &v2)
 
QRect KisAlgebra2D::approximateRectFromPoints (const QVector< QPoint > &points)
 
QRectF KisAlgebra2D::approximateRectFromPoints (const QVector< QPointF > &points)
 
template<class Rect , class Point , bool alignPixels>
Rect KisAlgebra2D::approximateRectFromPointsImpl (const QVector< Point > &points)
 
QRect KisAlgebra2D::approximateRectWithPointTransform (const QRect &rect, std::function< QPointF(QPointF)> func)
 
QPolygonF KisAlgebra2D::calculateConvexHull (const QPolygonF &polygon)
 calculateConvexHull Calculate the convex hull of the polygon using the QuickHull
 
QPolygonF KisAlgebra2D::calculateConvexHullFromPointsOverTheLine (const QPolygonF &points, const QLineF &line)
 
QPolygonF KisAlgebra2D::combineConvexHullParts (const QPolygonF &leftPolygon, QPolygonF &rightPolygon, bool triangular)
 
void KisAlgebra2D::cropLineToConvexPolygon (QLineF &line, const QPolygonF polygon, bool extendFirst, bool extendSecond)
 
void KisAlgebra2D::cropLineToRect (QLineF &line, const QRect rect, bool extendFirst, bool extendSecond)
 Crop line to rect; if it doesn't intersect, just return an empty line (QLineF()).
 
QRectF KisAlgebra2D::cutOffRect (const QRectF &rc, const KisAlgebra2D::RightHalfPlane &p)
 
qreal KisAlgebra2D::directionBetweenPoints (const QPointF &p1, const QPointF &p2, qreal defaultAngle)
 
QPoint KisAlgebra2D::ensureInRect (QPoint pt, const QRect &bounds)
 
QPointF KisAlgebra2D::ensureInRect (QPointF pt, const QRectF &bounds)
 
template<class Point , class Rect >
Point KisAlgebra2D::ensureInRectImpl (Point pt, const Rect &bounds)
 
qreal KisAlgebra2D::findMinimumGoldenSection (std::function< qreal(qreal)> f, qreal xA, qreal xB, qreal eps, int maxIter=100)
 
qreal KisAlgebra2D::findMinimumTernarySection (std::function< qreal(qreal)> f, qreal xA, qreal xB, qreal eps, int maxIter=100)
 
QPointF KisAlgebra2D::findNearestPointOnLine (const QPointF &point, const QLineF &line, bool unbounded)
 
QVector< QPointF > KisAlgebra2D::findTrianglePoint (const QPointF &p1, const QPointF &p2, qreal a, qreal b)
 
boost::optional< QPointF > KisAlgebra2D::findTrianglePointNearest (const QPointF &p1, const QPointF &p2, qreal a, qreal b, const QPointF &nearest)
 
Eigen::Matrix3d KisAlgebra2D::fromQTransformStraight (const QTransform &t)
 
bool KisAlgebra2D::fuzzyMatrixCompare (const QTransform &t1, const QTransform &t2, qreal delta)
 
bool KisAlgebra2D::fuzzyPointCompare (const QPointF &p1, const QPointF &p2)
 
bool KisAlgebra2D::fuzzyPointCompare (const QPointF &p1, const QPointF &p2, qreal delta)
 
QLineF KisAlgebra2D::getLineFromElements (const QPainterPath &shape, int index)
 
QList< int > KisAlgebra2D::getLineSegmentCrossingLineIndexes (const QLineF &line, const QPainterPath &shape)
 
QPainterPath KisAlgebra2D::getOnePathFromRectangleCutThrough (const QList< QPointF > &points, const QLineF &line, bool left)
 
QList< QLineF > KisAlgebra2D::getParallelLines (const QLineF &line, const qreal distance)
 
QList< QPainterPath > KisAlgebra2D::getPathsFromRectangleCutThrough (const QRectF &rect, const QLineF &leftLine, const QLineF &rightLine)
 getPathsFromRectangleCutThrough get paths defining both sides of a rectangle cut through using two (supposedly parallel) lines It is used in the Knife Tool If you just want to cut a rectangle, you can use the same line in both
 
QList< QLineF > KisAlgebra2D::intersectLineConcavePolygon (const QPolygonF polygon, const QLineF &line, bool extendFirst, bool extendSecond)
 
bool KisAlgebra2D::intersectLineConvexPolygon (QLineF &line, const QPolygonF polygon, bool extendFirst, bool extendSecond)
 
bool KisAlgebra2D::intersectLineRect (QLineF &line, const QRect rect, bool extend)
 
bool KisAlgebra2D::intersectLineRect (QLineF &line, const QRect rect, bool extendFirst, bool extendSecond)
 
boost::optional< QPointF > KisAlgebra2D::intersectLines (const QLineF &boundedLine, const QLineF &unboundedLine)
 
boost::optional< QPointF > KisAlgebra2D::intersectLines (const QPointF &p1, const QPointF &p2, const QPointF &q1, const QPointF &q2)
 
QVector< QPointF > KisAlgebra2D::intersectTwoCircles (const QPointF &center1, qreal r1, const QPointF &center2, qreal r2)
 
bool KisAlgebra2D::isInsideShape (const QPainterPath &path, const QPointF &point)
 
bool KisAlgebra2D::isInsideShape (const VectorPath &path, const QPointF &point)
 
bool KisAlgebra2D::isOnLine (const QLineF &line, const QPointF &point, const qreal eps, bool boundedStart, bool boundedEnd, bool includeEnds)
 
int KisAlgebra2D::lineSideForPoint (const QLineF &line, const QPointF &point)
 
QTransform KisAlgebra2D::mapToRect (const QRectF &rect)
 
QTransform KisAlgebra2D::mapToRectInverse (const QRectF &rect)
 
VectorPath KisAlgebra2D::mergeShapesWithGutter (const VectorPath &shape1, const VectorPath &shape2, const VectorPath &oneEnd, const VectorPath &otherEnd, int index1, int index2, bool reverseSecondPoly, bool isSameShape)
 mergeShapesWithGutter merges two shapes with a gutter shape (defined as two paths)
 
QPointF KisAlgebra2D::moveElasticPoint (const QPointF &pt, const QPointF &base, const QPointF &newBase, const QPointF &wingA, const QPointF &wingB)
 moveElasticPoint moves point pt based on the model of elasticity
 
QPointF KisAlgebra2D::moveElasticPoint (const QPointF &pt, const QPointF &base, const QPointF &newBase, const QVector< QPointF > &anchorPoints)
 moveElasticPoint moves point pt based on the model of elasticity
 
QPointF KisAlgebra2D::movePointAlongTheLine (const QPointF &point, const QLineF &direction, qreal distance, bool ensureOnLine)
 movePointAlongTheLine moves the point a particular distance in the specified direction
 
QPointF KisAlgebra2D::movePointInTheDirection (const QPointF &point, const QPointF &direction, qreal distance)
 movePointAlongTheLine moves the point a particular distance in the specified direction
 
QDebug KisAlgebra2D::operator<< (QDebug debug, const VectorPath &path)
 
QDebug KisAlgebra2D::operator<< (QDebug debug, const VectorPath::VectorPathPoint &point)
 
qreal KisAlgebra2D::pointToLineDistSquared (const QPointF &pt, const QLineF &line)
 
int KisAlgebra2D::quadraticEquation (qreal a, qreal b, qreal c, qreal *x1, qreal *x2)
 
QPainterPath KisAlgebra2D::removeGutterOneEndSmart (const QPainterPath &shape1, int index1, const QPainterPath &shape2, int index2, QLineF middleLine, bool reverseFirstPoly, bool reverseSecondPoly)
 
QPainterPath KisAlgebra2D::removeGutterSmart (const QPainterPath &shape1, int index1, const QPainterPath &shape2, int index2, bool isSameShape)
 removeGutterSmart
 
QLineF KisAlgebra2D::reverseDirection (const QLineF &line)
 
QVector< QPoint > KisAlgebra2D::sampleRectWithPoints (const QRect &rect)
 
QVector< QPointF > KisAlgebra2D::sampleRectWithPoints (const QRectF &rect)
 
template<class Rect , class Point >
QVector< Point > KisAlgebra2D::sampleRectWithPoints (const Rect &rect)
 
QPainterPath KisAlgebra2D::simplifyShape (const QPainterPath &path)
 
QPainterPath KisAlgebra2D::smallArrow ()
 
QTransform KisAlgebra2D::toQTransformStraight (const Eigen::Matrix3d &m)
 
QPointF KisAlgebra2D::transformAsBase (const QPointF &pt, const QPointF &base1, const QPointF &base2)
 
std::pair< QPointF, QTransform > KisAlgebra2D::transformEllipse (const QPointF &axes, const QTransform &fullLocalToGlobal)
 
bool KisAlgebra2D::tryMergePoints (QPainterPath &path, const QPointF &startPoint, const QPointF &endPoint, qreal &distance, qreal distanceThreshold, bool lastSegment)
 
QPainterPath KisAlgebra2D::trySimplifyPath (const QPainterPath &path, qreal lengthThreshold)
 trySimplifyPath Tries to simplify a QPainterPath
 

Macro Definition Documentation

◆ SANITY_CHECKS

#define SANITY_CHECKS

Definition at line 33 of file kis_algebra_2d.cpp.