您所描述的可能与手势识别技术有关,因此您可以在它们上搜索想法。
显而易见的方法是应用曲线拟合,但这会产生平滑所有有趣细节和扭结的效果。建议的另一种方法是查看速度和加速度,但这可能会让人毛骨悚然(方向变化可能非常快或非常慢且经过深思熟虑)
一个相当基本但有效的方法是将样本直接简化为折线。
例如,从样本 1 到样本 4 遍历样本(例如),并检查所有 4 个样本是否都在 1 和 4 之间的直线的合理误差范围内。如果是,则将其扩展到点 1。 .5 并重复直到从起点到终点的直线不再为这些样本定义的曲线提供合理的近似值。创建一条直到前一个采样点的线段并开始累积一个新的线段。
当样本彼此太接近时,您必须小心阈值,因此当样本彼此相距少于 4-5 个像素时,您可能需要调整灵敏度。
这将为您提供一组相当准确地遵循原始路径的直线。
如果您需要额外的平滑,或者想要创建可缩放的矢量图形,那么您可以从折线进行曲线拟合。首先,确定扭结(折线中一条线与另一条线之间的角度锐利的位置 - 例如,超过 140 度的任何东西都被认为是平滑曲线,小于 140 度的任何东西都被认为是扭结)并在这些不连续处打破折线. 然后对原始手势的每个子部分进行曲线拟合以使其平滑。这将具有平滑光滑的东西和锐化扭结的效果。(您可以更进一步,插入小的光滑角圆角而不是这些锋利的接头,以降低接头的锋利度)
蛮力,但它可能只是实现你想要的。