c++ - 如何使用 QwtSpline 创建 B 样条曲线

标签 c++ qt qwt bspline

在 QwtSpline 中有两种不同类型的样条,但我看不出这两种类型之间有什么区别。

我找到了一张图片,它解释了我的问题: "/image/x3cVJ.jpg"

QwtSpline 总是创建一个样条,就像图片左侧的那样。 但我想要一个 Spline,就像右边的那个。

我的代码如下:

QwtSpline spline;
QPolygonF polygon;
QVector<QPointF> result;

polygon.append(startPoint);
polygon.append(rotatedPoint);
polygon.append(endPoint);

spline.setPoints(polygon);

for(double i = startPoint.rx(); i < endPoint.rx(); i++)
{
    result << QPointF(i, spline.value(i));
}
result << QPointF(endPoint.rx(), spline.value(endPoint.rx()));

我想做的是将图片右侧的样条绘制到 QwtPlot 中。也许有一种更简单的方法来解决我的问题,而不是创建一个 QwtSpline 迭代它以创建一个 QwtSpline 上的每个点的 QwtCurve。

如果更简单的话,绘制贝塞尔曲线到QwtPlot,那没问题,贝塞尔曲线对我来说会更容易。我只取了样条,因为我在Qwt中没有找到贝塞尔曲线。

最佳答案

从分支之一尝试 Qwt >= 6.2。它具有多种样条插值算法的全新实现。

但如果只是绘制贝塞尔曲线,您也可以使用 QwtShapeItem,它显示的是 QPainterPath。当然,您也可以使用 QPainterPath 从贝塞尔曲线创建 QPolygon,然后使用 QwtPlotCurve。

关于c++ - 如何使用 QwtSpline 创建 B 样条曲线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52004575/

相关文章:

c++ - 如何查找输入的 double 是否是 0.05 的倍数

c++ - Qt 多页 TIFF

c++ - Qt - 使用 QTransform(或类似的),缩放内部 QRect 到/从 QGraphics

c++ - Qwt - 如何使用 QwtPlotPicker 获取选择点索引

c++ - 将集合的第一个第 n 个值复制到 C++ 中的 vector 的简单方法

c++ - 如何在 ARM 上运行 HelloWorld

c++ - 显示函数的枚举值

asp.net - 以Webform显示从REST Web服务检索到的base64图像

c++ - 在实时绘图中仅绘制 QwtCurve 的一部分

plot - 如何限制 QwtPlot 可以缩小的最大范围?