36#if QT_VERSION >= 0x060000
44#define RDEFAULT_MIN1 -1
63 RSpline(
const QList<RVector>& controlPoints,
int degree);
72 virtual QSharedPointer<RShape>
clone()
const {
73 return QSharedPointer<RShape>(
new RSpline(*
this));
77 return QSharedPointer<RSpline>(
new RSpline(*
this));
84 void copySpline(
const RSpline& other);
86 static QList<RSpline> createSplinesFromArc(
const RArc& arc);
87 static RSpline createBezierFromSmallArc(
double r,
double a1,
double a2);
89 virtual void setZ(
double z);
102 void appendControlPoint(
const RVector& point);
103 void appendControlPoints(
const QList<RVector>& points);
104 void removeLastControlPoint();
105 void setControlPoints(
const QList<RVector>& points);
106 QList<RVector> getControlPoints()
const;
107 QList<RVector> getControlPointsWrapped()
const;
108 int countControlPoints()
const;
109 RVector getControlPointAt(
int i)
const;
111 void appendFitPoint(
const RVector& point);
112 void prependFitPoint(
const RVector& point);
113 void insertFitPointAt(
const RVector& point);
114 void insertFitPointAt(
double t,
const RVector& point);
115 void removeFitPointAt(
const RVector& point);
116 void removeFirstFitPoint();
117 void removeLastFitPoint();
118 void setFitPoints(
const QList<RVector>& points);
119 QList<RVector> getFitPoints()
const;
120 int countFitPoints()
const;
121 bool hasFitPoints()
const;
124 QList<double> getKnotVector()
const;
125 QList<double> getActualKnotVector()
const;
126 void setKnotVector(
const QList<double>& knots);
127 void appendKnot(
double k);
128 QList<double> getWeights()
const;
129 void setWeights(QList<double>& w);
131 void setDegree(
int d);
132 int getDegree()
const;
134 int getOrder()
const;
136 void setPeriodic(
bool on);
139 bool isClosed()
const;
141 bool isPeriodic()
const;
151 void setStartPoint(
const RVector& v);
152 void setEndPoint(
const RVector& v);
155 void unsetTangents();
157 void setTangentAtStart(
const RVector& t);
158 RVector getTangentAtStart()
const;
159 void unsetTangentAtStart();
160 void setTangentAtEnd(
const RVector& t);
161 RVector getTangentAtEnd()
const;
162 void unsetTangentAtEnd();
164 void updateTangentsPeriodic();
169 RVector getPointAt(
double t)
const;
170 RVector getPointAtDistance(
double distance)
const;
179 virtual QList<RVector>
getPointCloud(
double segmentLength)
const;
182 bool limited =
true,
double strictRange =
RMAXDOUBLE)
const;
196 QSharedPointer<RShape>
getTransformed(
const QTransform& transform)
const;
209 QList<RSpline> splitAtPoints(
const QList<RVector>& points)
const;
210 QList<RSpline> splitAtParams(
const QList<double>& params)
const;
212 RPolyline toPolyline(
int segments)
const;
216 QList<QSharedPointer<RShape> > getExplodedBezier(
int segments)
const;
217 QList<QSharedPointer<RShape> > getExplodedWithSegmentLength(
double segmentLength)
const;
222 double getTDelta()
const;
223 double getTMin()
const;
224 double getTMax()
const;
225 double getTAtPoint(
const RVector& point)
const;
226 double getTAtDistance(
double distance)
const;
227 double getDistanceAtT(
double t)
const;
228 QList<RSpline> getSegments(
const QList<RVector>& points)
const;
230 QList<RVector> getDiscontinuities()
const;
231 RSpline simplify(
double tolerance);
233 void updateFromControlPoints()
const;
234 void updateFromFitPoints()
const;
237 virtual QList<QSharedPointer<RShape> >
splitAt(
const QList<RVector>& points)
const;
246 return splineProxy!=
NULL;
261#if QT_VERSION >= 0x060000
272 void appendToExploded(
const RLine& line)
const;
274 void invalidate()
const;
275 void updateInternal()
const;
276 void updateBoundingBox()
const;
278 virtual void print(QDebug dbg)
const;
331#ifndef R_NO_OPENNURBS
#define RDEFAULT_RBOX
Definition RBox.h:35
#define RDEFAULT_MIN1
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RExplodable.h:30
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define RDEFAULT_TOLERANCE_1E_MIN4
Definition RShape.h:43
#define RDEFAULT_RVECTOR
Definition RVector.h:38
int i
Copyright (c) 2011-2018 by Andrew Mustun.
Definition autostart.js:32
Definition opennurbs_nurbscurve.h:27
Low-level mathematical representation of an arc.
Definition RArc.h:42
Represents a box e.g.
Definition RBox.h:46
Interface for explodable shape classes.
Definition RExplodable.h:40
virtual QList< QSharedPointer< RShape > > getExploded(int segments=RDEFAULT_MIN1) const =0
Low-level mathematical representation of a line.
Definition RLine.h:41
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
From
End used to specify from which end of a shape to measure a distance.
Definition RS.h:371
@ FromStart
Definition RS.h:372
@ FromAny
Start or end.
Definition RS.h:374
static const double PointTolerance
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RS.h:920
Side
Side used for side of a point relative to an entity (right hand or left hand side)
Definition RS.h:313
Ending
Entity ending.
Definition RS.h:323
Interface for geometrical shape classes.
Definition RShape.h:72
virtual bool isValid() const
Definition RShape.h:92
virtual double getDistanceFromStart(const RVector &p) const
Definition RShape.h:356
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const =0
virtual QList< RVector > getPointCloud(double segmentLength) const =0
virtual bool trimStartPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RShape.h:309
virtual RVector getStartPoint() const
Definition RShape.h:289
virtual bool stretch(const RBox &area, const RVector &offset)
Definition RShape.cpp:1741
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny) const =0
virtual RVector getEndPoint() const
Definition RShape.h:292
virtual bool trimEndPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RShape.h:328
Type
Definition RShape.h:74
@ Spline
Definition RShape.h:82
virtual QList< RVector > getCenterPoints() const =0
virtual bool move(const RVector &offset)=0
virtual QList< double > getDoubleProperties() const
Definition RShape.h:172
virtual double getAngleAt(double distance, RS::From from=RS::FromStart) const
Definition RShape.h:249
virtual bool rotate(double rotation, const RVector ¢er=RDEFAULT_RVECTOR)=0
virtual void print(QDebug dbg) const
Definition RShape.cpp:1760
virtual QList< QSharedPointer< RShape > > splitAt(const QList< RVector > &points) const
Definition RShape.cpp:2234
virtual bool mirror(const RLine &axis)=0
virtual double getDirection1() const
Definition RShape.h:277
virtual QList< RVector > getEndPoints() const =0
virtual RVector getMiddlePoint() const
Definition RShape.h:295
virtual QList< RVector > getSelfIntersectionPoints(double tolerance=RS::PointTolerance) const
Definition RShape.h:268
virtual double getDirection2() const
Definition RShape.h:280
virtual RS::Side getSideOfPoint(const RVector &point) const
Definition RShape.h:284
virtual QList< RVector > getVectorProperties() const
Definition RShape.h:170
virtual bool isOnShape(const RVector &point, bool limited=true, double tolerance=RDEFAULT_TOLERANCE_1E_MIN4) const
Definition RShape.cpp:80
virtual QList< RVector > getMiddlePoints() const =0
virtual bool flipHorizontal()
Definition RShape.cpp:1733
virtual bool reverse()
Definition RShape.h:299
virtual void setZ(double z)=0
virtual QSharedPointer< RShape > getTransformed(const QTransform &transform) const =0
virtual RBox getBoundingBox() const =0
virtual QList< int > getIntProperties() const
Definition RShape.h:171
virtual bool flipVertical()
Definition RShape.cpp:1737
virtual RS::Ending getTrimEnd(const RVector &trimPoint, const RVector &clickPoint)
Definition RShape.h:345
virtual bool scale(double scaleFactor, const RVector ¢er=RVector())
Definition RShape.cpp:1756
virtual QList< bool > getBoolProperties() const
Definition RShape.h:173
virtual double getLength() const =0
Low-level mathematical representation of a spline.
Definition RSpline.h:59
ON_NurbsCurve curve
Definition RSpline.h:332
bool periodic
Closed periodic flag.
Definition RSpline.h:325
bool isDirty() const
Definition RSpline.h:239
RVector tangentEnd
Unit vector end tangent.
Definition RSpline.h:320
RBox boundingBox
Definition RSpline.h:334
virtual bool isInterpolated() const
Reimplement and return true if this shape relies on interpolation for geometrical operations such as ...
Definition RSpline.h:96
virtual bool trimEndPoint(double trimDist)
Definition RSpline.h:204
double length
Definition RSpline.h:337
QList< QSharedPointer< RShape > > exploded
Definition RSpline.h:335
QList< double > knotVector
Getter function for this property: getKnotVector
Definition RSpline.h:292
bool dirty
Definition RSpline.h:327
QList< RVector > fitPoints
Getter function for this property: getFitPoints Setter function for this property: setFitPoints
Definition RSpline.h:304
virtual RShape::Type getShapeType() const
Definition RSpline.h:68
int degree
Getter function for this property: getDegree Setter function for this property: setDegree
Definition RSpline.h:310
QList< double > weights
Getter function for this property: getWeights Setter function for this property: setWeights
Definition RSpline.h:298
virtual QSharedPointer< RShape > clone() const
Definition RSpline.h:72
static RSplineProxy * splineProxy
Definition RSpline.h:339
QSharedPointer< RSpline > cloneToSpline() const
Definition RSpline.h:76
virtual bool isDirected() const
Definition RSpline.h:80
static RSplineProxy * getSplineProxy()
Definition RSpline.h:257
RVector tangentStart
Unit vector start tangent.
Definition RSpline.h:315
static bool hasProxy()
Definition RSpline.h:245
virtual bool trimStartPoint(double trimDist)
Definition RSpline.h:201
bool updateInProgress
Definition RSpline.h:328
QList< RVector > controlPoints
Getter function for this property: getControlPoints Setter function for this property: setControlP...
Definition RSpline.h:287
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RSplineProxy.h:34
Represents a 3d vector (x/y/z).
Definition RVector.h:47
static const RVector invalid
invalid vector
Definition RVector.h:335
#define QCADCORE_EXPORT
Definition core_global.h:10
void update()
Keeps the user interface up to date during long operations.
Definition simple.js:51
#define NULL
Definition opennurbs_system.h:256