2012-03-27 19 views
0

好吧,我做一个程序,我将普遍接受可可触控板事件,并将这些事件映射到NSBezierPaths。 例如,我可能只有一根手指就有一个NSBezierPath,它是圆形的(ish)。或者路径可能是右箭头形状。或者它可能实际上是两个垂直的NSBezierPaths并排。 我需要做的是看看这些NSBezierPaths,并确定它们最类似于什么/形状模式... 有没有人有任何指针?看看NSBezierPath(s)是否形成了特定的形状或模式

感谢

回答

0

这可能是晚了,但我只是想这一点,并与一些值得尝试走了过来。

  1. 定义一组形状,每个形状用少量参数进行参数化。例如,通过它的中间点(两个变量)和一个半径(第三个变量),通过两个端点(四个变量)的一条线,一个箭头作为具有用于头部大小的附加参数的线来定义一个圆,等等上。

  2. 现在,您可以将其转化为最小化问题。对于路径和每个形状上的每个点i,根据形状参数di(params)确定形状的最小距离。现在定义一个概率函数,告诉你路径看起来像形状多少。默认的候选人就是所谓的在概率论“卡方”:

chi^2 (params) = sum_i (di(params))^2

  1. chi^2是每个形状的参数的函数 - 因此下一步就是减少这种数量。通常可以使用库,但最小化例程也可以手动实现。

  2. 将每个形状的chi^2最小化之后,得到最小的形状是类似于最多路径的形状。而且你已经有了最适合的参数!现在

,得到这个正常工作是辛苦,并采取了大量的时间和调整(找到更适合的概率函数,高效的最小化程序,一套良好的基础形状等)。谷歌找到更详细的解释 - 但这是我如何开始,如果没有其他信息可用。

相关问题