diff --git a/src/parttreewidget.cpp b/src/parttreewidget.cpp index 8d5e7671..75046e93 100644 --- a/src/parttreewidget.cpp +++ b/src/parttreewidget.cpp @@ -52,7 +52,7 @@ PartTreeWidget::PartTreeWidget(const Document *document, QWidget *parent) : setFont(m_normalFont); - QRadialGradient gradient(QPointF(0.115, 0.3), 0.3); + QRadialGradient gradient(QPointF(0.215, 0.3), 0.3); QColor fillColor = QColor(0xfb, 0xf9, 0x87); fillColor.setAlphaF(0.85); gradient.setCoordinateMode(QGradient::StretchToDeviceMode); diff --git a/src/strokemodifier.cpp b/src/strokemodifier.cpp index 829e3c13..ec7a5198 100644 --- a/src/strokemodifier.cpp +++ b/src/strokemodifier.cpp @@ -246,7 +246,6 @@ void StrokeModifier::smooth() const auto &nodeIndex = loop[i]; const auto &node = m_nodes[nodeIndex]; bool isKnot = node.originNodeIndex == nodeIndex; - qDebug() << "Loop[" << i << "]: isKnot:" << (isKnot ? "TRUE" : "false") << "nodeIndex:" << nodeIndex; spline.addPoint((int)nodeIndex, node.position, isKnot); } if (!spline.interpolate()) @@ -257,114 +256,6 @@ void StrokeModifier::smooth() auto &node = m_nodes[it.source]; node.position = it.position; } - - /* - auto atKnot = [](float t, const QVector3D &p0, const QVector3D &p1) { - const float alpha = 0.5f; - QVector3D d = p1 - p0; - float a = QVector3D::dotProduct(d, d); - float b = std::pow(a, alpha * 0.5f); - return (b + t); - }; - - auto centripetalCatmullRom = [&](std::vector &knots, - size_t segment, const std::vector ×, const std::vector &nodeIndices) { - const QVector3D &p0 = m_nodes[knots[0]].position; - const QVector3D &p1 = m_nodes[knots[1]].position; - const QVector3D &p2 = m_nodes[knots[2]].position; - const QVector3D &p3 = m_nodes[knots[3]].position; - - float t0 = 0.0f; - float t1 = atKnot(t0, p0, p1); - float t2 = atKnot(t1, p1, p2); - float t3 = atKnot(t2, p2, p3); - - qDebug() << "t0:" << t0; - qDebug() << "t1:" << t1; - qDebug() << "t2:" << t2; - qDebug() << "t3:" << t3; - - qDebug() << "p0:" << p0; - qDebug() << "p1:" << p1; - qDebug() << "p2:" << p2; - qDebug() << "p3:" << p3; - - for (size_t i = 0; i < times.size(); ++i) { - const auto &factor = times[i]; - float t = 0.0; - if (0 == segment) - t = t0 * (1.0f - factor) + t1 * factor; - else if (1 == segment) - t = t1 * (1.0f - factor) + t2 * factor; - else - t = t2 * (1.0f - factor) + t3 * factor; - QVector3D a1 = (t1 - t) / (t1 - t0) * p0 + (t - t0) / (t1 - t0) * p1; - QVector3D a2 = (t2 - t) / (t2 - t1) * p1 + (t - t1) / (t2 - t1) * p2; - QVector3D a3 = (t3 - t) / (t3 - t2) * p2 + (t - t2) / (t3 - t2) * p3; - - QVector3D b1 = (t2 - t) / (t2 - t0) * a1 + (t - t0) / (t2 - t0) * a2; - QVector3D b2 = (t3 - t) / (t3 - t1) * a2 + (t - t1) / (t3 - t1) * a3; - - m_nodes[nodeIndices[i]].position = ((t2 - t) / (t2 - t1) * b1 + (t - t1) / (t2 - t1) * b2); - - qDebug() << "Update node position:" << m_nodes[nodeIndices[i]].position << "factor:" << factor << "t:" << t; - } - }; - - struct SplineNode - { - size_t order; - int nodeIndex; - float distance; - }; - std::vector splineNodes; - std::vector splineKnots; - float distance = 0; - for (size_t i = 0; i < loop.size(); ++i) { - const auto &nodeIndex = loop[i]; - const auto &node = m_nodes[nodeIndex]; - if (i > 0) - distance += (m_nodes[loop[i - 1]].position - node.position).length(); - if (node.originNodeIndex == nodeIndex) - splineKnots.push_back(splineNodes.size()); - splineNodes.push_back({ - i, nodeIndex, distance - }); - } - - qDebug() << "splineNodes.size():" << splineNodes.size(); - qDebug() << "splineKnots.size():" << splineKnots.size(); - - for (size_t i = 0; i < splineKnots.size(); ++i) { - size_t h = i > 0 ? i - 1 : i; - size_t j = i + 1 < splineKnots.size() ? i + 1 : i; - size_t k = i + 2 < splineKnots.size() ? i + 2 : j; - qDebug() << "h:" << h; - qDebug() << "i:" << i; - qDebug() << "j:" << j; - qDebug() << "k:" << k; - if (h == i || i == j || j == k) - continue; - float beginDistance = splineNodes[splineKnots[i]].distance; - float endDistance = splineNodes[splineKnots[j]].distance; - float totalDistance = endDistance - beginDistance; - std::vector times; - std::vector nodeIndices; - for (size_t splineNodeIndex = splineKnots[i] + 1; - splineNodeIndex < splineKnots[j]; ++splineNodeIndex) { - qDebug() << "splineNodeIndex:" << splineNodeIndex; - times.push_back((splineNodes[splineNodeIndex].distance - beginDistance) / totalDistance); - nodeIndices.push_back(splineNodes[splineNodeIndex].nodeIndex); - } - std::vector knots = { - splineNodes[splineKnots[h]].nodeIndex, - splineNodes[splineKnots[i]].nodeIndex, - splineNodes[splineKnots[j]].nodeIndex, - splineNodes[splineKnots[k]].nodeIndex - }; - centripetalCatmullRom(knots, 1, times, nodeIndices); - } - */ } const std::vector &StrokeModifier::nodes() const