7 #include "EngaugeAssert.h" 11 #include "SplineDrawer.h" 14 m_transformation (transformation)
22 m_segmentOperations.resize (numSegments);
27 for (
int segment = 0; segment < numSegments; segment++) {
29 bool itsAKeeper =
true;
41 m_segmentOperations [segment] = (itsAKeeper ?
42 SPLINE_DRAWER_ENUM_VISIBLE_DRAW :
43 SPLINE_DRAWER_ENUM_INVISIBLE_MOVE);
54 if (segment < numSegments - 1) {
57 double tI = double (segment);
58 double tIp1 = double (segment + 1);
64 int deltaX = qFloor (posScreenEnd.
x() - posScreenStart.
x());
65 int deltaY = qFloor (posScreenEnd.
y() - posScreenStart.
y());
66 double pixelDistance = qSqrt (deltaX * deltaX + deltaY * deltaY);
67 double numSteps = pixelDistance;
70 double tIDelta = 1.0 / numSteps;
71 for (
int itI = 1; itI < numSteps - 1; itI++) {
73 double tIm1 = segment + (itI - 1) * tIDelta;
74 double tI = segment + (itI ) * tIDelta;
75 double tIp1 = segment + (itI + 1) * tIDelta;
81 QPointF posScreenBefore (spBefore.x(), spBefore.y());
82 QPointF posScreenCurrent (spCurrent.
x(), spCurrent.
y());
83 QPointF posScreenAfter (spAfter.
x(), spAfter.
y());
85 QPointF posGraphBefore, posGraphCurrent, posGraphAfter;
95 double deltaXBefore = posGraphCurrent.x() - posGraphBefore.x();
96 double deltaXAfter = posGraphAfter.x() - posGraphCurrent.x();
98 if ((deltaXBefore > 0 && deltaXAfter < 0) ||
99 (deltaXBefore < 0 && deltaXAfter > 0)) {
112 if (segment < m_segmentOperations.count()) {
113 return m_segmentOperations.at (segment);
115 return SPLINE_DRAWER_ENUM_INVISIBLE_MOVE;
CurveConnectAs curveConnectAs() const
Get method for connect type.
Cubic interpolation given independent and dependent value vectors.
SplinePair interpolateCoeff(double t) const
Return interpolated y for specified x.
double y() const
Get method for y.
SplineDrawer(const Transformation &transformation)
Single constructor.
Details for a specific Line.
void bindToSpline(const LineStyle &lineStyle, int numSegments, const Spline &spline)
Analyze each segment in the Spline.
SplineDrawerOperation segmentOperation(int segment) const
Indicate if, and how, segment is to be drawn.
bool segmentIsMultiValued(const Spline &spline, int numSegments, int segment) const
Return true if specified segment is multi-valued, else false.
double x() const
Get method for x.
Single X/Y pair for cubic spline interpolation initialization and calculations.