Você está na página 1de 7

Desenhando no TikZ com Imagem

de Referência

Este tópico é uma continuação de Curvas no TikZ e é baseado no artigo tikz for image analysis de
Hans Meine.
A idéia é usar uma imagem como referência para junto com o TikZ e o KTikZ redesenhá-la veto-
rialmente no LaTeX.
Atenção: Esta técnica com o KTikZ só é possı́vel no Windows por oferecer um previem em
tempo real. Não sei por que motivo não funciona no Linux. Como uma alternativa para o Linux
podemos usar o TeXMaker. Mas neste caso devemos inserir o código completo e compilar, ou seja:
\ documentclass { article }
\ usepackage { tikz }
\ begin { document }
\ begin { tikzpicture }
% imagem aqui
\ end { tikzpicture }
\ end { document }
Vamos considerar que você usará o Windows com o QTikZ instalado, então faça o seguinte:

1. Abra o QTikZ;

2. Escreva o seguinte código:

% definicao de largura e escala da imagem


\ newlength \ imagewidth
\ newlength \ imagescale
% tamanho da imagem na tela
\ pgfmathsetlength {\ imagewidth }{10 cm }
% escala da imagem para o desenho vetorial
\ pgfmathsetlength {\ imagescale }{\ imagewidth /100}
% ajuste da escala e direcao do eixo y
\ begin { tikzpicture }[ x =\ imagescale , y =\ imagescale ]
% posicione a imagem
\ node [ anchor = south west , inner sep =0 pt , outer sep =0 pt ] at (0 ,0)
{\ includegraphics [ width =\ imagewidth ]{ nome _ da _ imagem }};
% aqui comeca o desenho
% grade
\ draw [ lightgray , dashed , xstep =10 , ystep =10] (0 ,0) grid (100 ,77) ;
% ...
\ end { tikzpicture }

Régis , 2011 http://latexbr.blogspot.com/ 1


Onde \newlength define um novo valor de comprimento, \imagewidth e \imagescale são os nomes
para largura e escala da imagem, respectivamente.
\pgfmathsetlength{\imagewidth}{10cm} define o tamanho da imagem na tela e
\pgfmathsetlength{\imagescale}{\imagewidth/100} é a escala para o desenho vetorial que fare-
mos, no caso do QTikZ, preferi usar esta dimensão porque se usarmos um número menor a imagem
ficará muito grande e dará um erro fechando o QTikZ imediatamente.
[x=\imagescale,y=\imagescale] são as dimensões predefinidas dentro do ambiente tikzpicture.
\node[anchor=south west,inner sep=0pt,outer sep=0pt] figura inserida na parte inferior es-
querda da tela e sem distância de separação entre nós.
\includegraphics[width=\imagewidth]{nome_da_imagem} insere a imagem. Repare que em
width=\imagewidth usamos a largura pré-definida inicialmente.

Como dito inicialmente a idéia é redesenhar uma figura vetorialmente. Podemos desenhar qualquer
coisa, desde simples retângulos a figura complexas com o uso de curvas. A idéia inicial é descobrir
o tamanho máximo da imagem e através de uma grade medir as proporções da imagem, a partir daı́
começamos nosso desenho.
Formatos: O TikZ aceita imagens no formato: jpg, png e pdf.
Nota: Ao salvar um arquivo no QTikZ ele salva com a extensão .pgf, caso você queira inserir
a figura dentro de um arquivo tex com a opção \input{} você deverá renomear sua figura para a
extensão .tex.

1) Vamos ao primeiro desenho: baixe a imagem cubos 04.jpg, abra o QTikZ e digite o código
mencionado anteriormente. Troque o nome nome_da_imagem por cubos_04. Não precisa digitar a
extensão. Vamos salvar nosso arquivo como figcubos.
Neste caso, vamos editar a grade para verificar quais são as medidas da imagem. E nossa grade
ficou com 100,120, então:
% definicao de largura e escala da imagem
\ newlength \ imagewidth
\ newlength \ imagescale
% tamanho da imagem na tela
\ pgfmathsetlength {\ imagewidth }{10 cm }
% escala da imagem para o desenho vetorial
\ pgfmathsetlength {\ imagescale }{\ imagewidth /100}
% ajuste da escala e direcao do eixo y
\ begin { tikzpicture }[ x =\ imagescale , y =\ imagescale , scale =.5]
% posicione a imagem
\ node [ anchor = south west , inner sep =0 pt , outer sep =0 pt ] at (0 ,0)
{\ includegraphics [ width =\ imagewidth ]{ cubos _04}};
% aqui comeca o desenho
% grade
\ draw [ lightgray , dashed , xstep =10 , ystep =10] (0 ,0) grid (100 ,120) ;
% ...
\ end { tikzpicture }

Régis , 2011 http://latexbr.blogspot.com/ 2


A segunda parte do código é sair desenhando. Veja a resultado.
% desenho
\ draw [ blue ] (37 ,5) -- (63 ,5) -- (63 ,31) -- (68 ,35) -- (68 ,55) -- (63 ,59) --
(91 ,59) -- (95 ,63) -- (95 ,82) -- (91 ,86) -- (63 ,86) -- (68 ,90) -- (68 ,110)
-- (58 ,118) -- (40 ,118) -- (32 ,110) -- (32 ,90) -- (37 ,86) -- (8 ,86) --
(4 ,82) -- (4 ,63) -- (8 ,59) -- (37 ,59) -- (32 ,55) -- (32 ,35) -- (37 ,31) --
cycle ;
\ draw [ blue , dashed ] (37 ,31) rectangle ++(26 ,28) ;
\ draw [ blue , dashed ] (37 ,86) rectangle ++(26 ,28) ;
\ draw [ blue , dashed ] (8 ,59) -- ++(0 ,27) ;
\ draw [ blue , dashed ] (37 ,59) -- ++(0 ,27) ;
\ draw [ blue , dashed ] (63 ,59) -- ++(0 ,27) ;
\ draw [ blue , dashed ] (91 ,59) -- ++(0 ,27) ;
\ end { tikzpicture }

Ao final você pode querer reduzir a escala e outras configurações para que a figura fique bem
ajustada na sua página. Neste caso, usei scale=.5 e tirei os line width.

(a) cubos 04 (b) figcubos

Figura 1: cubos redesenhados.

Veja o video desenhando no latex com tikz no youtube.

Régis , 2011 http://latexbr.blogspot.com/ 3


2) Agora baixe Carbon mtb frame carbon mountain bike frame FM003 3k.jpg. Troque o nome
nome_da_imagem por Carbon_mtb_frame_carbon_mountain_bike_frame_FM003_3k. Vamos salvar
nosso arquivo como figbike. Neste caso, a grade ficará com 100,80.
% definicao de largura e escala da imagem
\ newlength \ imagewidthb
\ newlength \ imagescaleb
% tamanho da imagem na tela
\ pgfmathsetlength {\ imagewidthb }{10 cm }
% escala da imagem para o desenho vetorial
\ pgfmathsetlength {\ imagescaleb }{\ imagewidthb /100}
% ajuste da escala e direcao do eixo y
\ begin { tikzpicture }[ x =\ imagescaleb , y =\ imagescaleb , scale =.7]
% posicione a imagem
\ node [ anchor = south west , inner sep =0 pt , outer sep =0 pt ] at (0 ,0)
{\ includegraphics [ width =\ imagewidthb ]{ Carbon _ mtb _ frame _ carbon _ mountain _ bike _
frame _ FM 003_3 k }};
% aqui comeca o desenho
% grade
\ draw [ lightgray , dashed , xstep =10 , ystep =10] (0 ,0) grid (100 ,80) ;
% desenho
\ draw [ fill = red , even odd rule ] (6 ,74) -- (.5 ,58.5) -- (6 ,56.5) -- (6.7 ,58.5) --
(12 ,54) -- (49 ,7.5) -- (57 ,7.5) to [ out = -45 , in =180] (62 ,6.7) --
(70 ,7.1) to [ out =12 , in =180] (86 ,7.8) --
(100 ,7.8) -- (95 ,17) -- (88 ,25) -- (83.7 ,32) --
(82.7 ,33.4) to [ out =145 , in = -45] (76.5 ,40)
to [ out =140 , in = -45] (71.8 ,44)
-- (68 ,48.4) to [ out =130 , in = -110] (68 ,53.7)
-- (64.5 ,55) to [ out =250 , in = -30] (61 ,53.4)
-- (11 ,70.2) -- (11.5 ,71.5) -- cycle
[ rounded corners =6 mm ] (10 ,66) -- (50 ,15) -- (62.5 ,48.5) -- cycle
[ rounded corners =4 mm ] (52.5 ,11) -- (97 ,10) -- (65.5 ,47) -- cycle ;
\ draw [ fill = gray ] (50.6 ,8.7) circle (2.7 mm ) ;
\ end { tikzpicture }
Atenção: Você não pode ter duas figuras com a mesma variável \newlength (caso você coloque
as duas dentro de um arquivo tex), então dê um nome diferente para cada um, no caso desta segunda
figura usei \imagewidthb e \imagescaleb. E no nome não pode ter números.

(a) Car- (b) figbike


bon mtb frame carbon mountain bike frame FM003 3k

Figura 2: bike

Régis , 2011 http://latexbr.blogspot.com/ 4


3) Agora começa a “brincadeira”! Vamos começar a desenhar com curvas. Pode não ser muito
fácil e pode demorar um pouco, mas o resultado é o que importa. Baixe design5b.png. O nome
será design5b. Vamos salvar nosso arquivo como figdesign5b. E a grade ficará com 70,30. Vamos
desenhar somente a figura verde.
Às vezes pode ser necessário reduzir o tamanho da imagem, como neste caso onde a imagem ficou
\includegraphics[width=.7\imagewidthd].

Baixe o código de figdesign5b.tex.

(a) design5b (b) figdesign5b

Figura 3: Design de produtos.

4) Baixe hand-1.jpg. O nome será hand-1. Vamos salvar nosso arquivo como fighand. E a grade
será 400,600.
Veja o video Desenhando uma mão no LaTeX com TikZ no youtube.
Baixe o código de fighand.tex.

(a) hand-1 (b) fighand

Figura 4: Mão

Régis , 2011 http://latexbr.blogspot.com/ 5


5) Baixe audi 2.jpg. O nome será audi_2. Vamos salvar nosso arquivo como figaudi. E a grade
ficará com 90,60.
Baixe o código figaudi.tex.

(a) audi 2 (b) figaudi

Figura 5: Modelo de design

6) Baixe femur.jpg. O nome será femur. Vamos salvar nosso arquivo como figfemur. E a grade
ficará com 500,1500.
Veja o video Desenhando um osso no LaTeX com TikZ no youtube.
Baixe o código figfemur.tex.

(a) femur (b) figfemur

Figura 6: Femur

Régis , 2011 http://latexbr.blogspot.com/ 6


7) Baixe Vector-Girl-Face-Design full.jpg. O nome será Vector-Girl-Face-Design_full. Vamos
salvar nosso arquivo como figVector-Girl-Face-Design. E a grade ficará com 1300,1000.
Baixe o código figVector-Girl-Face-Design.tex.

(a) Vector-Girl-Face-Design full (b) figVector-Girl-Face-


Design

Figura 7: Moça

8) Baixe logo copa 2014 2.jpg. O nome será logo_copa_2014_2. Vamos salvar nosso arquivo como
figlogo copa 2014. E a grade ficará com 600,700.
Veja o video Desenhando logo da copa 2014 no LaTeX com TikZ no youtube.
Baixe o código figlogo copa 2014.tex.

(a) logo copa 2014 2 (b) figlogo copa 2014

Figura 8: Logo Copa 2014

Régis , 2011 http://latexbr.blogspot.com/ 7

Você também pode gostar