Tracer un contour dirigé avec des auto-intersections
J'ai une séquence ordonnée de points le long d'un contour plan dirigé fermé avec des auto-intersections. Je dois trouver une courbe continue interpolant ces points et la tracer, avec de petites pointes de flèches indiquant sa direction (de préférence, placées à des intervalles égaux le long de la courbe), et des régions fermées de remplissage de couleur ayant un nombre d'enroulement impair. Ci-dessous, une image que j'ai dessinée manuellement pour expliquer l'idée (elle devrait être plus fluide que cela). Comment puis-je faire cela dans Mathematica ?
Réponses
Quelque chose pour vous aider à démarrer:
SeedRandom[10]
pts = RandomReal[{0, 1}, {8, 2}];
int = Interpolation[Thread@{N@Subdivide[0, 1, 8], Append[#, First@#] &@pts}, PeriodicInterpolation -> True, InterpolationOrder -> 100];
line = FirstCase[ParametricPlot[int[x], {x, 0, 1}], _Line, Line@{}, All];
Graphics[
{
LightGray,
FilledCurve@line,
Black,
Thick,
Arrowheads@Append[0]@Table[0.05, 10],
Arrow@JoinedCurve@line,
Red,
AbsolutePointSize@5,
Point@pts
}
]
L'idée principale est d'utiliser Interpolationavec PeriodicInterpolation->Trueet un haut InterpolationOrderpour obtenir la limite. Le InterpolatingFunctionest ensuite échantillonné à l'aide de ParametericPlotpour obtenir un aspect lisse sans simplement échantillonner aveuglément des centaines de fois.
Enfin, l'image est construite en utilisant Arrowet Arrowheadspour le périmètre et FilledCurvepour l'ombrage.