Anda di halaman 1dari 43

.

Desenhando no Latex com Tikz


Diego Oliveira | nibblediego@gmail.com

www.number.890m.com
Desenhando no LATEXcom Tikz
Apesar de uma extensa documentação sobre Latex e o pacote Tikz,
disponível na internet, a maior parte está em língua estrangeira, trata
apenas do básico ou são apenas cópia de outras cópias. Para equi-
librar um pouco a balança essa apostila (em língua portuguesa) traz
o que há de mais importante para que você seja capaz de criar seus
próprios desenhos vetoriais com a linguagem Latex.

2
Sumário
1 O QUE É O TIKZ 5
1.1 O TIKZEDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 O QTIKZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 O GEOGEBRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 USANDO O TIKZ NO TEXMAKER 8

3 SEGMENTO 9
3.1 ATRIBUTOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 ARESTAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

4 RETÂNGULO 13

5 CIRCUNFERÊNCIAS, ELIPSES E ARCOS 14

6 SETAS 16

7 COORDENADA POLAR 18

8 GRADE (Grid) 18

9 COR 19

10 FILL E FILLDRAW 21
10.1 SHADE (GRADIANTE) . . . . . . . . . . . . . . . . . . . . . . . . . 22

11 OPACITY 25

12 NODE (LEGENDAS) 26

13 FOREACH (REPETIÇÃO) 27

14 FUNÇÕES 29

15 CURVAS NO TIKZ 30
15.1 PARÁBOLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
15.2 ROUNDED CORNERS . . . . . . . . . . . . . . . . . . . . . . . . . 30
15.3 O TO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
15.4 SMOOTH E TENSION . . . . . . . . . . . . . . . . . . . . . . . . . 32
15.5 BÉZIER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

16 COORINATE 35

17 TRANSFORMAÇÕES GEOMÉTRICAS 36
17.1 XSHIFT E O YSHIFT . . . . . . . . . . . . . . . . . . . . . . . . . . 36
17.2 ESPELHAMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
17.3 ROTAÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
17.4 ESCALAMENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
17.5 O AMBIENTE SCOPE . . . . . . . . . . . . . . . . . . . . . . . . . 38
18 CLIP 41

19 REFERÊNCIA 43

4
1 O QUE É O TIKZ

O Tikz é um pacote para la- para saber o que está ocorrendo.


tex desenvolvido por Até Tan- O Qtikz está presente na central
tau para a produção de imagens de programas do Ubuntu, mas
vetoriais a partir de descrições antes de usá-lo, em qualquer sis-
analíticas. O Tikz pode ser u- tema que seja, deve se ter um
sado em qualquer ambiente la- compilador de latex já instalado.
tex como Kile ou Texmaker, em- Tanto o Qtikz como TikzEdt estão
bora seu uso para estudo seja disponíveis para Windows. Re-
mais viável no software Qtikz comendo a instalação do TikzEdt
ou TikzEdt, pois oferecem uma por ser mais completo.
prévia do que está sendo desen-
hado em tempo real sem a ne- O download do Qtikz e TikzEdt
cessidade de ter de compilar o podem ser feitos através do link
documento a cada linha escrita abaixo.

http://www.hackenberger.at/blog/ktikz-editor-for-the-tikz-language

1.1 O TIKZEDT

O TikzEdt é o programa
mais completo que se pode
achar atualmente. Mas, in-
felizmente, só se encontra
disponível para Windows e não
funciona bem emulado com o
Wine. Também não está em
sua versão final e como é um
projeto desenvolvido pela co-
munidade ainda está em sua
versão beta e não sairá dela
tão cedo. Além disso pos-
sui alguns problemas que po-
dem acarretar em seu mau fun-
cionamento.

1.2 O QTIKZ

Este programa não é tão completo como seu “concorrente", o


TikzEdt, mas ganha do mesmo em questão de estabilidade. Está
disponível tanto para Windows como para Linux.

5
1.3 O GEOGEBRA
Você pode usar o Geoge-
bra para gerar algum código
em latex, embora isso seja
pouco recomendável. Por ex-
emplo: abra o Geogebra e
desenhe um círculo de raio
igual a um. Em seguida vá
no menu: Arquivo > Expor-
tar > Janela de Visualização
como PGF/Tikz. Irá aparecer
a seguinte janela.

O campo xMin, yMin, xMáx código PGF/Tikz, no campo


e yMáx são as coordenadas da mais abaixo da janela, irá apare-
tela do Geogebra que será cap- cer todo o código latex respon-
turada. Apenas os desenhos den- sável por gerar o desenho que
tro desse retângulo é que serão você criou.
consideradas para geração dos
códigos. Experimente modifica- O Geogebra seria perfeito
los enquanto olha para a tela do para gerar nossos códigos em la-
Geogebra. tex, entretanto quando a figura
é muito complexa o programa
Clicando no botão Gerar quase sempre erra na geração

6
do código e sempre escreve li- serem utilizadas em outros pro-
nhas desnecessárias que podem gramas.
necessitar serem apagadas para

7
2 USANDO O TIKZ NO TEXMAKER

Normalmente o pacote Tikz é Toda instrução que utiliza-se


instalado junto com o Miktex, ou do pacote Tikz deve ser escrita
qualquer outro compilador de la- dentro do ambiente tikzpicture,
tex, assim basta chamar o pacote caso contrário o documento nem
no pré-ambulo do documento, u- será compilado.
sando o usepackage{tikz}, e
dentro do document usar o am- Se por acaso o pacote tikz não
biente Tikzpicture. estiver instalado em sua máquina
você pode baixa-lo. O arquivo
baixado terá a extensão .sty e
\begin{tikzpicture} você deve coloca-lo no mesmo di-
retório do seu arquivo .tex. Com
% Toda instrução fica AQUI! isso ele já estará pronto para ser
usado.
\end{tikzpicture}

8
3 SEGMENTO

Para desenhar a maioria das figuras usamos o comando draw.

\begin{tikzpicture}
\draw(0,0)--(4,0);
\end{tikzpicture}

A instrução acima desenha uma linha reta com extremos em (0,


0) e (4, 0). Você também pode fazer uma sequência de segmentos
indo de um ponto a outro.

\begin{tikzpicture}
\draw(0,0) -- (1,2) -- (2,3)
--(1,0);
\end{tikzpicture}

Por padrão as coordenadas no Tikz estão em centímetros.

Outra forma de desenhar linhas é indicando seu ponto inicial e,


depois, o quanto cada coordenada desse ponto deve ser incremen-
tada para que seja formado o segundo extremo da reta. Por exemplo,
imagine um segmento com uma extremidade em (1, 2) e outra em
(2, 3). Escrevendo esse segundo ponto em função do primeiro ficaria:
(2, 3) = (1, 2) + (1, 1)
Assim poderíamos desenhar essa linha do seguinte modo:

\begin{tikzpicture}
\draw(1, 2)--++(1, 1);
\end{tikzpicture}

Que seria o equivalente a escrever:

\begin{tikzpicture}
\draw(1, 2)--(2, 3);
\end{tikzpicture}

Esse recurso pode ser usado também com números negativos e


racionais.

9
\begin{tikzpicture}
%Reta formado pelos pontos
(6,0); (11,0.5) e (6,1)
\draw(6,0)--++(5,0.5)
--++(-5,0.5);
\end{tikzpicture}

Se você é do tipo que não gosta muito de escrever existe uma


maneira de desenhar várias linha de um modo mais enxuto. Veja o
código a seguir.

\begin{tikzpicture}
\draw(0,0)--(1,0)(0,.5)
--(1,.5)(0,1)--(1,1);
\end{tikzpicture}

Ele é equivalente a:

\begin{tikzpicture}
\draw(0,0)--(1,0);
\draw(0,.5)--(1,.5);
\draw(0,1)--(1,1);
\end{tikzpicture}

3.1 ATRIBUTOS

As linhas possuem três atributos que podem ser alterados, são


eles:

• A espessura;
• a cor;
• e o estilo.

Por exemplo, a linha a seguir teve sua espessura alterada para


10 pontos, através do comando line whidth, e cor modicada para
vermelho, através do comando color.

\begin{tikzpicture}
\draw [line width=10pt, color
= red](0,0)--(4,0);
\end{tikzpicture}

10
A ordem com que os atributos são informados não faz a menor
diferença, desde que colocados entre vírgula.

O line whidth altera a espessura da linha de acordo com a sua


necessidade. No exemplo acima usamos 10pt (10 pontos) como
parâmetro, mas esse valor pode ser dado também em centímetros
(cm) ou espaços (ex).

\begin{tikzpicture}
\draw [line width=.5cm](0,1)
--(4,1);
\draw [line width=2ex](0,0)
--(4,0);
\end{tikzpicture}

Ao invés do comando color, seguido do nome da cor, podemos


colocar só o nome da cor (em inglês) também.

\begin{tikzpicture}
\draw [red](0,0)--(4,0);
\end{tikzpicture}

São dois os estilos de seguimento que uma linha pode ter. Esses
estilos são o: dotted (pontilhado) e o dashed (tracejado) e o dash
pattern (tracejado controlado).

\begin{tikzpicture}
\draw[dotted](0,2)--(4,2);
\draw[dashed](0,1)--(4,1);
\end{tikzpicture}

O dash pattern é similar ao dashed, pois ambos modificam o se-


gmento para um tracejado, entretanto com o dash pattern é possível
alterar o tamanho do tracejado.

\begin{tikzpicture}
\draw[dash pattern=on 1pt off
2pt on 5pt off 4pt] (0,1)
--(4,1);

\draw[dash pattern=on 15pt off


5pt](0,0)--(4,0);
\end{tikzpicture}

11
Na primeira linha 15pt é o tamanho do traço enquanto 5pt é o
espaço entre eles. Na segunda linha temos dois tipos de tracejado,
por isso, temos quatro medidas separadas (duas a duas) por “on".

3.2 ARESTAS

Um problema que pode surgir ao usar o line width ocorre na questão


das arestas que tendem a se formar. Observe o desenho abaixo.

\begin{tikzpicture}[line width
=5pt]
\draw(6,0)--(11,.5)--(6,1);
\end{tikzpicture}

Aqui temos dois segmentos. Um segmento definido pelas coorde-


nadas (6, 0) e (11, .5) e outro com as coordenadas (11, .5) e (6, 1).
Note que no ponto onde os dois segmentos se encontram formou-se
duas arestas.

Você pode evitar isso usando o mitter limit, antes ou depois do


line width, seguido de um valor maior que zero. Esse valor definirá o
tamanho da nova (e única) aresta.

\begin{tikzpicture}
\draw[miter limit=25, line
width=5pt](6,0)--++(5,0.5)
--++(-5,0.5);
\end{tikzpicture}

12
4 RETÂNGULO

Você pode usar o comando rectangle para desenhar retângulos


no seu documento.

\begin{tikzpicture}
\draw(0,0)rectangle(2,2);
\end{tikzpicture}

Note que precisamos apenas informar a coordenada inferior es-


querda (0, 0) e a coordenada superior direita (2, 2) do retângulo que
queremos esboçar.

Outra forma de desenhar o mesmo retângulo seria:

\begin{tikzpicture}
\draw(1.5,1)rectangle++(2,2);
\end{tikzpicture}

Lembre se que o ++ implementa a coordenada a direita incremen-


tando a coordenada a esquerda. Assim a linha acima é equivalente
a

\begin{tikzpicture}
\draw(1.5,1)rectangle(3.5,3);
\end{tikzpicture}

Usando um pouco de criatividade e retângulos você pode criar até


mesmo algumas imagens bem chamativas.

13
5 CIRCUNFERÊNCIAS, ELIPSES E ARCOS

Para desenhar uma circunferência basicamente devemos informa


seu centro e medida de seu raio.

\begin{tikzpicture}
% Circunferencia de raio 0.5
cm e centro em (0,0)
\draw(0,0)circle(0.5cm);
% Centro em (2,0) e raio de 1
rad.
\draw (2,0) circle [radius=1];
\end{tikzpicture}

No caso da elipse informamos o seu centro (1, 1) e depois a largura


e altura conforme indicado na imagem abaixo.

1.5cm 0.5cm

\begin{tikzpicture}
% Elipse:
\draw(1,1)ellipse(1.5cm and
0.5cm);
\end{tikzpicture}

O comando para arcos depende de três parâmetros: angulo inicial,


angulo final e raio do arco.

\begin{tikzpicture}
% Arco
\draw(6,0) arc [radius=3cm,
start angle=0, end angle=
75];
\end{tikzpicture}

O arco acima têm origem em (3, 0) raio de 3cm e faz um angulo


no sentido horário que vai de 0◦ a 75◦ .

Para que você visualize melhor o que está sendo dito observe o
mesmo arco desenhado sob uma grade marcada e com origem no
ciclo trigonométrico.

14
90◦

60◦
45◦
30◦

0◦
(0,0) (3,0)

O comando arc pode ser escrito de uma forma mais sintetizada,


veja:

\begin{tikzpicture}
% Ao inves de [radius=3cm,
start angle=0, end angle=
75]
\draw(6,0)arc(0:75:3cm);
\end{tikzpicture}

Veja mais alguns exemplos de arcos.

\begin{tikzpicture}
% Arco invertido
\draw [red](3,0) arc (0:-75:-3
cm);
\end{tikzpicture}

\begin{tikzpicture}
% Arco no sentido anti-horario
\draw[blue] (3,0) arc (0:75:-3
cm);
\end{tikzpicture}

15
6 SETAS

Você pode desenhar setas usando um “− >" logo após o comando


draw. Veja:

% Seta para direita


\begin{tikzpicture}
\draw[->](3,0)--(4,0);
\end{tikzpicture}

Se quisermos que a seta fique voltada para a esquerda basta in-


verter o “− >".

% Seta para esquerda


\begin{tikzpicture}
\draw[<-](4,0)--(3,0);
\end{tikzpicture}

Também é possível setar as duas extremidades usando um “< − > ”.

% Seta dupla
\begin{tikzpicture}
\draw [<->] (3,0)--(4,0);
\end{tikzpicture}

Qualquer linha reta ou curva pode ser setada colocando se [->].


No exemplo abaixo, por exemplo, temos um arco setado.

\begin{tikzpicture}
% Arco setado
\draw [line width=3pt, ->
](3,0) arc (0:-75:-3cm);
\end{tikzpicture}

Veja outros exemplos de setas.

\begin{tikzpicture}
\draw [line width=2pt,
|->](0,0)--(2,0);
\end{tikzpicture}

16
\begin{tikzpicture}
\draw[line width=2pt, dotted,
>->>](0,0)--(2,0);
\end{tikzpicture}

\begin{tikzpicture}
\draw[line width=2pt,
|<->|](0,0)--(2,0);
\end{tikzpicture}

\begin{tikzpicture}
\draw[line width=2pt, dashed,
o-)](0,0)--(2,0);
\end{tikzpicture}

\begin{tikzpicture}
\draw[line width=2pt, loosely
dashed](0,0)--(2,0);
\end{tikzpicture}

\begin{tikzpicture}
\draw[line width=2pt, densely
dotted](0,0)--(2,0);
\end{tikzpicture}

17
7 COORDENADA POLAR

É possível, em alguns momentos, usar coordenadas polares no


Tikz. Veja um exemplo.

\begin{tikzpicture}
% Coordenada Polar
\draw(0,0)--++(45:2);
\end{tikzpicture}

O exemplo acima desenha um segmento com origem em (0, 0)


com comprimento de 2 cm, 45◦ no sentido horário.

\begin{tikzpicture}
\filldraw[fill=yellow, draw=
black](0,0)--++(45:1)arc
(45:360:1cm)--cycle;
\filldraw[fill=white, draw=
black](-0.2,.5)circle(.1cm
);
\end{tikzpicture}

8 GRADE (Grid)

Algumas vezes é interessante que se utilize grades, para facilitar


o desenho de imagens. No TikzEdt uma grade já vêm desenhada e
pode ser facilmente modificada ou até desativada, se necessário. No
Qtikz, caso se deseje usar a grade, deve se informar ao programa por
meio da forma que será descrita.

\begin{tikzpicture}
\draw[step=1cm](-1,-1)grid
(3,3);
\end{tikzpicture}

O step informa que cada quadro da grade terá um centímetro de


largura e altura.

18
\begin{tikzpicture}
% grade pontilhada
\draw[dash pattern=on 3pt off
3pt, step=1cm](-0.9,-0.9)
grid(2.9,2.9);
\end{tikzpicture}

Uma opção ao step é o xstep e o ystep. Com eles podemos ter


maior controle sobre o tamanho dos quadros na grade.

\begin{tikzpicture}
\draw[xstep=1, ystep
=.5](-1,-1)grid(3,3);
\end{tikzpicture}

Nesse caso os quadros da grid terão um centímetro de largura e


meio de altura.

9 COR

Podemos fazer imagens coloridas com o Tikz. Para isso é necessário


apenas que o pacote xcolor esteja carregado no pré-ambulo. As
cores que por padrão podem ser usadas são:

Cyan Lightgray
Pink Yellow
Orange Violet
Brown Purple
Blue Magenta
Black Green
Red Gray

Para usar qualquer uma destas cores basta escreve-la como atri-
buto do draw. Veja o exemplo.

19
\begin{tikzpicture}
\draw[red](0,0)rectangle
++(2,2);
\end{tikzpicture}

É possível ainda, criar novas tonalidades de cores misturando as


cores acima e definir outras cores por meio do pacote newcolor.

\begin{tikzpicture}
\draw[red!50!green, line width
= 3pt](0,0)rectangle
++(2,2);
\end{tikzpicture}

No retângulo acima misturamos vermelho e verde na proporção


de 50% criando um tom de amarelo.

20
10 FILL E FILLDRAW

Ao invés do comando draw utilizado nos exemplos anteriores é


possível utilizar o comando fill (preencher) ou mesmo o filldraw
em seu lugar. Vejamos a diferença entre eles.

\begin{tikzpicture}
% Desenha o contorno do
retangulo
\draw[cyan](0,0)rectangle(2,2)
;
\end{tikzpicture}

\begin{tikzpicture}
% Pinta o retangulo sem
contorno
\fill[cyan](0,0)rectangle(2,2)
;
\end{tikzpicture}

\begin{tikzpicture}
% Desenha o contorno do
retangulo e pinta seu
interior
\filldraw[fill=cyan, draw=
black](0,0)rectangle(2,2);
\end{tikzpicture}

O draw desenha apenas linhas ou contornos das figuras. Já o fill é


usado para preencher o interior de figuras fechadas mas, não é capaz
de desenhar seus contornos. O filldraw além de preencher a forma
com cor mantem uma borda de cor especificada.

21
10.1 SHADE (GRADIANTE)

Se em vez de uma cor sólida, queremos um gradiente de cor,


podemos usar o shade ao invés do fill.

\begin{tikzpicture}
\shade[left color=blue, right
color=red](0,0)rectangle
(4,4);
\end{tikzpicture}

\begin{tikzpicture}
\shade[top color=blue, bottom
color=red](0,0)rectangle
(4,4);
\end{tikzpicture}

\begin{tikzpicture}
\shade[inner color=blue, outer
color=red](0,0)rectangle
(4,4);
\end{tikzpicture}

22
\begin{tikzpicture}
\shade[shading=ball, ball
color=blue] (0,0) circle
(2);
\end{tikzpicture}

O estranho é que podemos conseguir o mesmo efeito com o fill,


veja.

\begin{tikzpicture}
\fill[left color=blue, right
color=red](0,0)rectangle
(4,4);
\end{tikzpicture}

\begin{tikzpicture}
% Em cima e em baixo
\fill[top color=blue, bottom
color=red](0,0)rectangle
(4,4);
\end{tikzpicture}

\begin{tikzpicture}
% No centro
\fill[inner color=blue, outer
color=red](0,0)rectangle
(4,4);
\end{tikzpicture}

23
\begin{tikzpicture}
\fill[shading=ball, ball color
=blue] (0,0) circle (2);
\end{tikzpicture}

24
11 OPACITY

As vezes é necessário o preenchimento com uma cor opaca. Para


isso usa-se o opacity.

\begin{tikzpicture}
\filldraw[fill=red, opacity
=0.5] (0:1cm) circle (12mm
);
\filldraw[fill=green, opacity
=0.5] (120:1cm) circle (12
mm);
\filldraw[fill=blue, opacity
=0.5] (-120:1cm) circle
(12mm);
\end{tikzpicture}

Você também precisa informar o valor da opacidade que deve ser


um número de 0 (para nenhuma transparência) até 1 (para transparên-
cia completa).

25
12 NODE (LEGENDAS)

Para escrever uma legenda com o Tikz usamos o node.

\begin{tikzpicture}
Legenda % Escrita normal
\draw(0,0)node{Legenda};

Legenda % Escrita em italico


\draw(0,1)node{{\it Legenda}};
% Letra de maquina
Legenda \draw(0,2)node{{\tt Legenda}};
% Tamanho grande
\draw(0,3)node{{\Huge Legenda
Legenda }};
% Negrito
Legenda \draw(0,4)node{{\bf Legenda}};
\end{tikzpicture}

Em cada caso o centro da palavra “Legenda" é colocado nas posições


indicadas.

Quando usamos legendas pode ser necessário deslocar a legenda


para cima para baixo ou mesmo para os lados. Veja os exemplo:

\begin{tikzpicture}
% Legenda abaixo do ponto
\fill(0,3)circle(0.05cm)node[
D
above]{D};
% Legenda acima do ponto
\fill(0,2)circle(0.05cm)node[
C below]{C};
% Legenda a direita do ponto
B \fill(0,1)circle(0.05cm)node[
right]{B};
% Legenda a esquerda do ponto
A \fill(0,0)circle(0.05cm)node[
left]{A};
\end{tikzpicture}

Também é possível colorir texto ou mesmo colocar equações.

\begin{tikzpicture}
% Texto
2
\draw[red](0,0)node{Legenda};
8 % Equacao
\draw(0,1)node{$\dfrac{a
Legenda ^2}{8}$};
\end{tikzpicture}

26
13 FOREACH (REPETIÇÃO)

O foreach é usado como uma espécie de loop dentro do tikz. Veja


um exemplo.

\begin{tikzpicture}
\foreach \x in {0,1,2,3,4}
\draw(\x cm,1)--(\x cm,-1);
\end{tikzpicture}

A primeira linha

\foreach \x in {0,1,2,3,4}

cria uma variável “x" igual a zero e indica que todos os comandos
escritos após ele, e que possuem a variável “x", serão repetidos 5
vezes. Na primeira vez o “x" será igual a 0, depois 1 até chegar ao 4.

Finalmente escrevemos a linha que sofrerá a repetição.

\draw(\x cm,1)--(\x cm,-1);

Se não fosse o foreach teríamos de fazer assim:

\begin{tikzpicture}
\draw(0,1)--(0,-1);
\draw(1,1)--(1,-1);
\draw(2,1)--(2,-1);
\draw(3,1)--(3,-1);
\draw(4,1)--(4,-1);
\end{tikzpicture}

Vejamos mais alguns exemplos.

\begin{tikzpicture}
\foreach \x in {0,1,2,3,4}
\draw(\x cm,1)--(\x cm,-1)node
[below]{\x};
\end{tikzpicture}
0 1 2 3 4

27
\begin{tikzpicture}
\draw[->] (-5.5,0) -- (0,0)
node [right] {$\mathbb{R
R }$};
-5 -4 -3 -2 -1 0 \foreach \x in {-5,...,0}
\draw (\x, 0.1) -- (\x, -0.1)
node [below] {\x};
\end{tikzpicture}

\begin{tikzpicture}
\foreach \x in {1,2,3}
\shade[ball color=red!\x 0!
green] (\x,0) circle (3mm)
;
\end{tikzpicture}

Nesse próximo exemplo x varia de 1 em 1 começando do 9 até ser


igual 1 ou até o valor mais próximo possível de 1.

\begin{tikzpicture}
\foreach \x in {9,...,1}
\draw[fill=blue!\x0] (-0.1*\x
- 1, -0.1*\x )
rectangle (0.1*\x + 1, 0.1*\x
);
\end{tikzpicture}

28
14 FUNÇÕES

Algumas curvas podem ser representadas por equações explicitas


isto é, com y em função de . Com o pacote Tikz equações explicitas
podem ter sua curva desenhada através do comando plot.

% grafico de funcao
\begin{tikzpicture}
\draw[->](-3,0)--(3,0);
\draw[->](0,-1)--(0,4);
% Plotagem de -2 a 0
\draw[blue,domain=-2:0]plot(\x
,{(\x)^2});
% Plotagem de 0 a 2
\draw[blue,domain=0:2]plot(\x
,{\x^2});
\end{tikzpicture}

A regra geral para as funções é:

\draw[domínio]plot (\x, {função}).

As funções que podemos utilizar são:

factorial(\x)
sqrt(\x) Raiz quadrada.
pow(\x,y) O mesmo que y .
exp(\x) O mesmo que e .
ln(\x) Logaritmo natural.
log10(\x)
log2(\x)
abs(\x) Valor absoluto.
mod(\x,y) Divisão inteira de x por y.
round(\x) Arredondamento.
floor(\x) Inteiro mais próximo.
ceil(\x) Menor numero maior que x.
sin(\x) Seno expresso em graus.
sin(\x r) Seno expresso em radiano.
cos(\x) Cosseno expresso em graus.
cos(\x r) Cosseno expresso em radianos.
tan(\x) Tangente expressa em graus.
tan(\x r) Tangente expressa em radianos.

29
15 CURVAS NO TIKZ

15.1 PARÁBOLAS

Desenhar parábolas é muito simples.

\begin{tikzpicture}
\draw(0,0)parabola(2,2);
\end{tikzpicture}

Acima vemos uma parábola com origem em (0, 0) e extremo em


(2, 2). Poderíamos também ter usado o ++ para incremento.

\begin{tikzpicture}
\draw(0,0)parabola++(2,2);
\end{tikzpicture}

15.2 ROUNDED CORNERS

O rounded corners é uma propriedade de fronteira que permite


um desenho mais arredondados de polígonos com arestas.

\begin{tikzpicture}
\draw(0,0)rectangle++(2,2);
\draw[rounded corners=0.5cm
](2.5,0)rectangle++(2,2);
\end{tikzpicture}

Ao aumentar o valor de contorno os vértices do quadrilátero vão


ficando cada vez mais arredondados.

\begin{tikzpicture}
\draw(0,0)rectangle++(1,1);
\draw[rounded corners=0.1cm
](2,0)rectangle++(1,1);
\draw[rounded corners=.5cm
](4,0)rectangle++(1,1);
\end{tikzpicture}

30
15.3 O TO

O comando to é utilizado para unir com uma linha dois pontos


sendo que, existe um angulo inicial para saída da linha e um angulo
final para o ponto de destino.

Por exemplo, a instrução a seguir cria uma reta.

\begin{tikzpicture}
% Reta
\draw(0,0)to(2,3);
\end{tikzpicture}

Mas a instrução a seguir desenha uma curva.

\begin{tikzpicture}
\draw(3,0) to[out=90,in=180]
(5,3);
\end{tikzpicture}

Nesse caso a curva parte do ponto (3, 0) fazendo um angulo de


90◦ graus e chega até o ponto (5, 3) fazendo um angulo de 180◦ .

Veja outros exemplos.


\begin{tikzpicture}
\draw[brown](3,0)to[out=90,in
=-90](4,2)to[out=-90,in
=90](5,0);
\end{tikzpicture}

31
\begin{tikzpicture}
\draw[blue](0,0)to[out=90,in
=225](1,2)to[out=-45,in
=90](2,0);
\end{tikzpicture}

15.4 SMOOTH E TENSION

A função smoth faz com que os pontos de uma curva sejam


conectados de maneira mais suavizada. Um exemplo de sua estru-
tura é:

\begin{tikzpicture}
\draw[smooth] plot coordinates
{(0,0)(1,1)(2,0)(3,1)};
\draw[dashed,color=gray](0,0)
--(1,1)--(2,0)--(3,1);
\end{tikzpicture}

O smoth é uma ferramenta muito poderosa. Com ela vários es-


boços podem ser feitos. Inclusive a de funções matemáticas com-
plexas.

Desenho vetorial feito apenas com Smooth.

Já o atributo tension permite um ajuste maior na curva. Veja a


próxima figura.

\begin{tikzpicture}
\draw[smooth, tension=1] plot
coordinates{(0,0)(1,1)
(2,0)(3,1)};
\draw[dashed,color=gray](0,0)
--(1,1)--(2,0)--(3,1);
\end{tikzpicture}

32
15.5 BÉZIER

É possível desenhar qualquer coisa usando uma ou mais Curvas


de Bézier, exceto uma circunferência. Isso é o que torna essas cuvas
tão especiais.

Sintaxe:

\draw(x0, y0)..controls(x1,y1)and(x2,y2)..(y3,x3);

O desenho de uma curva de bézier (em vermelho) depende das


coordenadas de quatro pontos (em azul) chamados de pontos de
controle.

(8, −0.1)
(9, −0.5)
(6, −1)

(5, −2)

\begin{tikzpicture}
\draw[red](5,-2)..controls
(6,-1)and(8,-0.1)
..(9,-0.5);
\end{tikzpicture}

O próximo exemplo mostra várias curvas de controle emendadas


para formar uma única curva.

33
\begin{tikzpicture}
% Grade
\draw[opacity=0.1, step
=.1](0,0)grid(2,8.4);
% Eixo de simetria
\draw[red](0,0)--++(0,8.4);
% Taca
\draw(0,0)--(1.4,0);
\draw[blue](1.4,0)..controls
(1.4,0)and(1.9,0)
..(1.9,.2).. controls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1)--(.2,3.5)..
controls(1,4)and(2.3,5.0)
.. (1.5,8.3);
\draw(1.5,8.3)--(0,8.3);
\end{tikzpicture}

Imagem gerada com curvas de bézier.

34
16 COORINATE

Quando temos de lidar com uma quantidade muito grande pontos


e pretendemos fazer referência a eles uma quantidade muito grande
de vezes é conveniente usar o comando coordinate.

Sintase:

\coordinate[legenda](Nome do ponto)at(x,y);

Veja um exemplo.

\begin{tikzpicture}
% Grade
\draw[step=1cm,gray](-1,-1)
grid(3,3);
% Ponto A
C
\coordinate(A)at(0,0);
% Ponto B com legenda a
B esquerda
\coordinate[label=left:B](B)at
(1.5,1);
% Ponto C com legenda a
direita
\coordinate[label=right:C](C)
at(2,2);
\end{tikzpicture}

Uma vez usado o coordenate é possível utilizar os pontos (0,0),


(1.5,1) e (2,2) através das letras A, B e C.

\begin{tikzpicture}
\draw[step=1cm, gray](-1,-1)
grid(3,3);
C
\coordinate(A)at(0,0);
\coordinate[label=left:B](B)at
B (1.5,1);
\coordinate[label=right:C](C)
at(2,2);
% Reta
\draw(A)--(B)--(C);
\end{tikzpicture}

35
17 TRANSFORMAÇÕES GEOMÉTRICAS

17.1 XSHIFT E O YSHIFT

O xshift desloca todos os pontos de um desenho para direita ou


esquerda. Já o yshift desloca os pontos de uma figura para cima ou
para baixo.

\begin{tikzpicture}
% Grade
\draw[color=lightgray](-1,-1)
grid(3,3);
% Triangulo
\draw(1,1)--(2,1)--(1.5,2)--
cycle;
% Deslocado 1cm p/ direita e p
/ cima
\draw[xshift=1cm, yshift=1cm
](1,1)--(2,1)--(1.5,2)--
cycle;
\end{tikzpicture}

17.2 ESPELHAMENTO
Você pode espelhar um ponto, em relação a coordenada (0,0),
multiplicando as coordenadas dos pontos por -1.
\begin{tikzpicture}
% Grade
\draw[color=lightgray](-2,-2)
grid(2,2);
\fill[red](0,0)circle(0.2cm);
% Triangulo
\draw(1,1)--(2,1)--(1.5,2)--
cycle;
% Espelhado 1cm p/ esquerda e
p/ baixo
\draw[x=-1cm, y=-1cm](1,1)
--(2,1)--(1.5,2)--cycle;
\end{tikzpicture}

17.3 ROTAÇÃO

A rotação é outra transformação geométrica e pode ser feita através


do comando rotate.

36
\begin{tikzpicture}
% rotacao de 30 graus
\draw[rotate=30](0,0)rectangle
(1,0.5);
% 90 graus
\draw[rotate=90](0,0)rectangle
(1,0.5);
% 120 graus
\draw[rotate=120](0,0)
rectangle(1,0.5);
\end{tikzpicture}

17.4 ESCALAMENTO

A ampliação ou redução de um desenho é feita através do co-


mando scale

\begin{tikzpicture}
% Figura com dimensoes normais
\draw (0,0)--(1,0)--(0.5,1)--
cycle;
\end{tikzpicture}

\begin{tikzpicture}[scale=2]
% Figura ampliada duas vezes
\draw(0,0)--(1,0)--(0.5,1)--
cycle;
\end{tikzpicture}

\begin{tikzpicture}
% Figura reduzida pela metade
\draw[scale=.5](0,0)--(1,0)
--(0.5,1)--cycle;
\end{tikzpicture}

Também é possível obter algum escalamento multiplicando a dis-


tância entre os pontos que formam o desenho.

\begin{tikzpicture}
% Triangulo
\draw(0,0)--(1,0)--(0.5,1)--
cycle;
% Triangulo ampliado 2 vezes
\draw[x=2cm, y=2cm](0,0)
--(1,0)--(0.5,1)--cycle;
\end{tikzpicture}

37
A diferença entre uma forma ou outra é que a segunda não am-
plia realmente as imagens e sim as distâncias entre os pontos. Não
confunda!

17.5 O AMBIENTE SCOPE

Quando desejamos aplicar alguma das transformação geométri-


cas a um conjunto de desenhos podemos aplicar essas transformações
a cada desenho, como no exemplo a seguir.

\begin{tikzpicture}
% Circulo ampliado 2 vezes
\draw[scale=2](0,0)circle(1.cm
);
% Quadrado ampliado 2 vezes
\draw[scale=2](1,0)rectangle
(2,1);
\end{tikzpicture}

\begin{tikzpicture}
% Circulo original
\draw(0,0)circle(1.cm);
% Quadrado original
\draw(1,0)rectangle(2,1);
\end{tikzpicture}

Ou podemos aplicar a todo o ambiente tikzpicture.

\begin{tikzpicture}[scale=2]
% Circulo ampliado 2 vezes
\draw(0,0)circle(1.cm);
% Quadrado ampliado 2 vezes
\draw(1,0)rectangle(2,1);
\end{tikzpicture}

O problema mesmo acontece quando temos que aplicar essas


transformações a um conjunto de figuras, mas não a todas. Nesse
caso temos de usar o ambiente scope. O scope funciona como um
sub-ambiente para o ambiente tikz. Com ele você pode criar um
subconjunto de desenhos (apenas um subconjunto. Não é possível

38
usar dois ou mais scoopes em um mesmo ambiente tikz) e realizar
alterações específicas neles.

Observe o exemplo a seguir.

\begin{tikzpicture}
% Grade
\draw[opacity=0.1,step
=.1](0,0)grid(2,8.4);
% Eixo de simetria
\draw[red](0,0)--++(0,8.4);
% taca
\draw(0,0)--(1.4,0);
\draw[blue](1.4,0)..controls
(1.4,0)and(1.9,0)
..(1.9,.2).. controls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1)--(.2,3.5)..
controls(1,4)and(2.3,5.0)
..(1.5,8.3);
\draw(1.5,8.3)--(0,8.3);
\end{tikzpicture}

Agora vamos usar o ambiente scope para produzir um espelhamento


vertical.

39
\begin{tikzpicture}
% Grade
\draw[opacity=0.1,step
=.1](0,0)grid(2,8.4);
% Eixo de simetria
\draw[red](0,0)--++(0,8.4);
% taca
\draw(0,0)--(1.4,0);
\draw[blue](1.4,0)..controls
(1.4,0)and(1.9,0)
..(1.9,.2).. controls
(1.9,.3)and(1.6,.2)
..(1.5,.2)..controls
(1.3,.2)and(.2,.7)
..(.2,1.1)--(.2,3.5)..
controls(1,4)and(2.3,5.0)
..(1.5,8.3);
\draw(1.5,8.3)--(0,8.3);
% Reflexao
\begin{scope}[x=-1cm]
\draw(0,0)--(1.4,0);
\draw(1.4,0)..controls(1.4,0)
and(1.9,0)..(1.9,.2)..
controls (1.9,.3)and
(1.6,.2)..(1.5,.2)..
controls(1.3,.2)and(.2,.7)
..(.2,1.1)--(.2,3.5)..
controls(1,4)and(2.3,5.0)
..(1.5,8.3);
\draw(1.5,8.3)--(0,8.3);
\end{scope}
\end{tikzpicture}

O ambiente scoope recebe como atributo um valor, no caso  =


−1cm, esse valor multiplica todos os valores da abscisa de todos os
pontos dentro do ambiente scope por −1. Isso provoca um espel-
hamento em relação ao eixo de simetria que, neste caso, é uma reta
vertical que passa pela origem.

Vejamos um exemplo de translação agora.

40
\begin{tikzpicture}
% retangulo negro
\draw[step=.5, lightgray](0,0)
grid(3,2);
\draw (0,0) rectangle (1,0.5);
% Scope
\begin{scope}[xshift=2cm, red]
% retangulo deslocado 2cm a
direita
\draw(0,0)rectangle(1,0.5);
\end{scope}
\end{tikzpicture}

18 CLIP

A função clip seleciona um trecho de uma imagem. Por exemplo,


considere a imagem a seguir.

\begin{tikzpicture}[scale=2]
\draw[step=.5cm, gray
](-1.4,-1.4)grid(1.4,1.4);
\draw(-1.5,0)--(1.5,0);
\draw(0,-1.5)--(0,1.5);
\draw(0,0)circle(1cm);
\shadedraw[left color=gray,
right color=green, draw=
green!50!black](0,0)--(3mm
,0mm)arc(0:30:3mm)--cycle;
\end{tikzpicture}

Usando o clip podemos criar um retângulo com vértice inferior


esquerdo na coordenada (-0.1, -0.2) e vértice superior direito em (1.1,
0.75). Com isso apenas a imagem que ficaria dentro desse retângulo
é exibida.

41
\begin{tikzpicture}[scale=2]
\clip(-.1,-.2)rectangle
(1.1,.75);
\draw[step=.5cm, gray](-1.4,
-1.4)grid(1.4, 1.4);
\draw(-1.5, 0)--(1.5, 0);
\draw(0, -1.5)--(0, 1.5);
\draw(0, 0)circle(1cm);
\shadedraw[left color=gray,
right color=green, draw=
green!50!black](0, 0)--(3
mm, 0mm)arc(0:30:3mm)--
cycle;
\end{tikzpicture}

42
19 REFERÊNCIA

TANTAU, Até Till. TIKZ and PGF: Manual for version 1.18. 12
June 2007.

43

Anda mungkin juga menyukai