Changer le style de tracé en fonction du paramètre dans ParametricPlot
Le Manipulateci-dessous produit un chemin traversant le demi-cercle de l'unité supérieure, allant du {1,0}temps 0 {-1,0}au temps 1/2, puis traversant le même demi-cercle supérieur, mais dans le sens inverse, remontant du {-1,0}temps 1/2 {1,0}au temps 1.
Cependant, on ne peut pas "voir" la moitié inverse de la trajectoire, puisqu'elle se trouve au sommet du même demi-cercle, mais traversée en sens inverse, de la moitié avant.
Est-il possible d'utiliser une PlotStyle, ou une autre directive, pour changer le style de la courbe à l'instant 1/2 de sorte que, par exemple, le tracé à partir de là soit plus épais et d'une couleur différente?
f[t_ /; 0 <= t <= 1/2] := ReIm[Exp[2 \[Pi] I t]]
f[t_ /; 1/2 < t <= 1] := ReIm[Exp[2 \[Pi] I (1 - t)]]
Manipulate[
ParametricPlot[f[t], {t, 0, v},
PlotRange -> {{-1, 1}, {-1, 1}}], {{v, 0.01}, 0.01, 1}]
(Je me rends compte qu'il y a un moyen de simuler le résultat que je veux, à savoir, en changeant la fonction fsur le demi-intervalle de {1/2, 1}manière à avoir un rayon légèrement plus grand que 1. Mais je préférerais de beaucoup laisser le rayon inchangé et "simplement "changer le style de l'épaisseur et / ou de la couleur de la courbe sur ce demi-intervalle.)
Réponses
Clear["Global`*"]
f[t_ /; 0 <= t <= 1/2] := ReIm[Exp[2 \[Pi] I t]]
f[t_ /; 1/2 < t <= 1] := ReIm[Exp[2 \[Pi] I (1 - t)]]
Vous pourriez utiliser ColorFunction
ÉDITER:
Manipulate[
ParametricPlot[f[t], {t, 0, v},
PlotRange -> {{-1, 1}, {-1, 1}},
ColorFunction -> (If[#3 < 1/2, Blue, Red] &),
ColorFunctionScaling -> False],
{{v, 0.01}, 0.01, 1, 0.01, Appearance -> "Labeled"}]
Le tracé d'une seule fonction sans singularités se traduira par un seul Lineobjet, qui ne peut qu'une seule épaisseur. Pour obtenir deux épaisseurs, vous devez tracer deux lignes. Cela peut être acceptable ou non, car cela ne ressemble pas à une seule fonction.
Soit
Manipulate[
ParametricPlot[{
Style[ConditionalExpression[f[t], t <= 1/2], AbsoluteThickness[1], Blue],
Style[ConditionalExpression[f[t], t >= 1/2], AbsoluteThickness[3], Red]},
{t, 0, v},
PlotRange -> {{-1, 1}, {-1, 1}},
PlotRangePadding -> Scaled[0.01]],
{{v, 0.01}, 0.01, 1, 0.01, Appearance -> "Labeled"}]
ou
Manipulate[
ParametricPlot[{
ConditionalExpression[f[t], t <= 1/2],
ConditionalExpression[f[t], t >= 1/2]},
{t, 0, v},
PlotRange -> {{-1, 1}, {-1, 1}},
PlotStyle -> {
Directive[AbsoluteThickness[1], Blue],
Directive[AbsoluteThickness[3], Red]},
PlotRangePadding -> Scaled[0.01]],
{{v, 0.01}, 0.01, 1, 0.01, Appearance -> "Labeled"}]
Vous pouvez également utiliser MeshFunctions, Meshet les MeshShadingoptions comme suit:
Manipulate[ParametricPlot[f[t], {t, 0, v},
MeshFunctions -> {#3 &},
Mesh -> {{1/2}},
MeshStyle -> None,
MeshShading -> {Directive[CapForm["Butt"], AbsoluteThickness[7], Blue],
Directive[CapForm["Butt"], AbsoluteThickness[4],
Dashing[{Large, Medium}], Red]},
PlotRange -> {{-1, 1}, {-1, 1}} 1.1],
{{v, 0.01}, 0.01, 1}]
Utilisation
MeshShading -> {Directive[AbsoluteThickness[1], Blue],
Directive[AbsoluteThickness[7], Dashing[{Large, Medium}], Opacity[.5, Red]]}
obtenir
f[t_ /; 0 <= t <= 1/2] := ReIm[Exp[2 π I t]]
f[t_ /; 1/2 < t <= 1] := ReIm[Exp[2 π I (1 - t)]]
Manipulate[
ParametricPlot[f[t], {t, 0, v}, PlotRange -> {{-1, 1}, {-1, 1}},
ColorFunction -> Function[{t}, If[t > 1/4, Blue, Black]],
ColorFunctionScaling -> False], {{v, 0.01}, 0.01, 1}]
Manipulate[
ParametricPlot[f[t], {t, 0, v}, PlotRange -> {{-1, 1}, {-1, 1}},
PlotStyle -> If[v > 1/4, {Blue, Bold}, {Black, Dashed}]], {{v,
0.01}, 0.01, 1}]