2011-07-16 9 views
3

J'essaye de lisser le chemin que je dessine entre les points.Interpolation/lissage dans Mathematica en utilisant les graphiques

S'il vous plaît considérer:

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

Ce sont les véritables yeux fixations coordonnées que j'utilise pour tracer le chemin temporel.

C'est la façon dont je les tracer maintenant:

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

Je ne pouvais rien faire de bien dans ma tentative d'utiliser l'interpolation.

Serait-ce un bon moyen de lisser le chemin, quelle serait une alternative?

Répondre

6

Qu'en est-il quelque chose comme ça

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]}]] 

Le chemin devient alors quelque chose comme

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

Résultat:

smooth curve

+0

Je vous remercie de votre réponse. Je le laisse un peu ouvert pour voir si d'autres experts se sentent inspirés mais cela a résolu mon problème! – 500

5

Voici une autre façon:

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

enter image description here

Modifier

également (plus facile)

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

Modifier

En utilisant this beautiful package vous pouvez obtenir:

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

enter image description here

Modifier

dernier :)

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

@Merci Belisarius! – 500

+0

@ 500 Si vous avez les positions et les heures, vous pouvez aussi animer le mouvement! –

+0

Waow, merci. J'ai le temps et je veux définitivement mettre en œuvre ces beaux chemins! Je dois dire que je suis perplexe en ce moment, je pense que j'ai besoin de modifier la façon dont j'ai construit mon programme principal d'analyse des mouvements oculaires, je n'utilise pas la fonction Afficher et j'ai tout dans 1 grand graphique.Et cela crée des problèmes, je ne résous que les problèmes temporels d'inhibition lors de l'utilisation de certaines fonctions de tracé. Et ici, ces cloches sonnent à nouveau. – 500

Questions connexes