2011-07-16 2 views
3

Я пытаюсь сгладить путь, который я рисую между точками.Интерполяция/сглаживание в Mathematica с использованием графики

Пожалуйста, обратите внимание:

lesPoints = {{41, 26}, {42, 29}, {41, 31}, {46, 30}, {48, 30}, 
       {40, 30}, {43, 30}, {47, 30}, {48, 26}, {47, 20}} 

Таковы реальные глаза фиксации координаты я использую, чтобы проследить временный путь.

Это путь я сюжет их теперь:

Graphics[{ 
     Table[Arrow[{lesPoints[[i]], lesPoints[[i + 1]]}], 
       {i,Length[lesPoints] - 1}], 
     MapThread[Text[Style[#1, Large, FontFamily -> "Impact"], {#2, #3}] &, 
     PrependTo[Transpose[lesPoints], Range[1, [email protected]]]]}] 

enter image description here

Я не мог получить что-нибудь прямо в моей попытке использовать интерполяцию.

Будет ли это хорошим способом сгладить путь, что было бы альтернативой?

ответ

6

А что-то вроде этого

lesPoints = {{41, 26}, {42, 29}, {41, 31}, {46, 30}, {48, 30}, 
      {40, 30}, {43, 30}, {47, 30}, {48, 26}, {47, 20}} 

interpolation = Interpolation[Table[{i, lesPoints[[i]]}, {i, Length[lesPoints]}]] 

Путь становится чем-то вроде

plot = ParametricPlot[interpolation[t], {t, 1, Length[lesPoints]}]; 
Show[plot, Graphics[{Red, PointSize[0.02], Point /@ lesPoints}], Axes -> False] 

Результат:

smooth curve

+0

Спасибо за ваш ответ. Я оставляю его немного открытым, чтобы понять, вдохновляют ли другие эксперты, но он решил мою проблему! – 500

5

Вот еще один способ:

Show[Graphics[{Red, PointSize[0.02], Point /@ lesPoints}], 
    ListLinePlot[lesPoints, InterpolationOrder -> 4]] 

enter image description here

Редактировать

Также (проще)

ListLinePlot[lesPoints, InterpolationOrder -> 4, Mesh -> Full, Axes -> None] 

Редактировать

С помощью this beautiful package вы можете получить:

Show[Graphics[{Red, PointSize[0.015], Point /@ lesPoints}], 
ListLinePlot[lesPoints, InterpolationOrder -> 4, Oriented  -> True, 
                HowManyArrows -> 5]] 

enter image description here

Редактировать

последняя :)

Show[ 
    ListLinePlot[ 
    lesPoints, InterpolationOrder -> 4, 
    Epilog -> (MapIndexed[Inset[Style[[email protected]@#2, Medium], #1 + {-.2, .4}] &, 
       lesPoints]), 
    PlotRangePadding -> 1, Oriented -> True, Axes -> False, 
    PlotStyle -> Directive[Arrowheads[.015]]], 
Graphics[{Red, PointSize[0.008], Point /@ lesPoints}]] 

enter image description here

+0

@ Спасибо, Велизарий! – 500

+0

@ 500 Если у вас есть позиции И раз, вы можете оживить движение! –

+0

Вау, спасибо. У меня есть время и определенно хочу реализовать те прекрасные пути! Должен сказать, что я озадачен прямо сейчас, я думаю, мне нужно изменить способ создания моей основной программы анализа движения глаз, я не использую функцию Show и не имею все в 1 большой графике.И это создает проблему. Я решаю только временные проблемы с приглушением при использовании некоторой функции графика. И вот эти колокола снова звенели. – 500

Смежные вопросы