- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 SVG 路径创建高性能、美观的铅笔工具。
我正在记录鼠标坐标以绘制路径。为了获得高保真路径(精确到用户的运动),我需要为每个像素运动记录一个点。
保持路径中的每一个点都会产生大量的点,即 不是 后期协作功能的理想选择(来回发送大量点效率不高),加上每次我需要操作它们时解析巨大的路径是一个瓶颈
在路径的线性区域,删除冗余点,只保留表示线段所需的点 - 我使用 Ramer-Douglas-Peucker 来做到这一点。算法。
但是简化路径会将其变成低保真多边形
在这一点上,路径实际上只是连接线 - 因此路径看起来是锯齿状的。
一个可能的解决方案是将路径点与 Cubic Bezier 连接起来 - 但是这在简化的路径上效果不佳。每个点之间的距离对于三次贝塞尔曲线来说太大而不能“坐”好,因此平滑的路径不再准确地代表用户的预期路径。
另一种解决方案是简单地使用“后处理”算法,例如 Schneider's Algorithm在原始路径上 - 这个算法实际上不会实时工作,因为它是一个性能 pig
理想的解决方案
一个(我认为)可行的解决方案是使用 Centripetal Catmull-Rom插值。
在我研究的所有算法中,这似乎是最有前途的,因为:
最佳答案
直接回答您的问题:
M1 = (t2-t1)*(c1*(P1-P0)/(t1-t0) + c2*(P2-P1)/(t2-t1))
M2 = (t2-t1)*(d1*(P2-P1)/(t2-t1) + d2*(P3-P2)/(t3-t2))
c1 = (t2-t1)/(t2-t0),
c2 = (t1-t0)/(t2-t0),
d1 = (t3-t2)/(t3-t1),
d2 = (t2-t1)/(t3-t1)
Q0 = P1
Q1 = P1 + M1/3
Q2 = P2 - M2/3
Q3 = P2
关于svg - SVG 路径上的 Catmull-Rom 插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30748316/
我正在尝试实现如下所示的一些功能 为此,我正在尝试使用 Cubic interpolation 和 Catmull interpolation(分别检查两者以比较最佳结果),我不明白的是这些插值的影响
我有以下代码来计算四个控制点之间的点以生成 catmull-rom 曲线: CGPoint interpolatedPosition(CGPoint p0, CGPoint p1, CGPoint p
我读过一些介绍使用 GL_LINEAR 进行快速三阶插值的文章。 [1] http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter20.ht
在创建我的 Catmull Rom Spline 之后,例如: vector3 SplineVector = newSpline.createCatmulRomSpline(vectorOne, ve
注意:描述比预期的要长一些。您知道使用此网格实现此算法的可读吗?请让我知道! 我正在尝试实现 Catmull-Clark subdivision使用 Matlab,因为稍后必须将结果与已经在 Matl
如果我有一个 Catmull-Rom spline一定长度如何计算它在一定距离处的位置?通常要计算 catmull rom 样条曲线中的点,您输入一个介于 0 和 1 之间的值以通过比例获得其位置,我
我正在尝试创建一个类,它接受任意数量的点(位置和控制)并根据给定的信息创建一个 catmull-rom 样条。 我正在做的——我真的不确定这是否是正确的做法——将每个单独的点存储在一个类中,如下所示:
来自 this site ,里面好像有关于Catmull-Rom样条的最详细的信息,看来创建样条需要四个点。但是,它没有提到点 p0 和 p3 如何影响 p1 和 p2 之间的值。 我的另一个问题是如
我正在尝试使用 SVG 路径创建高性能、美观的铅笔工具。 我正在记录鼠标坐标以绘制路径。为了获得高保真路径(精确到用户的运动),我需要为每个像素运动记录一个点。 保持路径中的每一个点都会产生大量的点,
我对它们之间的关系有点困惑。在我的课上,我的教授询问如何使用自动计算的切线将 C1 连续分段 Hermite 曲线拟合到 x 个点。有人可以解释这是如何工作的吗? 最佳答案 埃尔米特样条是 的一种方法
我到达了这个 [Catmull-Rom Spline][1],我需要更改代码以使用相同的平滑曲线闭合循环。如果我将前两个数字(x0,x1)添加到名为“points”的数组的末尾,循环将关闭,但我没有得
我正在尝试从 Unity 中的点列表生成 Catmull-Rom 曲线。因为我不想在曲线的点之间存储点,所以我选择使用可以根据时间计算 Catmull-Rom 曲线中位置的解决方案。这有几个例子,he
我想在我的屏幕上生成一个随机样条。这是我目前所拥有的: public class CurvedPath { Random rn; CatmullRomSpline curve; float[] xPt
我正在尝试找到一种在 android 平台上实现 catmull-rom 样条曲线的方法,目的是通过 n 个点平滑地绘制一条线。理想情况下,我将能够通过 Path 及其cubicTo 方法来适应三次贝
简要背景:我正在开发一个基于网络的绘图应用程序,需要绘制通过其控制点的 1px 粗样条线。 我遇到的问题是我需要像使用 1px 铅笔工具一样绘制 p1 和 p2 之间的每个像素。因此,一次没有抗锯齿和
我正在尝试使用 C++ 和 OpenCV 实现用于图像缩放的样条 Catmull-Rom。我进行了两个测试,第一个是图像缩放 (X2),第二个是图像重建(缩放图像抽取)。我的问题是,当我显示像素值时,
我是一名优秀的程序员,十分优秀!