Plotando uma função f(x):
> plot(x^2-1, x=-2..2, y=-1..4, scaling=constrained, color=blue, thickness=2);
Plotando uma curva parametrizada:
> plot([t^2, t^3, t=-1..1], scaling=constrained, thickness=2, color=blue, title=`Cúspide`);
Plotando uma poligonal:
> plot([[0,0], [4,4], [4,0], [0,4], [0,0]], scaling=constrained);
Plotando um polígono:
> with(plots):
> polygonplot([[0,0], [4,4], [0,4]], scaling=constrained, color=blue);
Plotando uma curva implícita:
> restart; with(plots):
> implicitplot(x^2+2*y^2=1, x=-1..1, y=-1..1, scaling=constrained, title=`Uma elipse`);
Plotando várias figuras 2D, simultaneamente:
> plot({x^2, x^3, x^4}, x=-1..1); # conjunto de funções, com cores escolhidas pelo Maple
> plot([x^2, x^3, x^4], x=-1..1, color=[red, blue, green]); # você escolhe as cores --- experimente outras opções --- na ordem
> plot([[t^2, t^3, t=-1..1], [t, t^2, t=-1..1]], color=[red, blue]); # ídem com curvas parametrizadas
> polygonplot({[[0,0], [1,0], [1,1]], [[0,0],[1,1], [0,1]]}); # já não funciona bem para distinguir os polígonos! Tentemos então:
> p1 := polygonplot([[0,0], [1,0], [1,1]], color=red):
> p2 := polygonplot([[0,0], [1,1], [0,1]], color=blue):
> display({p1, p2});
> implicitplot({x^2-y^2=1, x^2-y^2=0}, x=-2..2, y=-2..2, scaling=constrained, axes=none, title=`Hipérbole e suas assíntotas`); # E nesse, será que dá para ordenar as entradas e as opções?
Animações simples em 2D, com uso do animate:
> restart; with(plots):
> animate(s*x^2, x=-1..1, s=0..1);
> animate([t^2, s*t^3, t=-1..1], s=0..1);
> animate({[t, sin(t+s), t=0..4*Pi], [t, sin(t), t=0..4*Pi]} ,s=0..2, color=blue);
Aplicando para animar uma trajetória:
> x := t -> cos(t): y := t -> sin(t): equações paramétricas do caminho
> tmin := -Pi: tmax := Pi:
> T := (t,s) -> tmin + s*(t-tmin): função que introduz o parâmetro para animação s. Para s=0, um ponto; para s=1, todo o traço da curva, de tmin a tmax; para s entre 0 e 1, parte proporcional do traço da curva.
> animate( [x(T(t,s)), y(T(t,s)), t=tmin..tmax], s=0..1, scaling=constrained, color=blue, thickness=2);
Rodando um polígono em torno da origem:
>
M := theta -> matrix([[cos(theta), -sin(theta)], [sin(theta), cos(theta)]]);
função que a cada
associa a matriz de rotação de ângulo
. Se quiser um cisalhamento, ou qualquer outra transformação linear, basta mudar as entradas da matriz
> Rot := (theta,P) -> convert(evalm(M(theta)&*P), 'list'); função que a cada par (theta, P) , onde theta é ângulo e P é um ponto do plano, associa o ponto rodado. Converte-se o resultado de evalm , que é um array, para list.
> map2(Rot, theta, [[1,0], [0,1]]); detalhe de como aplicar a rotação acima numa lista de pontos
> pol := [[0,0], [1,0], [2,2], [0,1]]; lista de vértices de um polígono
> for i from 0 to 10 do
> ti := i*2*Pi/10; parâmetro para o quadro
> quadro[i] := polygonplot(map2(Rot, ti, pol), color=yellow): quadro de polígono rotacionado
> od:
> display([seq(quadro[i],i=0..10)], insequence=true, scaling=constrained); mostrando a animação
Aproveitando as funções acima para rodar uma curva parametrizada.
> for i from 0 to 10 do
> ti := i*2*Pi/10;
> quadro[i] := plot([op(Rot(ti, [t^2, t^3])), t=-1..1 ], color=blue): quadro de curva rotacionada
> od:
> display([seq(quadro[i], i=0..10)], insequence=true);
Voltar para o Sumário