|
void | appendControlPoint (const RVector &point) |
| Disabled for splines (bad performance). More...
|
|
void | appendControlPoints (const QList< RVector > &points) |
| Appends the given control points. More...
|
|
void | appendFitPoint (const RVector &point) |
| Appends a fit point. More...
|
|
void | appendKnot (double k) |
|
RPolyline | approximateWithArcs (double tolerance, double radiusLimit=RDEFAULT_MIN1) const |
|
virtual RSpline * | clone () const |
|
void | copySpline (const RSpline &other) |
|
int | countControlPoints () const |
|
int | countFitPoints () const |
|
virtual bool | flipHorizontal () |
|
virtual bool | flipVertical () |
|
QList< double > | getActualKnotVector () const |
|
virtual double | getAngleAt (double distance, RS::From from=RS::FromStart) const |
|
QList< RSpline > | getBezierSegments (const RBox &queryBox=RDEFAULT_RBOX) const |
|
virtual QList< bool > | getBoolProperties () const |
|
virtual RBox | getBoundingBox () const |
|
virtual QList< RVector > | getCenterPoints () const |
|
RVector | getControlPointAt (int i) const |
|
QList< RVector > | getControlPoints () const |
|
QList< RVector > | getControlPointsWrapped () const |
|
int | getDegree () const |
|
virtual double | getDirection1 () const |
|
virtual double | getDirection2 () const |
|
QList< RVector > | getDiscontinuities () const |
|
double | getDistanceAtT (double t) const |
|
virtual double | getDistanceFromStart (const RVector &p) const |
|
virtual QList< double > | getDoubleProperties () const |
|
virtual RVector | getEndPoint () const |
|
virtual QList< RVector > | getEndPoints () const |
|
virtual QList< QSharedPointer< RShape > > | getExploded (int segments=RDEFAULT_MIN1) const |
|
QList< QSharedPointer< RShape > > | getExplodedBezier (int segments) const |
|
QList< QSharedPointer< RShape > > | getExplodedWithSegmentLength (double segmentLength) const |
|
RVector | getFitPointAt (int i) const |
|
QList< RVector > | getFitPoints () const |
|
virtual QList< int > | getIntProperties () const |
|
QList< double > | getKnotVector () const |
|
virtual double | getLength () const |
|
virtual RVector | getMiddlePoint () const |
|
virtual QList< RVector > | getMiddlePoints () const |
|
int | getOrder () const |
|
RVector | getPointAt (double t) const |
|
RVector | getPointAtDistance (double distance) const |
|
virtual QList< RVector > | getPointCloud (double segmentLength) const |
|
virtual QList< RVector > | getPointsWithDistanceToEnd (double distance, int from=RS::FromAny) const |
|
QList< RSpline > | getSegments (const QList< RVector > &points) const |
|
QList< RVector > | getSelfIntersectionPoints () const |
|
virtual RShape::Type | getShapeType () const |
|
virtual RS::Side | getSideOfPoint (const RVector &point) const |
|
virtual RVector | getStartPoint () const |
|
RVector | getTangentAtEnd () const |
|
RVector | getTangentAtStart () const |
|
double | getTAtDistance (double distance) const |
|
double | getTAtPoint (const RVector &point) const |
|
double | getTDelta () const |
|
double | getTMax () const |
|
double | getTMin () const |
|
QSharedPointer< RShape > | getTransformed (const QTransform &transform) const |
|
virtual RS::Ending | getTrimEnd (const RVector &trimPoint, const RVector &clickPoint) |
|
virtual QList< RVector > | getVectorProperties () const |
|
virtual RVector | getVectorTo (const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const |
|
QList< double > | getWeights () const |
|
bool | hasFitPoints () const |
|
void | insertFitPointAt (const RVector &point) |
| Inserts a fit point at the point on the spline closest to the given position. More...
|
|
void | insertFitPointAt (double t, const RVector &point) |
|
bool | isClosed () const |
|
virtual bool | isDirected () const |
|
bool | isDirty () const |
|
bool | isGeometricallyClosed (double tolerance=RS::PointTolerance) const |
|
virtual bool | isInterpolated () const |
| Reimplement and return true if this shape relies on interpolation for geometrical operations such as finding intersection points. More...
|
|
virtual bool | isOnShape (const RVector &point, bool limited=true, double tolerance=RDEFAULT_TOLERANCE_1E_MIN4) const |
|
bool | isPeriodic () const |
|
bool | isValid () const |
|
virtual bool | mirror (const RLine &axis) |
|
virtual bool | move (const RVector &offset) |
|
RSpline & | operator= (const RSpline &other) |
|
void | prependFitPoint (const RVector &point) |
| Prepends a fit point. More...
|
|
void | removeFirstFitPoint () |
| Removes the first fit point. More...
|
|
void | removeFitPointAt (const RVector &point) |
|
void | removeLastControlPoint () |
| Removes the last control point. More...
|
|
void | removeLastFitPoint () |
| Removes the last fit point. More...
|
|
virtual bool | reverse () |
|
virtual bool | rotate (double rotation, const RVector ¢er=RDEFAULT_RVECTOR) |
|
| RSpline () |
| Creates a spline object without controlPoints. More...
|
|
| RSpline (const QList< RVector > &controlPoints, int degree) |
| Creates a spline object with the given control points and degree. More...
|
|
| RSpline (const RSpline &other) |
|
virtual bool | scale (const RVector &scaleFactors, const RVector ¢er=RDEFAULT_RVECTOR) |
|
void | setControlPoints (const QList< RVector > &points) |
| Sets the control points of this spline. More...
|
|
void | setDegree (int d) |
| Sets the degree of this spline (2 or 3 for control point defined spline, 3 for fit point defined spline). More...
|
|
void | setEndPoint (const RVector &v) |
|
void | setFitPoints (const QList< RVector > &points) |
| Sets the fit points. More...
|
|
void | setKnotVector (const QList< double > &knots) |
| Sets the knot vector manually. More...
|
|
void | setPeriodic (bool on) |
|
void | setStartPoint (const RVector &v) |
|
void | setTangentAtEnd (const RVector &t) |
| Sets the end tangent. More...
|
|
void | setTangentAtStart (const RVector &t) |
| Sets the start tangent. More...
|
|
void | setTangents (const RVector &start, const RVector &end) |
| Sets the start and end tangents. More...
|
|
void | setWeights (QList< double > &w) |
|
virtual void | setZ (double z) |
|
RSpline | simplify (double tolerance) |
|
virtual QList< QSharedPointer< RShape > > | splitAt (const QList< RVector > &points) const |
|
QList< RSpline > | splitAtParams (const QList< double > ¶ms) const |
|
QList< RSpline > | splitAtPoints (const QList< RVector > &points) const |
|
virtual bool | stretch (const RPolyline &area, const RVector &offset) |
|
RPolyline | toPolyline (int segments) const |
|
virtual bool | trimEndPoint (const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false) |
|
virtual bool | trimEndPoint (double trimDist) |
|
virtual bool | trimStartPoint (const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false) |
|
virtual bool | trimStartPoint (double trimDist) |
|
void | unsetTangentAtEnd () |
| Clears the valud of the end tangent. More...
|
|
void | unsetTangentAtStart () |
| Clears the valud of the start tangent. More...
|
|
void | unsetTangents () |
| Clears the valud of the start and end tangents. More...
|
|
void | update () const |
|
void | updateFromControlPoints () const |
|
void | updateFromFitPoints () const |
| Closes this spline and makes it periodic if it isn't already. More...
|
|
void | updateTangentsPeriodic () |
| Updates the tangents at the start and end to make the spline periodic. More...
|
|
void | dump () const |
|
virtual bool | equals (const RShape &other, double tolerance=RS::PointTolerance) const |
|
virtual QList< RVector > | filterOnShape (const QList< RVector > &pointList, bool limited=true, double tolerance=RDEFAULT_TOLERANCE_1E_MIN4) const |
|
virtual double | getAngleAtPercent (double p) const |
|
virtual double | getAngleAtPoint (const RVector &pos) const |
|
virtual QList< RVector > | getArcReferencePoints () const |
|
virtual RVector | getClosestPointOnShape (const RVector &p, bool limited=true, double strictRange=RMAXDOUBLE) const |
|
virtual QList< double > | getDistancesFromStart (const RVector &p) const |
|
virtual double | getDistanceTo (const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const |
|
QList< RVector > | getIntersectionPoints (const RShape &other, bool limited=true, bool same=false, bool force=false) const |
|
virtual double | getMaxDistanceTo (const QList< RVector > &points, bool limited=true, double strictRange=RMAXDOUBLE) const |
|
virtual QList< QSharedPointer< RShape > > | getOffsetShapes (double distance, int number, RS::Side side, const RVector &position=RVector::invalid) |
|
virtual RVector | getPointAtPercent (double p) const |
|
virtual RVector | getPointOnShape () const |
|
virtual RVector | getPointWithDistanceToEnd (double distance) const |
|
virtual RVector | getPointWithDistanceToStart (double distance) const |
|
virtual RVector | getVectorFromEndpointTo (const RVector &point) const |
|
virtual bool | intersectsWith (const RShape &other, bool limited=true) const |
|
| RShape () |
|
virtual bool | scale (double scaleFactor, const RVector ¢er=RVector()) |
|
virtual bool | stretch (const RBox &area, const RVector &offset) |
|
virtual void | to2D () |
| Flattens this shape to the X/Y plane. More...
|
|
virtual | ~RShape () |
|
virtual | ~RExplodable () |
|
|
static RSpline | createBezierFromSmallArc (double r, double a1, double a2) |
| Cubic bezier approximation of a circular arc centered at the origin, from (radians) a1 to a2, where a2-a1 < pi/2. More...
|
|
static QList< RSpline > | createSplinesFromArc (const RArc &arc) |
|
static RSplineProxy * | getSplineProxy () |
|
static bool | hasProxy () |
|
static void | setSplineProxy (RSplineProxy *p) |
|
static const RExplodable * | castToExplodable (const RShape *shape) |
|
static QSharedPointer< RShape > | ellipseToArcCircleEllipse (const REllipse &ellipse) |
|
static int | getErrorCode () |
|
static QList< RVector > | getIntersectionPoints (const RShape &shape1, const RShape &shape2, bool limited=true, bool same=false, bool force=false) |
|
static QList< RVector > | getIntersectionPointsAA (const RArc &arc1, const RArc &arc2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsAC (const RArc &arc1, const RCircle &circle2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsAE (const RArc &arc1, const REllipse &ellipse2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsAS (const RArc &arc1, const RSpline &spline2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsAT (const RArc &arc1, const RTriangle &triangle2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsAX (const RArc &arc1, const RExplodable &explodable2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsCC (const RCircle &circle1, const RCircle &circle2) |
|
static QList< RVector > | getIntersectionPointsCE (const RCircle &circle1, const REllipse &ellipse2) |
|
static QList< RVector > | getIntersectionPointsCS (const RCircle &circle1, const RSpline &spline2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsCX (const RCircle &circle1, const RExplodable &explodable2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsEE (const REllipse &ellipse1, const REllipse &ellipse2) |
| Based on "Hughes and Chraibi (2011-2012), Calculating Ellipse Overlap Areas". More...
|
|
static QList< RVector > | getIntersectionPointsEE (const REllipse &ellipse1, const REllipse &ellipse2, bool limited) |
|
static QList< RVector > | getIntersectionPointsES (const REllipse &ellipse1, const RSpline &spline2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsEX (const REllipse &ellipse1, const RExplodable &explodable2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLA (const RLine &line1, const RArc &arc2, bool limited1, bool limited2) |
|
static QList< RVector > | getIntersectionPointsLA (const RLine &line1, const RArc &arc2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLC (const RLine &line1, const RCircle &circle2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLE (const RLine &line1, const REllipse &ellipse2, bool limited1, bool limited2) |
|
static QList< RVector > | getIntersectionPointsLE (const RLine &line1, const REllipse &ellipse2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLL (const RLine &line1, const RLine &line2, bool limited1, bool limited2) |
|
static QList< RVector > | getIntersectionPointsLL (const RLine &line1, const RLine &line2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLS (const RLine &line1, const RSpline &spline2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLT (const RLine &line1, const RTriangle &triangle2, bool limited1, bool limited2) |
|
static QList< RVector > | getIntersectionPointsLT (const RLine &line1, const RTriangle &triangle2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsLX (const RLine &line1, const RExplodable &explodable2, bool limited=true) |
|
static QList< RVector > | getIntersectionPointsSS (const RSpline &spline1, const RSpline &spline2, bool limited=true, bool same=false) |
|
static QList< RVector > | getIntersectionPointsSX (const RSpline &spline1, const RExplodable &explodable2, bool limited) |
|
static QList< RVector > | getIntersectionPointsXX (const RExplodable &explodable1, const RExplodable &explodable2, bool limited=true, bool same=false) |
|
static QList< QSharedPointer< RShape > > | getOffsetArcs (const RShape &shape, double distance, int number, RS::Side side, const RVector &position=RVector::invalid) |
|
static QList< QSharedPointer< RShape > > | getOffsetLines (const RShape &shape, double distance, int number, RS::Side side, const RVector &position=RVector::invalid) |
|
static QList< QSharedPointer< RShape > > | getReversedShapeList (const QList< QSharedPointer< RShape > > &shapes) |
|
static RShapeProxy * | getShapeProxy () |
|
static bool | hasProxy () |
|
static bool | isArcShape (const RShape &s) |
|
static bool | isCircleShape (const RShape &s) |
|
static bool | isEllipseShape (const RShape &s) |
|
static bool | isFullEllipseShape (const RShape &s) |
|
static bool | isLineShape (const RShape &s) |
|
static bool | isPointShape (const RShape &s) |
|
static bool | isPolylineShape (const RShape &s) |
|
static bool | isRayShape (const RShape &s) |
|
static bool | isSplineShape (const RShape &s) |
|
static bool | isTriangleShape (const RShape &s) |
|
static bool | isXLineShape (const RShape &s) |
|
static bool | order (QList< QList< QSharedPointer< RShape > > > &boundary) |
| Orders the given list of loops into a list of closed loops in which all shapes are connected end to start point. More...
|
|
static QSharedPointer< RShape > | rayToLine (QSharedPointer< RShape > shape) |
|
static QList< QSharedPointer< RShape > > | roundAllCorners (const QList< QSharedPointer< RShape > > &shapes, double radius) |
| Round every corner of the list of given (connected) shapes with the given radius. More...
|
|
static QList< QSharedPointer< RShape > > | roundShapes (const QSharedPointer< RShape > shape1, const RVector &clickPos1, const QSharedPointer< RShape > shape2, const RVector &clickPos2, bool trim, bool samePolyline, double radius, const RVector &pos) |
| Rounds the given shape1 against shape2. More...
|
|
static QSharedPointer< RShape > | scaleArc (const RShape &shape, const RVector &scaleFactors, const RVector ¢er=RDEFAULT_RVECTOR) |
|
static void | setShapeProxy (RShapeProxy *p) |
|
static QSharedPointer< RShape > | transformArc (const RShape &shape, RShapeTransformation &transformation) |
|
static QList< QSharedPointer< RShape > > | trim (const RShape &trimShape, const RVector &trimClickPos, const RShape &limitingShape, const RVector &limitingClickPos, bool trimBoth, bool samePolyline) |
| Trims a shape to another or two shapes to each other. More...
|
|
static QSharedPointer< RShape > | xLineToRay (QSharedPointer< RShape > shape) |
|
Copyright (c) 2011-2018 by Andrew Mustun.
All rights reserved.
This file is part of the QCAD project.
QCAD is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
QCAD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with QCAD. Low-level mathematical representation of a spline.
The spline may be defined by its control points or by its fit points but not both.
- Scriptable:\nThis class is available in script environments.\n
- Shared Pointer Support:\nObjects can be used in QSharedPointer.\n
- Copyable:\nObjects are cleaned up automatically by the garbage collector of the script engine.\n
- Stream Operator:\nObject has a stream operator to present itself as string, for example when using toString() in a script.\n