2012-03-27 49 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最小化之後,得到最小的形狀是類似於最多路徑的形狀。而且你已經有了最適合的參數!現在

,得到這個正常工作是辛苦,並採取了大量的時間和調整(找到更適合的概率函數,高效的最小化程序,一套良好的基礎形狀等)。谷歌找到更詳細的解釋 - 但這是我如何開始,如果沒有其他信息可用。

相關問題