标签: spline

使用Direct2D绘制样条线

我有样条曲线的数据

  • 学位
  • 控制点
  • 适合点

我需要使用绘制这条曲线Direct2D.目前我正在使用ID2D1GeometrySink接口绘制几何图形,但似乎它没有实现可能的AddSpline方法.

有没有办法通过Direct2D?绘制样条?即使是DirectX可以在Direct2D应用程序中使用的实现也没问题.

c c++ directx spline direct2d

8
推荐指数
1
解决办法
2085
查看次数

如何一次从3个给定点绘制连续曲线

我试图在闪光灯中画一条连续的曲线.有很多方法,但到目前为止,我发现的方法都不符合我的要求.首先,我想使用flash图形api的curveTo()方法. 我不想模拟每曲线段数百次调用lineTo()的曲线. 根据我的经验和理解,线段处理器很重.Flash的二次贝塞尔曲线应该占用较少的CPU功率.如果你认为我错了,请挑战这个假设.

我也不想使用以整行作为参数的预制方法(例如mx.charts.chartClasses.GraphicsUtilities.drawPolyline()).原因是我最终需要修改逻辑以向我绘制的线添加装饰,所以我需要在最低级别理解的东西.

我现在创建了一个方法,使用此处的中点方法绘制给出3个点的曲线.

这是一张图片:

使用实际点作为控制点的连续曲线

问题是线条实际上并没有穿过线条的"真实"点(灰色圆圈).有没有办法利用数学的力量,我可以调整控制点,使曲线实际上通过"真实"点?仅给出当前点及其上一个/下一个点作为参数?复制上面图片的代码如下.如果我可以修改它以满足此要求,那将是很好的(注意第一点和最后一点的例外).

package {
  import flash.display.Shape;
  import flash.display.Sprite;
  import flash.display.Stage;
  import flash.geom.Point;

  [SWF(width="200",height="200")]
  public class TestCurves extends Sprite {
    public function TestCurves() {
      stage.scaleMode = "noScale";
      var points:Array = [
        new Point(10, 10), 
        new Point(80, 80), 
        new Point(80, 160), 
        new Point(20, 160), 
        new Point(20, 200),
        new Point(200, 100)
      ];

      graphics.lineStyle(2, 0xFF0000);

      var point:Point = points[0];
      var nextPoint:Point = points[1];

      SplineMethod.drawSpline(graphics, point, null, nextPoint);

      var prevPoint:Point = point;

      var n:int = …
Run Code Online (Sandbox Code Playgroud)

apache-flex bezier continuous spline actionscript-3

7
推荐指数
1
解决办法
7066
查看次数

splinefun with method ='fmm'

我现在已经在互联网上搜索了一个小时没能成功,在我的生活中,我找不到splinefun使用时method='fmm'(如Forsythe,Malcolm和Moler的方法)样条曲线如何完全适合一组点的解释.我知道以下内容:

拟合具有N个节点的三次样条是(N-1)*4个未知数的问题.通过假设样条在结处是平滑的(精确地说:它的一阶和二阶导数是连续的),假设样条经过所有结和(N-2)*2条件,得到(N-1)*2个等式.这留下了两个条件来确定样条曲线.通过假设二阶导数在端点处为零来找到自然立方.但fmm确实有所不同.据我所知,它适合一个精确的立方体到一个结的子集(这个结?)然后在样条上强加这个立方的某些导数(这些导数在哪里评估?).

r spline

7
推荐指数
1
解决办法
1936
查看次数

使用GNU Scientific Library(GSL)使用不均匀间隔的点绘制2D B样条曲线路径

我正在尝试使用GNU科学库(GSL)绘制从A到B的平滑路径.我正在使用一个返回少量(在这种情况下为8)不规则间隔点(红色)的API,你可以在下图中看到:

返回点和GSL的预期结果

紫色点表示我希望从GSL返回的点数.

首先,这种2D B样条形状是否可以通过GSL获得?我不太了解B-Splines,更不用说2D B-Splines了.我能够让这里显示的B-Splines示例运行并创建一个平滑的.ps文件而没有问题,但该示例使用带有以下代码的统一断点:

/* use uniform breakpoints on [0, 15] */
gsl_bspline_knots_uniform(0.0, 15.0, bw);
Run Code Online (Sandbox Code Playgroud)

在我的情况下,鉴于我给出的数据不稳定且间距不均匀,我是否必须使用非均匀结?我尝试使用gsl_bspline_knots(),以便在下面的测试代码中使用非均匀断点,但我真的不确定这是否是正确的方向.

#define NCOEFFS 8 // not sure what this number should be - number of data points?
#define NBREAK   (NCOEFFS - 2)
const size_t nbreak = NBREAK;

int main (void) {

    // (example code)...

    gsl_vector *non_uniform = gsl_vector_alloc(nbreak);

    // create some random breakpoint values
    for (i=0; i<nbreak; i++) {
        double val = gsl_ran_gaussian(r, 2.0);
        printf("val: %f\n", val);
        gsl_vector_set(non_uniform, i, val); …
Run Code Online (Sandbox Code Playgroud)

c c++ spline gsl bspline

7
推荐指数
1
解决办法
1432
查看次数

使用R进行样条插值

我想对人口数据执行(立方)样条插值,以将年度数据"转换"为季度数据.我知道有相当多的缺陷,但我需要这样做.

这是我的代码示例(使用通用输入数据):

#--------------spline interpolation

x = c(1973:2014)
population = seq(500000, 600000, length.out = 42)
list = spline(x, population, n = 4*length(x), method = "fmm",
       xmin = min(x), xmax = max(x), ties = mean)

x_spline = list$x
pop_spline = list$y
Run Code Online (Sandbox Code Playgroud)

如何定义样条曲线是"每季度"计算的,换句话说是1973.25,1973.5,1973.75,1974等?很抱歉不是统计专家:将年度数据"转换"成季度数据的最佳方法是什么:"fmm","natural","periodic","monoH.FC"或"hyman"?假设人口增长在一年中均匀分布.

致以最诚挚的问候和许多感谢!

interpolation r spline

7
推荐指数
1
解决办法
1万
查看次数

有没有办法在没有函数的情况下绘制最佳拟合曲线?Python

我需要绘制最佳拟合的平滑曲线,但我发现的所有方法都使用 scipy.optimize.curve_fit(),这需要知道与 x 和 y 相关的函数。对于基本散点图,是否有更简单的方法?

我试图得到的曲线:

import matplotlib.pyplot as plot

x = range(30)
y = [1, 1, 1, 2, 1, 1, 1, 2, 4, 5, 8, 12, 13, 14, 12, 11, 9, 6, 5, 4, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1 ]

plot.plot(x, y, "o")
plot.show()
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

python spline curve-fitting smoothing

7
推荐指数
1
解决办法
8453
查看次数

如何在R中的ggplot中向geom_smooth添加图例

有一个问题,在ggplot中添加图例到不同的光滑.

    library(splines)
    library(ggplot2)
    temp <- data.frame(x = rnorm(200, 20, 15), y = rnorm(200, 30, 8))

    ggplot(data = temp, aes(x, y)) + geom_point() + 
      geom_smooth(method = 'lm', formula = y ~ bs(x, df=5, intercept = T), col='blue') + 
      geom_smooth(method = 'lm', formula = y ~ ns(x, df=2, intercept = T), col='red')
Run Code Online (Sandbox Code Playgroud)

我有两个样条:红色和蓝色.我如何为他们添加传奇?

r spline ggplot2

7
推荐指数
1
解决办法
8182
查看次数

mgcv:如何设置样条曲线的节数和/或位置

我想gammgcv包中使用函数:

 x <- seq(0,60, len =600)
 y <- seq(0,1, len=600) 
 prova <- gam(y ~ s(x, bs='cr')
Run Code Online (Sandbox Code Playgroud)

我可以设置结s()吗?然后我可以知道花键使用的结点在哪里?谢谢!

regression r spline gam mgcv

7
推荐指数
1
解决办法
4796
查看次数

lm()和predict.lm()的奇怪行为取决于显式命名空间访问器的使用

我感兴趣的是lm函数的一些令人不安的行为以及predict.lmR中的相关函数.splines基础包提供了bs生成b样条展开的函数,然后可以使用lm多功能线性模型拟合函数来拟合样条模型.

这些lmpredict.lm函数具有很多内置的便利性,可以利用公式和术语.如果调用bs()嵌套在lm调用内,则用户可以提供单变量数据predict,并且此数据将自动扩展为适当的b样条基础.然后将照常预测这种扩展的数据矩阵.

library(splines)

x <- sort(runif(50, 0, 10))
y <- x^2

splineModel <- lm(y ~ bs(x, y, degree = 3, knots = c(3, 6)))

newData <- data.frame(x = 4)
prediction <- predict(splineModel, newData) # 16

plot(x, y)
lines(x, splineModel$fitted.values, col = 'blue3')
points(newData$x, prediction, pch = 3, cex = 3, col = 'red3')
legend("topleft", legend = c("Data", "Fitted Values", "Predicted …
Run Code Online (Sandbox Code Playgroud)

r spline predict lm

7
推荐指数
1
解决办法
212
查看次数

在R中拟合样条函数以插入每月值的每日值

采用看起来像这样的数据框,包含2005年某些日期的数据和每个日期的测量数据.

df <- data.frame("date" = c('2005-04-04','2005-04-19', '2005-04-26', '2005-05-05', 
'2005-05-12', '2005-05-25', '2005-06-02', '2005-06-16', '2005-07-07', '2005-07-14', 
'2005-07-21', '2005-08-04'), "numbers" = c(90,50,50,48,44,37,34,30,36,31,49,54))
Run Code Online (Sandbox Code Playgroud)

我希望在一年中的每一天基于此创建1:365的值序列,主要是为了创建一个新的数据框,从2005年1月1日到2005年12月31日,其中已经填充了来自a的值.样条函数拟合这些现有的12个值.

当我尝试使用以下方法时:

numbers <- df$numbers
x = spline(1:365, numbers)
Run Code Online (Sandbox Code Playgroud)

我明白了

xy.coords中的错误(x,y,setLab = FALSE):'x'和'y'长度不同'

我不确定出了什么问题.

interpolation r spline extrapolation

7
推荐指数
1
解决办法
458
查看次数