问题标签 [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.
python - 贝塞尔曲线与线段的交点
我正在用 Python(使用 pygame)编写一个游戏,它要求我为每个新游戏生成随机但漂亮的“海”。经过长时间的搜索,我确定了一种涉及贝塞尔曲线的算法,如padlib.py中定义的那样。我现在需要弄清楚 padlib 生成的曲线何时与线段相交。
蛮力方法是仅使用 padlib 生成的一组近似线段来找到答案。但是,我怀疑可以通过分析找到更好的答案。我只有几十条样条线段 - 搜索它们应该比数千条线段更快。
一点点搜索让我走上了这条路:Bezier Curve -> Kochanek-Bartels Spline -> Cubic Hermite spline
在最后一页,我发现了这个功能:
p (t) = h 00 (t) p 0 + h 10 (t) m 0 + h 01 (t) p 1 + h 11 (t) m 1
其中p (t) 实际上是一个点(二维向量),h ij (t) 函数是三次多项式,p 0、p 1、m 0和m 1是我可以从 padlib 代码中获得的点。
现在,我可以看到我的问题的解决方案是p (t) = u + v * t 1,其中u和v是我的线段的结尾。
但是,制定分析解决方案超出了我的范围。这里有人知道现有的解决方案吗?或者可以帮助我解决方程?
r - 如何在 R 中平滑数组?
我在 R 中有一个二维数组,它表示行和列网格的值数据。它看起来像这样:
我想“平滑”这些值。在这个概念验证点上,我可以使用任何流行的平滑函数。我目前正在尝试使用该smooth.spline
功能:
通过(天真地)打电话
当我运行这个时,我得到这个错误:
Smooth.spline(a) 中的错误:需要至少四个唯一的“x”值
我的数组在每个维度中有四个或更多唯一值,所以我认为我不知道如何正确格式化输入数据。有人可以给我一些关于这种事情的指示吗?-like 函数的示例smooth
似乎适用于一维向量,我似乎无法外推到二维世界。我是 R 新手,所以请随时在此处纠正我对术语的误用!
python - 给定四个点,如何使用 wxPython 绘制贝塞尔曲线?
在我看来,DC对任何类型曲线的唯一支持是样条曲线。有没有添加贝塞尔函数的库,或者有没有办法将贝塞尔曲线转换为样条曲线?
python - Python 最小二乘自然样条
我正在尝试找到一个适合自然样条的数值包,该样条可以最小化加权最小二乘。
scipy 中有一个包可以满足我对非自然样条曲线的要求。
graphics - 三次贝塞尔曲线上的最近点?
如何沿着三次贝塞尔曲线找到最接近平面中任意点 P 的点 B(t)?
c# - 使用 Catmull-Rom 样条线创建一个圆
我有一个类,您可以在其中输入 catmull-rom 样条线的控制点,然后它返回沿样条线运行的点列表。
我需要输入哪些点才能创建一个圆圈?
c++ - (一种)在 C++ 中旋转和切片容器的元素
我有一个std::vector
包含Point struct
(x,y,z 和其他一些非指针类型) 的。
这些点是用于绘制 bspline 曲线的控制点。我在绘制曲线时没有问题,但是当我必须关闭曲线时会出现复杂情况,这涉及以特定顺序添加控制点(容器内已经存在)。
例如,如果我有 5 个控制点
我必须得到 5 个这样的序列:
最初,我选择了std::rotate
,但后来意识到这不是我想要的。
我在执行此操作时遇到了麻烦。我得到的最好的是 C++ 中的非工作版本(失败的原因不是问题,这是一个片段)。
有没有办法做到这一点?我知道我可以用许多嵌套的 for 循环来实现它,但我试图避免这种情况,寻找更优雅的东西(如果这个词合适的话)。
提前致谢。
math - 数学:使用带有时间约束的 Hermite 曲线缓入、缓出位移
我正在尝试编写一种方法,该方法使用开始时的加速和结束时的减速(缓出/缓入)随时间从 0 插值到 x(对象在一维中的位置),唯一的约束是总时间提供, 以及加速 和 减速 的 持续 时间. 运动应该复制惯性效应,我正在考虑非线性部分的Hermite 曲线。
有人可以指出我的一部分代码吗?我不知道如何整合 Hermite 曲线,因此不知道我将在加速部分或减速部分移动多少,进而我无法弄清楚线性的速度是多少部分。
谢谢。
一些参考来说明我的问题。
编辑:
- start 和 end 速度为空,当前时间也是方法中参数的一部分,我已经更新了签名。
- 基本上,这个想法是想象在距离 d 上以恒定速度移动,这给出了总持续时间。然后我们添加加速和减速阶段,同时保持相同的持续时间,因此我们有一个未知的新巡航速度要确定(因为我们在 Hermite 阶段中的移动比在它们所取代的线性阶段中移动的少)。与相同持续时间的线性移动相比,在 Hermite 阶段丢失的移动量可能是曲线顶部和底部区域之间的比率,这只是非专家的想法。
编辑:Roman 和 Bob10 提供了完整的工作解决方案。我实现了 Roman 的代码。谢谢你们俩,伙计们!感谢您的完美支持和详细的解决方案,您为我节省了长时间的搜索和试验。
c# - 双精度数组的 Akima 插值
假设我有一个双打数组,使用Akima 插值对这个系列进行采样的好算法是什么?我太愚蠢了,无法将数学描述转化为代码。