问题标签 [spline]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-flex - 如何一次从 3 个给定点绘制连续曲线
我正在尝试在 Flash 中绘制一条连续的曲线。有很多方法,但到目前为止我发现没有一个完全符合我的要求。首先,我想使用flash图形api的curveTo()方法。 我不想模拟一条曲线,每个曲线段都有数百次调用 lineTo()。 根据我的经验和理解,线段是处理器繁重的。Flash 的二次贝塞尔曲线应该占用更少的 CPU 功率。如果你认为我错了,请挑战这个假设。
我也不想使用将整行作为参数的预制方法(例如 mx.charts.chartClasses.GraphicsUtilities.drawPolyline())。原因是我最终需要修改逻辑以向我正在绘制的线条添加装饰,所以我需要一些我理解的最低级别的东西。
我目前创建了一种方法,该方法将使用此处找到的中点方法绘制一条给定 3 个点的曲线。
这是一张图片:
问题是这些线实际上并没有通过线的“真实”点(灰色圆圈)弯曲。有没有一种方法可以利用数学的力量来调整控制点,使曲线实际上通过“真实”点?仅将当前点及其上一个/下一个点作为参数?复制上图的代码如下。如果我可以修改它以满足这个要求,那就太好了(注意第一点和最后一点的例外)。
稍后我将在 draw 方法中添加箭头和东西。
image - 图像扭曲过滤器 - 算法和光栅化
我想实现一个过滤器,它允许通过移动一些标记边缘和切线方向的控制点来重新采样图像。目标是当您使用“自由变换”并选择变形模式“自定义”时,能够像在 Photoshop 中看到的那样自由变换图像。图像适合某种可以操作的样条补丁(如果这是一个有效名称)。
我了解简单样条线(路径)的工作原理,但是如何将它们连接起来形成补丁?您如何采样这样的补丁来渲染变形图像?对于目标中的每个像素,我需要知道源图像中对应的像素。我什至不知道从哪里开始搜索...
非常感谢任何有用的信息(关键字、链接、论文、参考实现)!
algorithm - 创建连续样条线/在样条线之间进行平滑过渡
我正在从事一个项目,该项目涉及从一组定义的点(数万个点)创建样条曲线。
我首先为前 1000 个点创建一条样条曲线,并用箭头模拟该路径上的“驾驶”(它是使用样条曲线上的切线和当前点绘制的)。当我接近路径的尽头时,我会采用接下来的 1000 个点并创建一个新的样条曲线并继续我的“驾驶”。
我遇到的问题是样条线(以前的样条线和当前样条线)最后不匹配。不匹配是指它们没有相同的切线(一阶导数不匹配),并且前一个样条的最后一点和新样条上的第一个点之间存在差异(这是因为我没有使用插值样条但平滑样条 - 见下面的注释1)。当切换到新创建的样条线时,这会使我的箭头在样条线的末端“跳跃”。
注意1 :我没有使用插值样条线。我正在使用平滑样条曲线。有关更多详细信息,请参见此处和此处。这意味着作为输入给出的点集可能不在结果样条线上(在我的情况下,它们非常接近样条线 - 但通常不在样条线上)。
注意2:使用插值样条是不可能的,因为用于计算样条的数据中有很多噪音。
注意 3:在具有 2 GB RAM(我们的应用程序目标平台)的3Ghz PC 上计算整个点集的样条曲线需要很长时间(超过 30 秒);所以这样做也是不可能的。
我有兴趣在切换样条曲线时克服这种不需要的“跳跃”。
所以我的问题是:
- 是否有一些方法/算法可以平滑“跳转”/过渡到新样条?
- 我可以用特殊类型的样条来克服这个问题吗?(这是我迄今为止尝试过的,没有显着改善)。
谢谢你的任何想法,
尤利安
c++ - 应该重新绘制 Bspline,而不删除窗口的所有其余部分
在我的 mousefunc 中,我调用了一个函数 bspline。它的工作原理是这样的:使用鼠标,您可以放置控制点,然后根据这些点绘制 bspline。因此,如果您绘制了三个点,则会显示这些点之间的曲线。通过添加另一个点,旧曲线消失并出现新曲线。这个新的现在位于四个点之间。这很好用。但是:此 bspline 曲线仅显示在一个视口中。此视口有黑色边框。当我的 bspline 被重绘时,这个边框消失了。这是因为调用了 glutPostredisplay。因为在我的 glutDisplayFunc 中,我调用 glClear(GL_COLOR_BUFFER_BIT)。所以这是很自然的事情发生。如果我删除了 displayfunc 中的 glClear(GL_COLOR_BUFFER_BIT) 边框会保留,但旧曲线也会保留。即使我说应该重新绘制边界,也没有任何反应。我想不出替代方案。如果您能帮助我,将不胜感激...
ios - IOS。有没有人找到关键帧 UIView 属性的方法?
iOS 严重缺乏的一件事是能够在属性/属性上设置键并使用样条线在它们之间进行插值。有没有人考虑过这个和/或找到解决这个问题的方法?每个人都在使用 Cocos2d 做这种事情吗?Cocos2d 的能力比我需要的多吗?
谢谢,
道格
c++ - 创建平滑线以连接 3 维中的 N 个点
我在 3 维空间中有 N 个点。我需要用一条线加入他们。但是,如果我用一条简单的线来做,它就不平滑而且看起来很丑。
我目前的方法是使用 Bezier 曲线,对 4 个点使用 DeCasteljau 算法,并为我的数据集中的每组 4 个点运行该算法。但是,问题在于,由于我分别在 1-4、5-8、9-12 等点上运行它,因此 4-5、8-9 等点之间的线并不平滑。
我还寻找其他方法;具体来说,我发现这篇关于 Catmull-Rom 样条的文章,这似乎更适合我的目的,因为曲线穿过所有控制点,不像贝塞尔曲线。所以我几乎开始实施它,但后来,我在那个网站上看到这个公式有效"assuming uniform spacing of control points"
。我的问题不是这样。
所以,我的问题是,我应该使用什么方法——Bezier、Catmull-Rom,还是完全不同的方法?如果是贝塞尔曲线,那么如何解决 4-5、8-9 等之间的不平滑问题?如果Catmull-Rom,如果点的间距不均匀,为什么公式不起作用,我需要什么?
编辑:我现在很确定我想要 Catmull-Rom 样条,因为它通过了每个控制点,这对我的应用程序来说是一个优势。因此,我想回答的主要问题是为什么我提供的链接上的公式不适用于非均匀间隔的控制点?
谢谢。
javascript - 通过一组 N 个点绘制一条曲线,其中 N>2
我需要使用 Javascript 通过 N>2 的 N 个点平滑地绘制一条曲线。我目前在 html5 画布对象中使用 bezierCurveTo() 。我已经投入了大量时间来尝试找到实现这一目标的最佳方法,虽然 Catmull-Rom Splines 听起来很有希望,但我不知道有什么方法可以将它们绘制成线条。因此,我只剩下折线贝塞尔曲线,需要找到所有中间控制点。
我重新学习了大量的数学知识,但我在这里有一个部分工作的例子。这条线有时不是特别平滑,并且我的控制点对于某些向量是关闭的。这是我最初的 math.stackexchange 问题,我问它以获得控制点的大部分数学。
我也会对 Catmull-Rom Splines 持开放态度,但需要一些帮助来了解如何将它们转换为画布上的线条。我找到了这个资源,但在将它应用到我的需要时再次迷失了方向。
下面是从我上面的示例链接创建的图像,说明了如何复制错误的控制点:
非常感谢您提前提供的任何帮助!
scipy - 如何直接获得scipy插值的梯度?
我有一个较大的 3D numpy 标量值数组(如果必须,可以将其称为“体积”)。我想在一系列不规则的、并非所有已知的预先非整数 xyz 坐标上插入一个平滑的标量场。
现在 Scipy 对此的支持非常好:我用
并调用
对于感兴趣的 (x,y,z) 以获得明显表现良好(平滑等)的插值。
到现在为止还挺好。但是,我的应用程序还需要插值字段的局部导数。目前我通过中心差分获得这些:我还在 6 个额外的点处对体积进行采样(这至少可以通过一次调用来完成map_coordinates
)并计算例如 x 的导数(i(x+h,y,z)-i(x-h,y,z))/(2*h)
。(是的,我知道我可以将额外抽头的数量减少到 3 个并进行“单边”差异,但不对称会让我烦恼。)
我的直觉是应该有一种更直接的方式来获得梯度,但我不知道足够的样条数学(还)来弄清楚它,或者理解 Scipy 实现的核心发生了什么:scipy/scipy/ndimage/src/ni_interpolation.c
.
有没有比中心差分“更直接”获得我的梯度更好的方法?最好是允许使用现有功能而不是破解 Scipy 的内部功能来获得它们。
cocoa - Cocoa 中的高阶贝塞尔路径
有没有办法在 Cocoa 中创建具有任意能力的 Bezier 路径?例如,对于我的应用程序的一部分,我需要一个起伏的单元格。所以,我想用 10 到 50 个不同的点画一条曲线,形成一个循环。点会随机波动。我想我可以制作一条贝塞尔路径来表示循环,使用这些点作为指南,或者根据这些点推断指南。
我什至应该使用贝塞尔路径吗?或者是否有其他算法会产生类似的效果?
r - 分离结之间的 B 样条并比较每件的拟合优度
我正在研究一些 B 样条回归(一级,单结,不是很复杂),并且想比较内部结之前和之后部分的参数估计值。
现在我有这样的事情:
然后fit
有截距估计和两组参数估计。
我有兴趣将这两个参数集与另一个参数集进行比较 - 有人知道划分bs
模型对象或提取这两个子模型吗?或者,将 F 值转换为 R 中的 ap 值,以便我可以手动进行这些测试。