Grcos e Figuras
Geovane Krger
geovanek@gmail.com Verso 11.0
A LT
AX 2 LE X2 T E
14 de Fevereiro de 2006
Prefcio
A A idia de escrever LTEX 2 - Grcos e Figuras, surgiu devido ao fato de que muitos pacotes que so utilizados para a construo de grcos e guras, no modo PDFLaTeX no so compilados, tendo assim,
que utilizar o modo LaTeX para gerar DVI depois DVIPS e por ltimo PS2PDF, e para manter o padro nas
A conguraes que estava usando no outro manual (LTEX 2 - Uma Introduo[?]), decidi escrever este manual
separado, alm do que, o outro manual estava cando muito grande o qual foi mais um dos motivos que me levou a partir em dois manuais.
A Estas notas destinam-se a usurios que j tenham uma certa experincia com LTEX, pois os comandos
utilizados na construo de guras, muitas vezes so, de um certo modo, complicados de se utilizar, por esse
A motivo se faz necessrio o conhecimento de como funciona o LTEX e ter experincia em interpretar os erros gerados no momento da compilao do arquivo, para conseguir assim, solucionar os erros gerados que so
Geovane Krger
Observaes
Verso 11.0 novo captulo incluindo o uso do pacote pst-poly para a construo de polgonos.
Verso 10.0 possui um captulo sobre o pacote pst-gr3d, usado para criar grades 3D. Na Verso 9.0 foi adicionado o uso do pacote pst-light3d o qual serve para obter efeitos tridimensionais nos objetos. Verso 8.0. Est nova verso traz o uso do pacote pst-node para a criao de nodos. Este pacote muito til, principalmente para diagramas matemticos. Verso 7.0 contm o captulo sobre o pacote pst-blur usado para modicar o estilo das sombras. Verso 6.0 adicionado o uso do pacote pst-slpe que tambm faz preenchimentos em gradientes. Verso 5.0. Pacote pst-grad usado para preenchimentos em gradientes. Verso 4.0 produzido o captulo sobre a segunda da parte do pacote pstricks-add, que traz macros adicionais ao pacote pst-plot. Na Verso 3.0 temos um captulos para falarmos do pacote pst-plot. Com este pacote, ns podemos plotar grcos a partir de uma lista dados ou plotar o grco de funes usando os cdigos de PostScript. Verso 2.0 contm um captulo novo tratando da primeira das quatro partes em que falaremos do pacote pstricks-add, o qual um pacote experimental e traz macros complementares para o pacote pstricks. Verso 1.0 foi feito uma diviso especial no documento para tratar do conjunto de pacotes PSTricks, e aps essa diviso comeamos pelo captulo que fala a respeito do pacote pstricks. Com esse pacote podemos fazer muitas construes geomtricas de uma maneira simples atravs de seus comandos. A Verso 0.0 contm um captulo sobre a utilizao do pacote multido, o qual serve para fazer, retas e eixos numerados espaados igualmentes, entre outras funcionalidades interessantes.
Assim que tiver alguns detalhes novos na parte textual, ou alguma correo, disponibilizarei a verso atualizada e especicarei neste captulo de observaes quais foram as alteraes feitas. Gostaria de pedir tambm para os leitores que qualquer erro de digitao encontrado ou alguma parte que cou mal explicada, que enviassem-me um email noticando.
ii
Sumrio
iii
Introduo
A Neste manual ns descreveremos tcnicas e truques extendidos de LTEX para a composio de grA cos e guras. Mostraremos como desenhar com o LTEX e como conseguir efeitos especiais com pequenos
no conseguir tirar proveito algum. Ns descreveremos muitos pacotes e opes que extendero ou modicaro as possibilidades bsicas
A do LTEX. Para mostrar as aes delas ns temos que carregar todas elas ao mesmo tempo, o que por muitas
razes porm, isto no prtico, se no impossvel, pois muitos pacotes usam muitas variveis internas para as
A quais, o LTEX tem limites xos implementados.
Observamos ainda, que muitos dos pacotes e programas descritos aqui so distribudos livrementes em arquivos de softwares pblicos, muitos em domnios pblicos, enquanto outros so protegidos por direito autorais. Lembramos que muitos pacotes aqui mencionados, no esto inclusos na distribuio do MiKTeX, mas que podem ser obtidos facilmente no site da CTAN1. isso a, e faam bom proveito!
www.ctan.org
iv
Captulo
O Pacote Multido
Este macro originou-se para auxiliar no desenho de guras, quadros, retas entre outras coisas mais, e foi desenvolvido originalmente para o pacote PSTricks, o qual veremos mais adiante, mas o pacote multido pode ser usado muito bem para qualquer outro propsito a qualquer momento. Uma caracterstica especial o suporte para adio de ponto-xo. Por exemplo, PSTricks usa o \multido para enumerar eixos. Para usarmos este pacote, devemos adicionar no prembulo o seguinte pacote \usepackage{multido} e a sua utilizao no decorrer do documento se d atravs do seguinte comando: \multido{variveis}{repetio}{ao} ao alguma coisa que voc quer que repita, ou seja, todos detalhes que devem se repetir ao longo do objeto que se est editando. repetio o nmero de vezes que ao repetido. variveis uma lista de vrias declaraes separadas por um vrgula1 . Cada declarao das variveis da forma: varivel = valor inicial + incremento varivel uma seqencia de comando que pode ser usado dentro da ao. Inicialmente estabelece-se o valor inicial, e este incrementado a cada repetio pelo valor do incremento. A primeira letra do nome da varivel determina o tipo de varivel. Existem quatro tipos de variveis: Dimenso (d ou D): O valor inicial e o incremento devem ser dimenses (comprimentos, em linguagem
A LTEX). O texto de substituio uma dimenso, com sp unidades. Por exemplo \dx=4cm+5pt.
1
No use vrgulas para demarcar nmero decimal dentro do argumento variveis, elas causaro confuso para os delimitadores
Nmero (n ou N): O valor inicial e o incremento devem ser inteiros ou nmeros com o mesmo nmero de dgitos direita do decimal. Uma excesso que, para o valor inicial, sempre bom ser um inteiro. Pode haver no mximo 8 dgitos em cada lado do decimal. O texto de substituio um nmero, com ponto-xo. Por exemplo, \n=3+7.05,\Nx=5.30+-1.25. Inteiro (i ou I): O valor inicial e incremento devem ser inteiros. Isto d o mesmo resultado do que a varivel nmero, mas mais rpido. Por exemplo, \i=2+-1. Real (r ou R): O valor inicial e incremento devem ser inteiros ou nmeros com no mximo 4 dgitos em cada lado do decimal. A o texto de substituio um nmero, mas com adio de ponto utuante e pequenos erros ocasionais. Isto da um resultado menos satisfatrio do que usando a varivel nmero, mas rpido. Por exemplo \ry=4.2+1.05. Exemplo 1 Aqui esto alguns exemplos que ilustram o texto substitudo:
1
\multido{}{8}{\LaTeXe \ \ }
\multido{\d=2cm+3cm}{5}{\d , }
\multido{\n=2+3}{10}{\n, }
\multido{\i=2+-3}{13}{\i, }
2, -1, -4, -7, -10, -13, -16, -19, -22, -25, -28, -31, -34,
1
\multido{\r=2+3.05}{6}{\r, }
Mais alguns detalhes: Os comandos do \multido podem ser aninhados. Espaos depois de um comando \multido so ignorados. Isto faz o \multido mais hospitaleiro para os desenhos. Espaos entre as vrias partes de argumentos das variveis so ignorados. .................................................................................................... 2
by Geovane Krger
Exemplo 2 Neste exemplo temos o pacote multido usado em conjunto com o pacote picture:
1 2 3 4
%
5 6
by Geovane Krger
.................................................................................................... 3
***
**** * * ** ** ******** * *
* * ** * * * *
* ** * * * *
***** *** *
********
* **** *
*******
****** ** *** *
******* ** * ***
* ***** *
**
* ** * * *
* * * * * * * * * * * **** **** * * **
*
* * * * ** **** *** *
* * * **** * * * * *
* *********** * * *
**************
******
***
**
********
** ** ** *
***** ***
*****
** **
* **
***
** *
***
***
**
**********
* ** ** * * * * * * * * *
**********
*********
*********
******** *********
**
**
* **** * * * * *
**
**
** ** * * * * * *
**
**
******
**
**
***
**
**
**
* ** * * **
**
* **
*****
**
**
**
**
**
*********
**
***** * * *
**
* **
**
**
**
**
* * ****
* ** *****
**
**
**
* * *** *
* ***
* **
** **
**
** **
*****
***
** * * * * * **
* ***
**
* ** * * * * * * * *
*********
**
* * ** * * * * * *
***
***
**
* ***
***** *
* *
****
********
** **
****
* * **
**
************
* ***
**
* ** ** **
****
* ** ****
**
**
** *
***************
* * ** * ** * * * ** *
**
* * * * ** **
**
* *** * *
**
**
* * * **
* **** *
** ** * ** * ** * *
** *
****** * * ******
**** *
* ** *
*****
**
* *
******
* *
**
* *
* * ****
* * * * * ** * * * * ** * * * ** * * * * * * * * * * * * *****
******* ** * * ** * ** ** *** *
* ****
* * * * **** * * * * * * * * * ** * * * * * *
**
* * * * ** ** ** * ** * * * * * * * * *
* * * * * * *** * **
*** ** *
* * * * * ** * * * * * * ** * * * * * * * ** * *
* ** ** ** ** *
* ** *
* *
** ** * * *
**
******
***** *** *
**** ****
*********
*********** ** **
* *
* * * * *** * ** * *
* ** *
*****
**
* * ******
* *
****
***
**
* ** * * * * * *
**** **
* **************
** ***
***
**
* ** * * *
** *
** *
******** * * ** *
****
**
**** **** *
**
* ********
********
**
* ** * * * *
* * * * ** *
***** * ******
***** * ******
***** * * *
***** * * *
**
******* ** *** *
*** ***
** * * ** *
**
**** * *
*** **
* *** *
**
***
** **
**
***
**
*** *
**************
* ** ** *
**************
*************
* ****
* **
* **
***
* ** ***
**
**
**
* * * * * *****
**
* **** *** **
* * * ******
********
* ****
**
***
**
* ** **
***
***
**
***
**
Captulo
O Pacote pstricks
Os melhores editores de guras, desenhos e grcos so os que usam a linguagem PostScript podendo resultar assim, em um sistema muito poderoso. Enquanto muitos pacotes de macro usam apenas algumas partes do PostScript, o macro mais completo para este propsito indiscutivelmente o PSTricks. PSTricks um conjunto de pacotes muito poderoso com inmeras ferramentas e combinaes de ferramentas que podem ser utilizadas, do qual traremos apenas alguns exemplos e algumas demonstraes neste material, algo bem bsico sobre alguns pacotes pois se fosse para falar de tudo teria que ser feito um manual em vrios volumes, outro motivo de ser algo bsico por que no fcil de manipular a linguagem destes pacotes,
A seria necessrio ter um maior conhecimento do LTEX, de programao e computao em geral. Para quem quiser obter maiores informaes sobre cada pacote descrito aqui, poder consultar a bibliograa indicada.
Como j havamos mencionado, estes pacotes no tem habilidades especiais com drivers PDF, portanto
A quando gerar o documento produzido pelo LTEX, devemos primeiramente criar o arquivo .dvi passar para .ps e
depois para .pdf. Com PSTricks ns podemos: desenhar linhas, polgonos, crculos e curvas;
A Situar e manipular textos do LTEX;
desenhar nodos e conectores (inclusive rvores); fazer linhas coloridas e preencher objetos; denir novos comandos grcos. Para o uso dos objetos descritos a seguir e para o uso dos outros pacotes do conjunto PSTricks devemos sempre adicionar no prembulo o pacote \usepackage{pstricks} 5
e os demais pacotes que sero visto no decorrer deste captulo devero ser adicionados logo abaixo este comando. Argumentos e Delimitadores A seguir temos alguns argumentos e delimitadores que so muito importantes e bom ns conhecermos e termos eles em mente. Chaves (para argumentos mandatrios) {argumento} Colchetes (para argumentos opcionais) [argumento] Parnteses e vrgulas para coordenadas (x,y) = e vrgulas para parmetros parte1=valor1,. . . espaos e vrgulas tambm podem ser usados como delimitadores dentro de argumentos. Nunca devemos usar vrgula como ponto decimal, para que o PSTricks no confunda a vrgula com um delimitador. As confuses mais comum de se fazer com macros PSTricks com os delimitadores. Portanto delimitadores so geralmente a primeira coisa para se checar quando ns cometemos algum erro com um macro PSTricks. Considerando que macros de PSTricks podem conter muitos comandos, til saber que ns podemos deixar um espao ou linha em branco entre qualquer argumento, exceto entre argumentos que esto inseridos dentro de chaves {}. Se precisarmos inserir uma nova linha entre argumentos que esto entre um par de chaves, podemos colocar um caractere de comentrio % no m da linha.
by Geovane Krger
.................................................................................................... 6
onde os objetos so postos em uma caixa cujo canto inferior esquerdo (x0 , y0 ) (padro (0,0)) e o canto superior direito (x1 , y1 ). Normalmente, as guras podem estender-se para fora dos limites da folha, porm, se ns incluirmos o *, qualquer coisa fora dos limites cortado (pspicture*). Temos um parmetro para ser usado junto com o ambiente pspicture: shift=dimenso com este parmetro ns podemos proporcionar um deslocamento vertical do objeto em relao a linha de base (baseline). O seu valor padro 0. A seguir temos um exemplo simples que foi posto dentro de uma grade para visualizar o sistema de coordenadas. Exemplo 3
2 1 0 0 1 2
1 2 3
.................................................................................................... 7
momento. Para alterarmos todo o sistema ao mesmo tempo, podemos usar o seguinte comando: \psset{unit=dimenso} por exemplo, usando o valor padro de medida que 1cm, ento os seguintes macros so equivalentes \psset{linewidth=.5cm} e \psset{linewidth=.5}, ou seja, s precisamos especicar a unidade de medida quando quisermos outra unidade.
A Pares de coordenadas tem a forma (x, y). A origem do sistema de coordenadas no LTEX o ponto
atual, ou seja onde estamos. O comando \SpecialCoor nos deixa usarmos coordenadas polares, da forma (r; a), onde r o raio e a o ngulo. Podemos usar tambm coordenadas cartesianas que da forma (x, y). O parmetro unit na verdade xa trs parmetros, xunit, yunit e runit, onde todos tem como unidade padro 1cm. Em um sistema de coordenadas cartesianas, podemos escalar a dimenso de x e y separadamente usando o comando \psset{xunit=dimenso, yunit=dimenso} observe que no necessrio denir os dois, podemos denir apenas um dos comandos, e o outro ca com a unidade padro, caso no denido. Exemplo 4
2
1 2
3 4
0 0 1 2
ngulos, em coordenadas polares ou em outros parmetros, deve ser um nmero que representa o ngulo em graus, que o padro. Mas ns tambm podemos alterar as unidades usadas para ngulos com o comando \degrees[partes] .................................................................................................... 8
by Geovane Krger
onde partes nmero de unidades em um crculo, ou seja, em quantas partes dividido o crculo. Por padro que em graus, \degrees[360]. O comando \radians um atalho para \degrees[6.28319]. Podemos especicar ngulos de outros modos com o comando \SpecialCoor. Veja a seguir alguns exemplos: Exemplo 5
1 0 -1 -1 0 1
1 2 3 4 5
Exemplo 6
4 3 2 1 0 0 1 2 3 4
1 2 3 4 5 6
.................................................................................................... 9
\denecolor{nome da cor}{modelo}{parmetros} onde em cada caso parmetros so nmeros entre 0 e 1 separados por vrgula dependendo do modelo de cor usado. A seguir temos alguns modelos: gray com este modelo podemos especicar uma nova escala de cinza, onde 0 preto e 1 branco, nesse caso usado s um nmero em parmetros. sistema rgb de cores signica: red-green-blue, portanto podemos misturar essas cores para formar novas cores (trs nmeros em parmetros). sistema hsb de cores signica: hue-saturation-brightness (matriz-saturao-brilho), (trs nmeros em parmetros). sistema cmyk de cores signica: cyan-magenta-yellow-(k)black (quatro nmeros em parmetros). Exemplo 7
1 2 3 4 5 6 7 8 9 10 11 12
\begin{pspicture}(0,-3)(-4,3) \psset{unit=3} \multido{\nHue=0.01+0.01}{100}{ \definecolor{MyColor}{hsb}{\nHue,1,1} \pscircle[linewidth=0.01,linecolor=MyColor]{\nHue}} \end{pspicture} \begin{pspicture}(-5,-3)(-9,3) \psset{unit=3} \multido{\nHue=0.01+0.01}{100}{ \definecolor{MyColor}{rgb}{\nHue,\nHue,0} \pscircle[linewidth=0.01,linecolor=MyColor]{\nHue}} \end{pspicture}
by Geovane Krger
.................................................................................................... 10
Podemos usar uma variao do parmetro dash da seguinte maneira: dash=dimenso1 dimenso2 dimenso3 dimenso4 usando desta maneira, podemos fazer com que uma linha no seja somente tracejada ou pontilhada, e sim tracejada e pontilhada ao mesmo tempo, veja: Exemplo 9
1 2
by Geovane Krger
.................................................................................................... 11
dotsep=dimenso a distncia entre pontos para o estilo de linha dotted. Padro : dotsep=3pt. Exemplo 10
1 2 3
border=dimenso bordercolor=cor Com estes dois parmetros ns podemos desenhar uma borda com largura dimenso e cor cor em cada lateral da curva. Isto til para quando uma linha passa por cima da outra. Os valores padro so: border=0pt e bordercolor=white. Exemplo 11
1 2 3 4
doubleline=true/false Quando true (verdadeiro), desenhada uma linha dupla, separada por um espao que da largura especicada em doublesep e com a cor especicada em doublecolor. Com este comando algumas setas podem parecer estranhas. Padro false. doublesep=dimenso padro : doublesep=1.25\pslinewidth. doublecolor=cor padro : doublecolor=white.
by Geovane Krger
.................................................................................................... 12
Exemplo 12
1 2 3 4
.................................................................................................... 13
hatchangle=rotao rotao das linhas, em graus (padro 45). hatchsepinc=dimenso incremento adicional de espao entre duas linhas (Padro 0pt). hatchwidthinc=dimenso valor para incrementar uma linha de largura em cada linha (Padro 0pt). addllstyle=estilo isto permite usar dois estilos diferentes para a mesma rea. Isso especialmente til quando o estilo boxll usado. Exemplo 13
1 2
Exemplo 14
1 2
by Geovane Krger
.................................................................................................... 14
Exemplo 15
1 2
Exemplo 16
1 2
.................................................................................................... 15
Valor <-> >-< <<->> >>-<< |-| |*-|* |<->| |<*->|* [-] ]-[ (-) )-( o-o *-* oo-oo **-** c-c cc-cc C-C dos colchetes). Por exemplo
Exemplo
Nome Nada (Padro) Pontas de echas Pontas de echas inversas Pontas de echas duplas Pontas de echas inversas duplas T-barras T-barras, centradas nas pontas T-barras e pontas de echas T-barras e pontas de echas, centradas Colchetes Colchetes Invertidos Parnteses Parnteses Invertidos Crculos, centrados nas pontas Discos, centrados nas pontas Crculos Discos extendido, nais arredondados nais arredondados extendido, nais quadrados
\psline=[arrows=<-,linestyle=dotted](3,4) pode ser escrito \psline[linestyle=dotted]{<-}(3,4) Podemos ainda, personalizar o tamanho dos estilos de setas. Na descrio dos parmetros a seguir, a largura refere-se a dimenso sempre em relao a perpendicular em que est a linha, e a altura refere-se a dimenso sempre na direo em que est a linha. Veja os parmetros abaixo: arrowsize=dimenso nmero a largura das setas o nmero multiplicado por linewidth mais a dimenso (Isso se o valor opcional nmero includo). O valor padro : arrowsize=1.5pt 2. .................................................................................................... 16
by Geovane Krger
arrowlength=numero o comprimento das setas : numero arrowsize. Padro arrowlength=1.4. arrowinset=numero corresponde a parte de trs da seta, como ela deve ser, com uma entrada para dentro, reto atrs ou uma ponta ao contrrio. O tamanho funciona da seguinte maneira: numero arrowlength. Padro arrowinset=0.4. Antes de descrevermos os comandos para personalizar as T-barras, colchetes, parnteses veja alguns exemplos e compare os efeitos, principalmente quanto ao uso do parmetro arrowinset: Exemplo 17
1
\psline[arrowsize=3mm 10,arrowlength=1,arrowinset=0]{->}(0,0)(6,0)
\psline[arrowsize=3mm 10,arrowlength=6,arrowinset=0.3]{->}(0,0)(6,0)
\psline[arrowsize=3mm 10,arrowlength=1.5,arrowinset=0.8]{->}(0,0)(6,0)
\psline[arrowsize=3mm 5,arrowlength=1,arrowinset=-0.4]{->}(0,0)(6,0)
continuando . . . tbarsize=dimenso nmero a largura de uma T-barra, colchete ou parntese o nmero multiplicado por linewidth mais a dimenso (Isso se o valor opcional nmero includo). Valor padro tbarsize=2pt 5. bracketlength=numero comprimento do colchete quando usado : numero tbarsize. Padro bracketlength=0.15 rbracketlength=numero comprimento do parntese quando usado : numero tbarsize. Padro rbracketlength=0.15.
by Geovane Krger
.................................................................................................... 17
arrowscale=nmero funciona como escala. Padro : arrowscale=1. Ideal para quando usamos discos ou crculos. Exemplo 18
1
\psline[tbarsize=1mm 15,bracketlength=1]{[-[}(0,0)(6,0)
\psline[tbarsize=1mm 15,rbracketlength=1]{(-(}(0,0)(6,0)
\psline[arrowscale=3.5]{o-*}(0,0)(6,0)
Se ns quisermos, tambm podemos colocar pontos nas coordenadas especicadas usando o parmetro showpoints=true/false padro false. Existem outros modos de controlar ou escolher o estilo de pontos, mas isto ser descrito mais adiante. Exemplo 19
1
\psline[showpoints=true]{->}(0,0)(1,0)(2,0)(3,0)(4,0)(7,0)(8,0)
by Geovane Krger
em \psframe e macros de caixas moldadas, o raio dos cantos arredondados por padro xo, mas com nmero ns podemos multiplicar a largura ou a altura. nmero deve estar entre 0 e 1 (Padro 0). cornersize=relative/absolute se cornersize relative, ento o parmetro framearc determina o raio dos cantos arredondados para \psframe como descrito acima (e conseqentemente o raio depende do tamanho da moldura). Se cornersize absolute, ento o parmetro linearc determina o raio dos cantos arredondados para psframe (e conseqentemente o raio de tamanho constante). (Padro relative). gangle=ngulo este parmetro usado para rotacionar as guras geradas pelos comandos \psdiamond e \pstriangle, o eixo de rotao o centro da gura (valor padro 0). Agora sim vejamos os tipos de linhas e polgonos: \psline[parmetros]{setas}(x0 , y0 )(x1 , y1 ) . . . (xn , yn ) \psline*[parmetros]{setas}(x0 , y0 )(x1 , y1 ) . . . (xn , yn ) Isto desenha uma linha que passa pela lista de coordenadas. necessrio ao menos dois par de coordenadas. Exemplo 20
2 1 0 0 1 2 3 4
1 2 3
\qline(x0 , y0 )(x1 , y1 ) Esta uma verso simples de \psline, o qual no tem argumentos, no usa setas e desenha somente uma linha reta. Para alterar a dimenso da linha devemos usar \psset. Exemplo 21
1 0 0 1 2
1 2 3 4
by Geovane Krger
.................................................................................................... 19
\pspolygon[parmetros](x0 , y0 )(x1 , y1 )(x2 , y2 ) . . . (xn , yn ) \pspolygon*[parmetros](x0 , y0 )(x1 , y1 )(x2 , y2 ) . . . (xn , yn ) Isto semelhante ao \psline, mas desenha um caminho fechado. necessrio ao menos trs pares de coordenadas. Exemplo 22
1
3 2 1 0 0 1 2 3 4 5 6 7 8
\psframe[parmetros](x0 , y0 )(x1 , y1 ) \psframe*[parmetros](x0 , y0 )(x1 , y1 ) \psframe desenha um retngulo com cantos opostos (x0 , y0 ) e (x1 , y1 ) Exemplo 23
1
\begin{pspicture}(0,0)(-.6,4) \psgrid[subgriddiv=1,griddots=10](0,0)(6,4) \psframe[linewidth=0.1cm,fillstyle=solid, fillcolor=Yellow](6,4) \pspolygon[linewidth=0.05cm,fillstyle=solid, fillcolor=Green] (2.5,0.5)(1.5,1.5)(1.5,2.5)(2.5,3.5)(3.5,3.5) (4.5,2.5)(4.5,1.5)(3.5,0.5)(2.5,0.5) \psframe*[linecolor=white,framearc=.9](2,1) (4,3) \end{pspicture}
4 3
2 3
2 1 0 0 1 2 3 4 5 6
7 5
.................................................................................................... 20
\psdiamond desenha um losango centrado em (x0 , y0 ) e meia largura e meia altura igual a (x1 , y1 ), respectivamente. Exemplo 24
4
1
3 2 1
0 0 1 2 3 4 5 6
\psdiamond*[linecolor=white](3,2)(0.7,1) \end{pspicture}
\pstriangle[parmetros](x0 , y0 )(x1 , y1 ) \pstriangle*[parmetros](x0 , y0 )(x1 , y1 ) \pstriangle desenha um tringulo issceles com base centrada em (x0 , y0 ), e com largura da base e altura igual a (x1 , y1 ), respectivamente. Exemplo 25
2 1 0 0 1 2 3 4
1 2 3
by Geovane Krger
.................................................................................................... 21
Exemplo 26
1
1
0 -1 -1 0 1
2 3 4
\qdisk(x, y){raio} Esta uma verso simplicada de \pscircle. Possue somente os dois comandos obrigatrios, no possue argumentos opcionais. Para alterarmos a cor devemos usar \psset. \pswedge[parmetros](x0 , y0 ){raio}{ngulo1}{ngulo2} \pswedge*[parmetros](x0 , y0 ){raio}{ngulo1}{ngulo2} Com isto desenhamos uma cunha cujo centro (x0 , y0 ), que tem raio igual raio, e se estende em sentido anti-horrio do ngulo1 para o ngulo2. Os ngulos devem ser especicados em graus. Exemplo 27
1 2 3 4 5
2 1 0 0 1 2 3 4 5 6 7 8
\psellipse[parmetros](x0 , y0 )(x1 , y1 ) \psellipse*[parmetros](x0 , y0 )(x1 , y1 ) (x0 , y0 ) o centro da elipse, e (x1 , y1 ) so os raios horizontais e verticais, respectivamente.
by Geovane Krger
.................................................................................................... 22
Exemplo 28
1
1
0 -1 -2 -1 0 1 2
2 3 4
\psarc[parmetros]{setas}(x, y){raio}{nguloA}{nguloB} \psarc*[parmetros]{setas}(x, y){raio}{nguloA}{nguloB} Isto desenha um arco do ngulo1 para o ngulo2, indo em sentido anti-horrio, para um crculo de raio raio e centrado em (x, y). O argumento de setas no obrigatrio. Exemplo 29
1 2 3 4 5
\psarc*[showpoints=true](10,0){1.8}{10}{140} 6 \end{pspicture}
2 1 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13
O parmetro showpoints=true aqui, desenha um linha tracejada do centro at o arco, o que bem til. O macro \psarc ainda contm alguns parmetros que podem ser usados: arcsepA=dimenso Com este parmetro, ns podemos ajustar o arco de maneira que ele comear a partir de uma certa linha (invisvel) em dimenso. Essa linha se estende do centro do arco na direo do nguloA, e a sua largura divide-se meio a meio para cada lado do centro. Para entender melhor esse parmetro, veja o exemplo ?? e analise a gura. arcsepB=dimenso como no arcsepA, mas ajustado em relao ao nguloB.
by Geovane Krger
.................................................................................................... 23
Exemplo 31
2 1 0 0 1 2 3 4
1 2 3
by Geovane Krger
.................................................................................................... 24
Exemplo 32
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
\begin{pspicture}(0,-2.5)(-5,2) \SpecialCoor \psgrid[subgriddiv=2,subgriddots=10,griddots=10](-2,-2)(2,2) \psarc*[linecolor=green,showpoints=true](0,0){2}{0}{180} \psarc*[showpoints=true,arcsepA=1cm](0,0){2}{0}{180} \psarc*[linecolor=red,showpoints=true,arcsepA=2cm](0,0){2}{0}{180} \psarc*[linecolor=blue,showpoints=true,arcsepA=3cm](0,0){2}{0}{180} \psarc*[linecolor=yellow,showpoints=true,arcsepA=4cm](0,0){2}{0}{180} \psarc*[linecolor=green,showpoints=true,arcsepA=5cm](0,0){2}{0}{180} \psarc*[showpoints=true,arcsepA=6cm](0,0){2}{0}{180} \psarc*[linecolor=red,showpoints=true,arcsepA=7cm](0,0){2}{0}{180} \psarc*[linecolor=blue,showpoints=true,arcsepA=8cm](0,0){2}{0}{180} \psarc*[linecolor=yellow,showpoints=true,arcsepA=9cm](0,0){2}{0}{180} \psarc*[linecolor=green,showpoints=true,arcsepA=10cm](0,0){2}{0}{180} \psarc*[showpoints=true,arcsepA=11cm](0,0){2}{0}{180} \psarc*[linecolor=red,showpoints=true,arcsepA=12cm](0,0){2}{0}{180} \psline[linewidth=2cm,linestyle=dashed,linecolor=gray](0,0)(2;0) \psline[linewidth=1cm,linestyle=dashed,linecolor=lightgray](0,0)(2;0) \psline[linecolor=ProcessBlue](2.1;14)(-2,0)(2.2;27.1)(-2,0)(2.4;39.2) \end{pspicture}
2 1 0 -1 -2 -2 -1 0 1 2
Com este parmetro ca fcil desenhar a interseo de duas linhas e indicar com setas o ngulo formado entre elas.
by Geovane Krger
.................................................................................................... 25
Exemplo 33
1 2 3 4 5
\psarcn[parmetros]{setas}(x, y){raio}{nguloA}{nguloB} \psarcn*[parmetros]{setas}(x, y){raio}{nguloA}{nguloB} Tem a mesma funcionalidade de \psarc, mas a diferena que com esse comando o arco construdo no sentido horrio. \psellipticarc[parmetros]{setas}(x0 , y0 )(x1 , y1 ){nguloA}{nguloB} \psellipticarc*[parmetros]{setas}(x0 , y0 )(x1 , y1 ){nguloA}{nguloB} Isto desenha um arco elptico do nguloA para o nguloB, indo no sentido anti-horrio, sendo (x0 , y0 ) o centro da elipse e (x1 , y1 ) o raio horizontal e vertical, respectivamente. Exemplo 34
1 0 -1 -1 0 1 2
1 2 3
\psellipticarcn[parmetros]{setas}(x0 , y0 )(x1 , y1 ){nguloA}{nguloB} \psellipticarcn*[parmetros]{setas}(x0 , y0 )(x1 , y1 ){nguloA}{nguloB} Tem a mesma funcionalidade de \psellipticarc, mas a diferena que com esse comando o arco construdo no sentido horrio. \psellipticwedge[parmetros]{setas}(x0 , y0 )(x1 , y1 ){nguloA}{nguloB} .................................................................................................... 26
by Geovane Krger
\psellipticwedge*[parmetros]{setas}(x0 , y0 )(x1 , y1 ){nguloA}{nguloB} Com isto desenhamos uma cunha elptica cujo centro (x0 , y0 ), e tem os raios horizontais e verticais descritos por (x1 , y1 ), e se estende em sentido anti-horrio do ngulo1 para o ngulo2. Os ngulos devem ser especicados em graus. Exemplo 35
2
1 2
1
3
0
4
-1 -2 -1 0 1 2
5
2.2.9 Curvas
\psbezier[parmetros]{setas}(x0 , y0 )(x1 , y1 )(x2 , y2 )(x3 , y3 ) \psbezier*[parmetros]{setas}(x0 , y0 )(x1 , y1 )(x2 , y2 )(x3 , y3 ) Com este comando podemos desenhar uma curva de bezier com os quatro pontos de controle. Esta curva inicia na primeira coordenada, tangenciando a linha que conecta a primeira coordenada a segunda coordenada e termina na ltima coordenada, tangenciando a linha que conecta a terceira coordenada a quarta coordenada. A segunda e a terceira coordenada ainda tem a funo de puxar a curva para elas. Exemplo 36
1 2
by Geovane Krger
\parabola*[parmetros]{setas}(x0 , y0 )(x1 , y1 ) Isto desenha uma parbola que passa por (x0 , y0 ) e cujo mximo ou mnimo (x1 , y1 ). Exemplo 37
3 2 1 0 -1 -1 0 1 2 3
1 2 3
4 5
Os prximos trs objetos de grcos interpolam uma curva aberta ou fechada pelos pontos dados. A curva a cada ponto interior perpendicular linha que corta ao meio o ngulo ABC, onde B o ponto interior, e A e C so os pontos de fronteira. Escalando as coordenadas, a curva pode no car escalada proporcionalmente. A curvatura controlada pelo seguinte parmetro: curvature=nmero1 nmero2 nmero3 onde padro : curvature=1 .1 0 Ns temos que jogar as poucos com este parmetro para adquirir o que queremos. Valores individuais fora da gama -1 a 1 ou ignorado ou s para entretenimento. A explicao a seguir diz o que cada nmero faz. A, B e C refere-se a trs pontos consecutivos. Quanto mais baixo o valor de nmero1 mais apertada a curva. Quanto mais baixo o valor de nmero2, a curva apertada onde o ngulo ABC maior que 45 graus e afrouxada em outro lugar. nmero3 determina a declividade a cada ponto. Se nmero3=0, ento a curva perpendicular a B para a bisseo de ABC. Se nmero3=-1, ento a curva em B paralela a linha AC. Com este valor (e somente este valor), escalando as coordenadas causam a curva uma escala proporcional. Porm, valores positivos podem melhorar com coordenadas espaadas irregularmente. Valores menores que -1 ou maior que 2 so convertidos para -1 e 2, respectivamente. Seguindo, temos os trs macros de interpolao de curvas. .................................................................................................... 28
by Geovane Krger
\pscurve[parmetros]{setas}(x1 , y1 ) . . . (xn , yn ) \pscurve*[parmetros]{setas}(x1 , y1 ) . . . (xn , yn ) Isto interpola uma curva aberta entre os pontos. Exemplo 38
2 1 0 0 1 2 3 4 5 6
4 1 2 3
\psecurve[parmetros]{setas}(x1 , y1 ) . . . (xn , yn ) \psecurve*[parmetros]{setas}(x1 , y1 ) . . . (xn , yn ) Isto como \pscurve, mas a curva no estendida ao primeiro e ltimo ponto. Isto til para tentar determinar como a curva deveria unir o primeiro e o ltimo ponto, ou para, como ajustar os pontos intermedirios. Exemplo 39
4 3 2 1 0 0 1 2 3 4
1 2 3
\psccurve[parmetros]{setas}(x1 , y1 ) . . . (xn , yn ) \psccurve*[parmetros]{setas}(x1 , y1 ) . . . (xn , yn ) Isto interpola uma curva fechada pelos pontos dados.
by Geovane Krger
.................................................................................................... 29
Exemplo 40
1
1 0 0 1 2 3 4
2 3
2.2.10 Pontos
Os objetos grcos \psdot[parmetros](x1 , y1 ) \psdot*[parmetros](x1 , y1 ) \psdots[parmetros](x1 , y1 )(x2 , y2 ) . . . (xn , yn ) \psdots*[parmetros](x1 , y1 )(x2 , y2 ) . . . (xn , yn ) coloca um ponto em cada coordenada. O ponto que ir aparecer depende do estilo especicado no parmetro dotstyle=estilo lembrando que, para os pontos aparecerem necessrio usar showpoints=true. (Padro : dotstyle=*). Os estilos de pontos disponveis esto descritos na tabela ??. Estilo * x asterisk oplus square diamond triangle pentagon
Exemplo
Exemplo
Estilo Bo
Exemplo
+ + + + +
* * * * *
+ + + + +
| | | | | | | | | |
* * * * *
by Geovane Krger
Com exceo do estilo diamond, o centro dos pontos que contm o centro oco pode ser colorido com llcolor. Temos ainda os seguintes parmetros que podem ser usados para escolher o tamanho e a orientao dos pontos: dotsize=dimenso nmero O dimetro de um crculo ou disco : dimenso mais numero linewidth (isso se o valor nmero for especicado). O tamanho dos outros estilos de pontos similar, exceto para o estilo |, que modicado pelo comando tbarsize descrito na pgina ??. (Padro : dotsize=2pt 2). dotscale=nmero1 nmero2 Os pontos so escalado horizontalmente por nmero1 e verticalmente por nmero2. Se incluirmos somente nmero1, os pontos so escalados em ambas as direes por nmero1. (Padro : dotscale=1). dotangle=ngulo Depois de xar e escalar os pontos, estes so rotacionados por ngulo. (Padro : dotangle=1).
2.2.11 Grades
PSTricks tem um macro muito poderoso para fazer grades e papel para grcos, cuja sintaxe : \psgrid[parmetros](x0 , y0 )(x1 , y1 )(x2 , y2 ) Com esse comando desenhamos uma grade com cantos opostos por (x1 , y1 ) e (x2 , y2 ) e so estes que vo descrever o intervalo da numerao dos eixos tambm. Com (x0 , y0 ) ns escolhemos onde que dever aparecer a numerao dos eixos, este parmetro no obrigatrio, e caso no seja especicado, a numerao dos eixos aparecer fora da grade, e o posicionamento depende da ordem das coordenadas (observe os exemplos a seguir). As coordenadas so sempre interpretadas como coordenadas Cartesianas. Exemplo 41
2 1 0 -1 -1 0 1 2 3 4 5 6
1 2 3
by Geovane Krger
.................................................................................................... 31
Exemplo 42
1 0 0 1 2 3 4
1 2 3
Exemplo 43
0 1 2 3 4 1 0
1 2 3
No que segue, temos os parmetros que podemos usar com \psgrid. gridwidth=dimenso a largura das linhas da grade (padro 0.8pt). gridcolor=cor cor das linhas da grade (padro black). griddots=nmero isso dene as linhas da grade como pontilhadas, com nmero pontos por diviso da grade. nmero tem que ser um nmero no-negativo (padro 0). gridlabels=dimenso o tamanho dos nmeros usados para marcar a grade (padro 10pt). gridlabelcolor=cor cor dos nmeros (padro black). subgriddiv=nmero o nmero de subdivises da grade. Deve ser um nmero inteiro (padro 5). subgridwidth=dimenso
by Geovane Krger
.................................................................................................... 32
largura das linhas da sub-grade (padro 0.4pt). subgridcolor=cor cor das linhas da sub-grade (padro gray). subgriddots=nmero como griddots, mas para as subdivises (padro 0). Exemplo 44
1
1
-1 -1 0 1 2 3
Observao 2.1 \psgrid s permite o uso de 500 divises e 500 subdivises no mximo.
by Geovane Krger
.................................................................................................... 33
Exemplo 45
1 2
Temos mais outro parmetro grco relacionado a linhas, mas isto s pode ser aplicado o objetos grco fechados, como \psframe, \pscircle, \psellipse e \pswedge. dimen=outer/inner/middle isto determina se as dimenses esto se referindo ao interior, exterior ou o meio das fronteiras. A diferena notvel quando o linewidth grande (padro : dimen=outer). Exemplo 46
3 2
3 1 2
1 0 0 1 2 3 4
4 5 6 7
by Geovane Krger
.................................................................................................... 34
Exemplo 47
2 1 2 1 3 0 0 1 2 3 4 4
Alm de congurar um novo objeto, ns tambm podemos congurar somente um novo estilo com o comando: \newpsstyle{nome}{parmetro1=valor1, . . . } por exemplo: Exemplo 48
1 2
3 4
Este primeiro como j mencionamos, pode ser usado para colocar objetos, textos, rtulos em qualquer lugar, mas PSTricks tem uma variao do comando anterior, o qual especco para textos e rtulos .................................................................................................... 35
by Geovane Krger
Bl _ _ _ _ _ _ _ _ _ _ _ _ _ _ B _ _ _ _ _ _ _ _ _ _ _ _ _ _ Br bl b br
Figura 2.1: Localizao dos Pontos de Referncia e Suas Combinaes \uput{Separao}[ngulo de Referncia]{Rotao}(x, y){Texto} Isto coloca o Texto a uma distncia Separao de (x, y), na direo do ngulo de Referncia (Separao e Rotao so argumentos opcionais, do mesmo modo no comando anterior, Referncia e Rotao so opcionais). Exemplo 49
1 2
\begin{pspicture}(0,-3)(-3,3) \pswedge[fillstyle=solid,fillcolor=gray ]{2.4}{0}{70} \pswedge[fillstyle=solid,fillcolor=lightgray ]{2.4}{70}{200} \pswedge[fillstyle=solid,fillcolor=darkgray ]{2.4}{200}{360} \SpecialCoor \psset{framesep=1.5pt} \rput(1.4;35){\psframebox*{\small Texto 1}} \uput{2.5}[45](0,0){Texto 4} \rput(1.4;135){\psframebox*{\small Texto 2}} \uput{2.5}[135](0,0){Texto 5} \rput(1.4;280){\psframebox*{\small Texto 3}} \uput{2.5}[280](0,0){Texto 6} \end{pspicture}
Texto 5
Texto 2 Texto 1
Texto 4
4
5 6 7
Texto 3
8 9 10
Texto 6
11 12 13
Temos ainda as seguintes abreviaes que podemos usar em ngulo de referncia para simplicar alguns ngulos. Letra r u l d Direo Direita Acima Esquerda Abaixo ngulo 0 90 180 270 Letra ur ul dl dr Direo Canto Direito Superior Canto Esquerdo Superior Canto Esquerdo Inferior Canto Direito Inferior ngulo 45 135 225 315
by Geovane Krger
.................................................................................................... 36
2.2.15 Repeties
O macro \multirput[Referncia]{ngulo}(x0 , y0 )(x1 , y1 ){Repeties}{Material} uma variao de \rput que faz um determinado nmero de cpias especicado em Repeties, iniciando em (x0 , y0 ) e avanando de (x1 , y1 ) at completar o nmero de repeties, lembre-se estes pontos so interpretados como coordenadas cartesianas (Referncia, ngulo e a coordenada (x0 , y0 ) so opcionais). Exemplo 50
1 2 3
Se estivermos am de querer cpias de grcos puros, o seguinte macro mais eciente para ser usado \multips{ngulo}(x0 , y0 )(x1 , y1 ){Repeties}{Grcos} Grcos podem ser um ou mais de um objetos de grcos puros j descritos anteriormente ou grcos de \pscustom que sero descritos logo a seguir. Ao contrrio de \multirput, as coordenadas podem ser de qualquer tipo. Exemplo 51
1 2 3 4 5
by Geovane Krger
.................................................................................................... 37
Exemplo 52
0.3 0.4 0.1 0.5 0.0 0.6 1.0 0.7 0.8 0.9 0.2
1 2 3 4 5 6 7 8 9 10 11
\begin{pspicture}(0,-3)(-4,3) \definecolor{hsb}{hsb}{0,1,1} \psset{fillstyle=solid,fillcolor=hsb} \SpecialCoor \degrees[1.1] \multido{\n=0.0+0.1}{11}{% \definecolor{hsb}{hsb}{\n,1,1}% \psset{fillcolor=hsb}% \rput{\n}{\pswedge{3}{-.05}{.05}} \uput{3.2}[\n](0,0){\small\n}} \end{pspicture}
2.3.1 Parmetros
Precisamos guardar em mente a separao entre desenhar, pincelar e preencher os caminhos quando estabelecemos os parmetros grcos. Os parmetros linewidth e linecolor afetam o desenho de setas, mas desde que os comandos de caminho no pincelem ou preencham os caminhos, estes parmetros mais linestyle, llstyle e parmetros relacionados, no tem nenhum outro efeito.
by Geovane Krger
.................................................................................................... 38
Os parmetros shadow, border, doubleline e showpoints so desativados em \pscustom Os estilos de linhas pontilhados e tracejados precisam saber algo sobre os caminhos para ajustar o trao ou o ponto adequadamente. Est informao dada atravs do parmetro linetype=valor os valores que podemos usar so especicados na Tabela ?? (valor padro 0). Se o caminho conter mais que um segmento desconectado, no h nenhum modo apropriado para ajustar o trao ou ponto modelo, nesse caso o melhor deixar o valor padro para linetype. A seguir temos a tabela com os valores para caminhos simples: Valor 0 -1 -2 -3 1 n>1 Tipo de Caminho Curva aberta sem setas Curva aberta com uma seta no incio Curva aberta com uma seta no nal Curva aberta com uma seta em ambos ns Curva fechada com nenhuma simetria particular Curva fechada com n segmentos simtricos Tabela 2.2: Valores para linetype
.................................................................................................... 39
Exemplo 53
3
1
2 1 0 0 1 2 3
2 3 4 5 6
As seguintes curvas tambm fazem o uso do ponto atual, se existir, como uma primeira coordenada: psline, pscurve e o comando psbezier se ns incluirmos somente trs coordenadas. Porm, ns podemos controlar como as curvas abertas tratam o ponto atual com o seguinte parmetro: liftpen=valor Se liftpen=0 (padro) temos o comportamento do exemplo abaixo, isto , existe o ponto atual e existe a linha que a une as curvas. Exemplo 54
3 2 1 0 0 1 2 3 4 5
1 2 3
4 5 6
Se liftpen=1 as curvas no usam o ponto atual como primeira coordenada (exceto \psbezier, mas podemos evitar isto incluindo explicitamente a primeira coordenada como um argumento. Exemplo 55
3 2 1 0 0 1 2 3 4 5
1 2 3
4 5 6
Se liftpen=2, as curvas no usam o ponto atual como primeira coordenada e tambm no desenhada a linha entre o ponto atual e o incio da curva.
by Geovane Krger
.................................................................................................... 40
Exemplo 56
3 2 1 0 0 1 2 3 4 5
1 2 3
4 5 6
3 4 5
\moveto(coordenada) Move o ponto atual para (x, y). \closepath Isto fecha o caminho, unindo o comeo e m de cada pedao (pode haver mais de um pedao se usarmos \moveto).
by Geovane Krger
.................................................................................................... 41
Exemplo 58
1
1 0
2 3
-1 0 1 2 3
5 6
\stroke[Parmetros] Com isto pincelamos o caminho. \pscustom j pincela automaticamente o caminho, mas com isso podemos pincelar duas vezes ou mais o caminho, por exemplo, adicionar uma borda. Exemplo 59
1 2 3 4 5 6 7 8 9
\ll[Parmetros] Isto preenche a regio, mas \pscustom preenche a regio muito bem. \gsave & \grestore \gsave salva a condio atual do grco (isto , o caminho, cor, largura da linha, coordenadas, etc.) e \grestore restabelece as condies do grco. Ns sempre devemos usar \gsave e \grestore em pares aninhados corretamente.
by Geovane Krger
.................................................................................................... 42
Exemplo 60
1
3 2 1 0 0 1 2 3 4
2 3 4 5 6 7 8 9
Observe que no exemplo acima, a linha que est dentro de \gsave no desenhada, essa uma das grandes utilidades deste comando, podemos preencher grandes regies sem que as linhas que o determinam sejam desenhadas. Observe no exemplo a seguir, que usando o \gsave conseguimos montar a mesma curva usada nos exemplos anteriores sem desenhar uma linha unindo as duas. Exemplo 61
1 2 3 4 5 6 7 8
\begin{pspicture}(0,0)(-1,3) \pscustom[linewidth=1.5pt]{ \pscurve(0,2)(1,2.5)(2,1.5)(4,3) \gsave \pscurve[liftpen=1](4,1)(3,0.5)(2,1)(1,0)(0,.5) \fill[fillstyle=solid,fillcolor=MidnightBlue] \grestore} \pscurve[linewidth=1.5pt](4,1)(3,0.5)(2,1)(1,0) (0,.5) \end{pspicture}
Os prximos comandos so usados para modicar o sistema de coordenadas. \translate(x, y) Translada o sistema de coordenadas para (x, y). Isto troca tudo o que vem depois de (x, y), mas no afeta o que j foi desenhado. \scale{nmero1 nmero2} Se colocarmos somente nmero1, escalamos o sistema de coordenadas em ambas as direes pelo valor dado, ou ento, escala horizontal por nmero1 e vertical por nmero2. \rotate{ngulo}
by Geovane Krger
.................................................................................................... 43
Faz uma rotao do sistema de coordenadas em relao a origem de acordo com o valor ngulo. \swapaxes Troca as coordenadas x e y. A seguir temos alguns truques para sombras: \openshadow[Parmetros] Pincela uma rplica do caminho atual, usando os vrios parmetros de sombras. \closedshadow[Parmetros] Faz uma sombra da regio includa pelo caminho atual como se fosse regies opacas. \movepath(x, y) Desloca o caminho para (x, y). Use \gsave-\grestore se voc no quer perder o caminho original. Exemplo 62
1 2 3 4 5 4 6 7 3 8 9 2 10 11 1 12 13 0 -2 -1 -1 0 1 2 3 4 14 15 16 17 -2 18
\definecolor{Amarelo}{cmyk}{0,0,0.1,0} \begin{pspicture}(0,-2)(-2,4) \pscustom[linewidth=2pt,linecolor=Dandelion]{ \translate(1,1) \rotate{45} \gsave \psellipse(0,0)(3,2) \fill[fillstyle=solid,fillcolor=Amarelo] \grestore \psellipse(0,0)(3,2)} \pscustom[linewidth=1.5pt,linecolor=Blue]{ \translate(1,1) \rotate{45} \psline(-4,0)(4,0) \psline[liftpen=2](0,-4)(0,4)} \psline[linewidth=1.5pt](-2,0)(4,0) \psline[linewidth=1.5pt](0,-2)(0,4) \psline[linewidth=1.5pt,linecolor=Green](-2,1) (4,1) \psline[linewidth=1.5pt,linecolor=Green](1,-2) (1,4) \psgrid[subgriddiv=1,griddots=5,gridlabels=6pt ](0,0)(-2,-2)(4,4) \end{pspicture}
19
20
21
by Geovane Krger
.................................................................................................... 44
Texto
3 4
\psdblframebox[Parmetros]{Materiais}
by Geovane Krger
.................................................................................................... 45
\psdblframebox[Parmetros]{Materiais} Isto desenha uma moldura dupla. como uma variao de \psframebox. Exemplo 64 Uma moldura dupla desenhada com abertura entre linha igual a doublesep
4 1 2 3
\begin{pspicture}(0,-1)(-.5,1) \psdblframebox[linewidth=1.5pt]{ \parbox[c]{5cm}{\raggedright Uma moldura dupla desenhada com abertura entre linha igual a \texttt{doublesep}}} \end{pspicture}
\psshadowbox[Parmetros]{Materiais} \psshadowbox*[Parmetros]{Materiais} Isto desenha uma moldura simples com sombra. \pscirclebox[Parmetros]{Materiais} \pscirclebox*[Parmetros]{Materiais} Isto desenha um crculo, com boxsep=true. \cput[Parmetros]{ngulo}(x, y){Materiais} \cput*[Parmetros]{ngulo}(x, y){Materiais} Isto combina as funes de \pscirclebox e \rput. Ao contrrio do comando \rput, este no contm o argumento de ponto de referncia, sempre localizado no centro da caixa. Exemplo 65
1
2 3
\psovalbox[Parmetros]{Materiais} .................................................................................................... 46
by Geovane Krger
\psovalbox*[Parmetros]{Materiais} Isto desenha uma ellipse. \psdiabox[Parmetros]{Materiais} \psdiabox*[Parmetros]{Materiais} Desenha um losango. \pstribox[Parmetros]{Materiais} \pstribox*[Parmetros]{Materiais} Isto desenha um tringulo, apontando na direo: trimode=*U/D/R/L se incluirmos *, que opcional, ento desenhado um tringulo equiltero, caso contrrio, desenhado um tringulo issceles de menor rea possvel. Exemplo 66
1
\psovalbox[linecolor=darkgray]{\Large\textbf{Ex1}}
Ex1
1
\psdiabox[shadow=true]{\Large\textbf{Ex2}}
Ex2
1
\pstribox[trimode=R,framesep=5pt]{\Large\textbf{Ex3}}
Ex3
1
\pstribox[trimode=*U]{\Large\textbf{Ex4}}
Ex4
.................................................................................................... 47
by Geovane Krger
Esquerda
Temos agora dois macros para escala de caixas: \scalebox{nmero1}[nmero2]{Materiais} Se ns utilizarmos os dois nmeros no momento de escalar a caixa, nmero1 usado para escalar horizontalmente e nmero2 usado para escalar verticalmente. Se utilizarmos somente nmero1, a caixa escalada igualmente em ambas as direes. No podemos colocar escala 0, mas nmeros negativos so aceitos, e tem o efeito de girar a caixa ao redor do eixo. Exemplo 68
Direita
odnarig
2.4.3 Recortando
Com o comando \begin{psclip} {grcos delimitadores} . . . \end{psclip}
grcos delimitadores faz um caminho cortado ou um grco que serve como limite para as demais coisas que aparecero antes de \end{psclip}
by Geovane Krger
.................................................................................................... 48
Abaixo
\scalebox{-2}[2]{girando}
Exemplo 69
1 2 3 4
\begin{pspicture}(0,0)(-1,2) \parbox{4cm}{% \begin{psclip}{ \psline[linestyle=none](-0.5,0.3)(0.5,-1)(-0.5,-2) (0.5,-3)(1,-4)(2,-3)(3,-4)(4,-2)(3.6,-1) (4.2,0.3)(3,.3)(2.5,-1)(2,.3)(-0.5,0.3)} O que para alguns um problema para outros um exerccio e para alguns outros uma distrao .\\ (Ditado popular) \end{psclip}} \end{pspicture}
O que para alguns um problema para outros um exerccio e para alguns outros uma distrao. (Ditado popular)
6 7 5
Se no queremos que aparea o esboo do caminho, devemos incluir linestyle=none na escolha dos parmetros. Tambm podemos incluir mais do que um objeto de grco no argumento, e neste caso o caminho recortado ser a interseo dos caminhos, ou ento obscurecer a regio entre duas curvas, observer o exemplo a seguir. Exemplo 70
1 2 3
%\usepackage{pst-plot}
\begin{pspicture}(0,0)(-1,4) \begin{psclip} {\pscustom[linestyle=none]{ \psplot{.5}{4}{2 x div} \psline(4,4)} \pscustom[linestyle=none]{ \psplot{0}{3}{3 x x mul 3 div sub} \psline(0,0)}} \psframe*[linecolor=gray](0,0)(4,4) \end{psclip} \psplot[linewidth=1.5pt]{.5}{4}{2 x div} \psplot[linewidth=1.5pt]{0}{3}{3 x x mul 3 div sub } \psaxes(4,4) \end{pspicture}
4 3 2 1 0 0 1 2 3 4
4 5 6 7 8 9 10 11 12 13
14 15
Observao 2.2 No exemplo acima, usamos o pacote pst-plot para plotar as curvas, este pacote ser explicado no captulo ??. Observe que, com o uso de psclip e pscustom conseguimos obscurecer apenas a regio que encontra-se entre as duas curvas.
by Geovane Krger
.................................................................................................... 49
Captulo
50
\makeatletter \let\pstdivide\pst@divide \makeatother ou colocar o macro sempre inserido dentro da seqncia \makeatletter\makeatother.
3.1.1 pst@divide
PSTricks tem seu prprio macro de diviso, o qual pode dividir dois comprimentos e salvar o quociente como um nmero de ponto utuante. Este macro denido pela seguinte linha de comando \pst@divide{dividendo}{divisor}{resultado deve ser um macro} Em resultado deve ser um macro signica que o resultado vai ser posto em um comando que ns devemos denir o nome, e para aparecer o resultado basta usar este nome. Exemplo 71
1
5.66666 -0.17647
2 3 4 5
3.1.2 pst@mod
pstricks-add dene uma funo adicional para mdulos: \pst@mod{inteiro}{inteiro}{resultado deve ser um macro} Exemplo 72
1
4 1
2 3 4 5
by Geovane Krger
.................................................................................................... 51
3.1.3 pst@max
\pst@max{inteiro}{inteiro}{resultado como um registro de conta} Exemplo 73
1 2
-6 11
3 4 5 6
3.1.4 pst@maxdim
\pst@maxdim{dimenso}{dimenso}{resultado como um registro de dimenso} Exemplo 74
1 2
1234.0pt 967.39369pt
3 4 5 6
3.1.5 pst@abs
\pst@abs{inteiro}{resultado como um registro de conta} Exemplo 75
1 2
34 5
3 4 5 6
by Geovane Krger
.................................................................................................... 52
3.1.6 pst@absdim
\pst@absdim{dimenso}{resultado como um registro de dimenso} Exemplo 76
1 2
967.39369pt 0.00008pt
3 4 5 6
\begin{pspicture}(0,0)(-1,5) \psgrid[subgriddiv=1,griddots=10](0,0)(4,5) \psset{linewidth=1pt,linestyle=dashed} \pscurve[dash=4mm 1mm 1mm 1mm 1mm 1mm](0,5)(2,4) (3,3)(4,0) \psline[dash=5mm 1mm 1mm 1mm 3mm 1mm 1mm 1mm, linecolor=blue](0,0)(4,0) \pscurve[dash=4mm 1mm 1mm 2mm 1mm 1mm,linecolor= red](0,0)(1,3)(2,1)(3,5)(4,2) \end{pspicture}
4 3 2 1 0 0 1 2 3 4
2 3 4
.................................................................................................... 53
Exemplo 78
4 3 2 1 0
1 2 3
4 5
as setas feitas pelo comando \ding usa o pacote \usepackage{pifont}, o qual vem incluso com o pacote \usepackage{symbol}.
3.5 Braos
Com o macro \[parmetros](A)(B){texto}
by Geovane Krger
.................................................................................................... 54
3.5 Braos
podemos colocar braos em qualquer posio. A opo \SpecialCoor carregada automaticamente e, assim todos os tipos de coordenadas podem ser usadas para ligar os braos. No exemplo a seguir, usamos coordenadas cartesianas, mas poderiamos ter usado nodos como coordenadas. Exemplo 80
4
o xt Te
1 2 3
3 2 1
o xt Te
0 0 1
1
2 3
3.5.1 Opes
Os parmetros mais importantes esto relacionados na tabela a seguir. lgico que os outros parmetros de PSTricks so vlidos tambm. Nome braceWidth bracePos linearc nodesepA nodesepB rot ref Funo Abertura do brao (Padro: 0.35) Posio relativa (Padro: 0.5) valor absoluto do arco (Padro: 2mm) x-separao (Padro: 0pt) y-separao (Padro: 0pt) Rotao adicional para o texto (Padro: 0) Ponto de referncia para o texto (Padro: c) Tabela 3.1: Principais parmetros para braos Por padro, o texto escrito perpendicularmente a linha do brao e pode ser mudado com o parmetro rot. Na linha de comando do macro onde est escrito texto, na verdade pode ser qualquer objeto ou pode ser vazio tambm. O ponto de referncia pode ser a combinao dos valores l (Esquerda) ou r (Direita) com b (base) ou B (Linha de Base) ou C (Centro) ou t (Topo), onde o padro c, que o centro do objeto.
by Geovane Krger
.................................................................................................... 55
Exemplo 81
1
\begin{pspicture}(0,0)(-1,2.5) \psbrace[ref=lC](0,0)(5,0){\fbox{Texto 1}} \psbrace[bracePos=0.25,rot=90,nodesepB=-5pt](0,1) (5,1){Texto 2} \psbrace[ref=lC,nodesepA=-2.4cm,nodesepB=-10pt,rot =90](0,2.5)(5,2.5){\fbox{Um texto bastante longo}} \end{pspicture}
2 3
Texto 2
5
Texto 1
Exemplo 82
1 2 3 4
\begin{pspicture}(0,0)(-1,2) $\begin{pmatrix} \Rnode[vref=2ex]{A}{~1} \\ & \ddots \\ && \Rnode[href=2]{B}{1} \\ &&& \Rnode[vref=2ex]{C}{0} \\ &&&& \ddots \\ &&&&& \Rnode[href=2]{D}{0}~ \\ \end{pmatrix}$ \psbrace[linewidth=0.1pt,rot=-90,nodesep=0.2](B)(A ){\small n times} \psbrace[linewidth=0.1pt,rot=-90,nodesep=0.2](D)(C ){\small n times} \end{pspicture}
1
n es tim
..
. 1
5 6 7 8 9 10
0 .. . 0
Neste ltimo exemplo foi feito o uso de nodos, o qual ser visto apenas no captulo ??.
es tim
11
12
.................................................................................................... 56
rea que ir delimitar os pontos aleatrios, lembrando que se a rea do objeto for maior que a rea do quadrado padro, teremos uma parte em branco, ou seja, sem pontos. \psRandom[parmetros](xmax , ymax ){Objeto Grco} \psRandom[parmetros](xmin , ymin )(xmax , ymax ){Objeto Grco} com o primeiro comando, podemos determinar at qual coordenada os pontos podem alcanar, ou seja a coordenada mxima, e com o segundo comando podemos ter tambm a coordenada minima. Temos mais dois novos parmetros para usar, alm dos outros j vistos para PSTricks: Nome randomPoints color Padro 1000 false Funo Nmero de pontos aleatrios Cor aleatria
+ + +++ + ++ ++ + + ++++++ + + ++ ++ ++ ++ ++ + ++ + + ++ ++ +++ + +++ ++ + + + + + + +++ + ++ +++ + +++ +++ + + ++ + ++++ + +++ +
1 2 3
Exemplo 84
1 2 3
Exemplo 85
1 2 3
by Geovane Krger
.................................................................................................... 57
3.7 Setas
Exemplo 86
1 2 3
\begin{pspicture}(0,-2.5)(-.5,2.5) \psset{unit=2.5cm} \psRandom[dotsize=4pt,dotstyle=o, linecolor=Yellow,fillcolor=Magenta, fillstyle=solid,randomPoints =1000](0,-1)(3,1) {\psplot{0}{3.14}{x 114 mul sin }} \end{pspicture}
4 5
3.7 Setas
Alm dos tipos de setas para PSTricks o pacote pstricks-add dene mais alguns modelos: Valor h-h H-H v-v V-V f-f F-F t-t T-T Exemplo Nome Gancho Gancho V para dentro V para fora Seta cheia para dentro Seta cheia para fora Inclinao para dentro Inclinao para fora
by Geovane Krger
3.7 Setas
nArrowsB. E quando usarmos uma combinao com pontas para dentro e para fora ao mesmo tempo, devemos usar os dois parmetros. Observe os exemplos a seguir para melhor uma compreenso. Exemplo 87
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
\psset{arrowsize=6.2pt,linecolor=red} \psline{->>}(1,0)(4,0)\newline \psline[nArrowsA=4]{->>}(1,0)(4,0)\newline \psline{<<-}(1,0)(4,0)\newline \psline[nArrowsA=4]{<<-}(1,0)(4,0)\newline \psline{<<->>}(1,0)(4,0)\newline \psline[nArrowsA=4]{<<->>}(1,0)(4,0)\newline \psline[nArrowsA=5]{<<->>}(1,0)(4,0)\newline \psline{-<<}(1,0)(4,0)\newline \psline[nArrowsB=3]{-<<}(1,0)(4,0)\newline \psline{>>-}(1,0)(4,0)\newline \psline[nArrowsB=3]{>>-}(1,0)(4,0)\newline \psline{>>-<<}(1,0)(4,0)\newline \psline[nArrowsB=3]{>>-<<}(1,0)(4,0)\newline \psline[nArrowsB=5]{>>-<<}(1,0)(4,0)\newline \psline[nArrowsA=4,nArrowsB=3]{>>->>}(1,0)(4,0)\ newline \psline[nArrowsA=5,nArrowsB=5]{<<-<<}(1,0)(4,0)\ newline \psline[nArrowsA=7]{<<-T}(1,0)(4,0)\newline \psline[nArrowsB=8]{>>-H}(1,0)(4,0)
17
18 19
by Geovane Krger
.................................................................................................... 59
3.7 Setas
Exemplo 88
1
Exemplo 89
1 2
\begin{pspicture}(0,0)(0,4) \psset{arrowsize=8pt,arrowlength=1, linewidth=1pt,nodesep=2pt,shortput= tablr} \begin{psmatrix}[colsep=12mm,rowsep=10mm] & & $R_2$ \\ & & 0 & & $R_3$\\ $e_b:S$ & 1 & & 1 & 0 \\ & & 0 \\ & & $R_1$ \\ \end{psmatrix} \ncline{h-}{1,3}{2,3}<{$e_{r2}$}>{$f_{r 2}$} \ncline{-h}{2,3}{3,2}<{$e_1$} \ncline{-h}{3,1}{3,2}^{$e_s$}_{$f_{s}$} \ncline{-h}{3,2}{4,3}>{$e_3$}<{$f_3$} \ncline{-h}{4,3}{3,4}>{$e_4$}<{$f_4$} \ncline{-h}{3,4}{2,3}>{$e_2$}<{$f_2$} \ncline{-h}{3,4}{3,5}^{$e_5$} \ncline{-h}{3,5}{2,5}<{$e_{r3}$}>{$f_{r 3}$} \ncline{-h}{4,3}{5,3}<{$e_{r1}$}>{$f_{r 1}$} \end{pspicture}
R2 er2 0 e1 es eb : S fs 1 f3 e3 f4 0
11
3 4 5 6 7 8 9 10
f2
er1
fr1 R1
12 13 14 15 16 17
18
19
Neste ltimo exemplo foi feito o uso de ferramentas que no vimos ainda, como \ncline que ser visto no pacote pst-node.
by Geovane Krger
.................................................................................................... 60
3.7 Setas
by Geovane Krger
.................................................................................................... 61
3.7 Setas
Exemplo 91
1 2 3
Exemplo 92
1 2 3
Exemplo 93
1 2 3
Exemplo 94
1 2 3 4
by Geovane Krger
.................................................................................................... 62
3.7 Setas
Exemplo 95
1 2 3
Exemplo 96
1 2 3
\begin{pspicture}(0,0)(-1,3) \psset{arrowscale=2.5,linecolor=blue} \pspolygon[ArrowInside=->](0,0)(3,3)(6,3) (6,1) \psset{linestyle=none,ArrowInside=-*, linecolor=Goldenrod} \pspolygon[ArrowInsidePos=0](0,0)(3,3)(6,3) (6,1) \pspolygon[ArrowInsidePos=1](0,0)(3,3)(6,3) (6,1) \psset{ArrowInside=-o,linecolor=YellowGreen} \pspolygon[ArrowInsidePos=0.25](0,0)(3,3) (6,3)(6,1) \pspolygon[ArrowInsidePos=0.75](0,0)(3,3) (6,3)(6,1) \end{pspicture}
7 8
10
by Geovane Krger
.................................................................................................... 63
3.7 Setas
.................................................................................................... 64
3.8 Cores
3.8 Cores
Com o pacote pstricks-add temos uma novo estilo de preenchimento para os objetos llstyle=transparent com esse estilo podemos ter objetos sobrepostos e fazer transparecer o objeto que est atrs. O nvel de transparncia do objeto dado pelo seguinte parmetro transpalpha=valor valor deve ser um nmero entre 0 e 1, onde 0 gera transparncia total e 1 nenhuma transparncia. Observao 3.3 O efeito causado pela opo de transparncia no pode ser observado no modo .dvi, para podermos visualizar o efeito temos que gerar o documento no modo .pdf. Exemplo 97
1 2 3 4 5 6 7
by Geovane Krger
.................................................................................................... 65
3.8 Cores
Exemplo 98
1 2 3 4 5 6 7 8 9 10 11 12
\begin{pspicture}(0,-5)(-7,6) \psrotate(2,-2){15}{ \psframe[fillstyle=transparent,transpalpha=0.3,fillcolor=Salmon](-1,-3)(5,5)} \psrotate(2,-2){30}{ \psframe[fillstyle=transparent,transpalpha=0.3,fillcolor=GreenYellow](-1,-3)(5,5)} \psrotate(2,-2){45}{ \psframe[fillstyle=transparent,transpalpha=0.3,fillcolor=Periwinkle](-1,-3)(5,5)} \psrotate(2,-2){45}{ \psframe[fillstyle=hlines,hatchcolor=white,hatchangle=90](-1,-3)(5,5)} \psframe[linewidth=3pt](-1,-3)(5,5) \psdots[dotstyle=+,dotangle=45,dotscale=3](2,-2) \end{pspicture}
by Geovane Krger
.................................................................................................... 66
Captulo
O Pacote pst-plot
O pacote pst-plot parte integrante do pacote pstricks, mas para podermos desfrutar de todos os seus recursos necessrio adicionarmos no prembulo este pacote \usepackage{pst-plot} Com os objetos de grcos \psdots, \psline, \pspolygon, \pscurve, \psecurve e \psccurve podemos plotar dados de vrios modos. Porm, primeiro temos que gerar os dados e entrar com pares de coordenadas (x, y). Com os macros de plotagem descritos neste captulo teremos outros modos de usar e adquirir esses dados, alm de comandos para criarmos eixos coordenados.
Na continuidade temos as funes que podemos usar para plotar grcos. \leplot[parmetros]{arquivos} \leplot*[parmetros]{arquivo .dat} leplot a mais simples das funes para plotagem que temos para usar. Ns precisamos somente de um arquivo que contenha uma lista de coordenadas (sem unidades), programas como o Mathematica geram esse tipo de lista. Os dados podem ser delimitados atravs de chaves, parnteses, vrgulas e/ou espao em branco. Limitando todos os dados com colchetes, ganharamos uma velocidade signicativa na taxa de leitura
A dos dados, mas h limites dependentes do sistema em cima de quantos dados que o LTEX pode ler em um
pedao. leplot s reconhece os estilos line, polygon e dots e ignora setas e os parmetros linearc e showpoints. \dataplot[parmetros]{comandos} \dataplot*[parmetros]{comandos} dataplot tambm usado para plotar dados gerados por outros programas, mas primeiro temos que recuperar esses dados com um dos seguintes comandos: \savedata{comando}[dados] \readdata{comando}{arquivo .dat}
A \savedata usamos para salvar uma lista de dados colocados no LTEX mesmo, e \readdata usado para
importar uma lista de dados de um arquivo externo de dados com a terminao *.dat. dados ou os dados de um arquivo deveriam seguir as mesmas regras descritas acima para os dados em \fileplot. Com \savedata, os dados devem ser delimitados por um par de [ ], e em \readdata, os dados limitados com um par de [ ] s acelera as coisas. O exemplo a seguir uma plotagem da sin x. Os dados foram gerados pelo software Mathematica,
com o comando T able[{x, N [SinIntegral[x]]}, {x, 0, 20}] e ento copiado para este documento.
by Geovane Krger
.................................................................................................... 68
Exemplo 99
1 2 3 4 5 6 7 8 9 10
\savedata{\mydata}[{{0, 0}, {1., 0.946083}, {2., 1.60541}, {3., 1.84865}, {4., 1.7582}, {5., 1.54993}, {6., 1.42469}, {7.,1.4546}, {8., 1.57419}, {9., 1.66504}, {10., 1.65835}, {11., 1.57831}, {12., 1.50497}, {13., 1.49936}, {14., 1.55621}, {15., 1.61819}, {16., 1.6313}, {17., 1.59014}, {18., 1.53661}, {19., 1.51863}, {20., 1.54824}}] \begin{pspicture}(0,0)(-4,3.5) \psset{xunit=.4cm,yunit=1.5cm} \dataplot[plotstyle=curve,showpoints=true,dotstyle=triangle]{\mydata} \psline{<->}(0,2)(0,0)(20,0) \end{pspicture}
\listplot[parmetros]{arquivo .dat} \listplot*[parmetros]{arquivo .dat} listplot um outro modo de plotar uma lista de dados. Com este macro, lista pode ser uma lista de dados (pares coordenados), delimitado apenas por um espao em branco, por exemplo: 1980 0.05 1981 0.07 1982 0.043 1983 0.033 1984 0.001 1986 0.023 1990 0.03 Com o bloco de notas, podemos salvar essa lista em um arquivo .dat, basta na hora de salvar o documento adicionar a terminao .dat depois do nome do documento, e ento usar esta lista, por exemplo: \listplot[plotstyle=curve,showpoints=true,dotstyle=triangle]{dados1.dat} .................................................................................................... 69
by Geovane Krger
Utilizando o pacote \usepackage{filecontents} temos outra maneira de salvar uma lista de dados. Para utilizarmos usamos o seguinte ambiente no prembulo do documento (depois do pacote): \begin{filecontents}{nome da lista colocando a terminao .dat} lista de dados, como a acima. \end{filecontents} e ento, usamos depois o comando \readdata para recuperar a lista de dados. Observao 4.3 Criando a lista de dados deste modo, este pacote ir criar um arquivo .dat onde est salvo o documento .tex, no devemos excluir esta lista. Do mesmo modo, se salvarmos uma lista no bloco de notas devemos colocar o arquivo .dat onde est o documento .tex. Lembrando tambm que podemos usar uma lista de dados salva com o comando \savedata visto acima. \psplot[parmetros]{xmin }{xmax }{funo} \psplot*[parmetros]{xmin }{xmax }{funo} Ns podemos usar psplot para plotar uma funo f (x). funo deve ser um cdigo de PostScript para calcular f (x), o que no muito simples de se lidar com esses cdigos; conhecendo-se ao menos o bsico, j podemos plotar vrios grcos com psplot. No apndice ?? temos alguns comandos de PostScript que podemos usar. Observao 4.4 Note que devemos usar x como varivel dependente. PostScript no designado para computao cientca, mas psplot bom para representar gracamente funes simples. Outra informao importante, que este cdigos devem ser escritos em notao inversa do que a funo, por exemplo \psplot[plotpoints=150]{0}{720}{x sin} ir plotar sin(x) de 0 a 720 graus, calculando sin(x) bruscamente a cada 3.6 graus e ento conectando os pontos com psline. No exemplo a seguir, vamos plotar as funes sin(x) cos escrito os cdigos. x 2
2
by Geovane Krger
.................................................................................................... 70
Exemplo 100
1 2 3 4 5 6 7
\begin{pspicture}(0,-2)(-2,2) \psset{xunit=.35mm,yunit=2cm,plotpoints=100} \psplot[linecolor=red,linewidth=1.5pt,plotstyle=curve]{0}{360}{x sin dup mul} \psplot{0}{360}{x sin x 2 div 2 exp cos mul} \psline{<->}(0,-1)(0,1) \psline{->}(370,0) \end{pspicture}
No prximo exemplo, vamos plotar as funes sin(x), cos(x) e sin(x) cos(x). Exemplo 101
1 2 3 4 5 6 7 8
\begin{pspicture}(0,-2)(-3,2) \psset{xunit=.25mm,yunit=2cm,plotpoints=50} \psplot[linestyle=dashed,linecolor=blue]{0}{360}{x sin} \psplot[plotstyle=dots,dotstyle=triangle]{0}{360}{x cos} \psplot[plotpoints=200,linecolor=red]{0}{360}{x sin x cos mul} \psline{<->}(0,-1)(0,1) \psline{->}(370,0) \end{pspicture}
.................................................................................................... 71
4.2 Eixos
Isto para plotagem paramtrica de (x(t), y(t)). funo o cdigo de PostScript para calcular o par x(t)y(t). Observao 4.5 Observe que neste macro a varivel dependente t e no mais x. Temos aqui uma plotagem paramtrica de (sin(t), sin(2t)). Exemplo 102
1 2 3
\begin{pspicture}(0,-1.2)(-3,1.2) \psset{xunit=1.7cm} \parametricplot[linewidth=1.2pt,plotstyle=curve ]{0}{360}{t sin t 2 mul sin} \psline{<->}(0,-1.2)(0,1.2) \psline{<->}(-1.2,0)(1.2,0) \end{pspicture}
4 5 6
O nmero de pontos que os comandos \psplot e \parametricplot calculam dado pelo parmetro plotpoints=valor valor deve ser um valor inteiro (Padro: 50). Usando curve ou suas variantes em plotstyle em vez de line e aumentando o valor de plotpoints podemos obter uma curva mais lisa.
4.2 Eixos
O macro para fazermos eixos : \psaxes[parmetros]{setas}(x0 , y0 )(x1 , y1 )(x2 , y2 ) As coordenadas devem ser coordenadas cartesianas. Elas funcionam do mesmo modo como \psgrid. O eixo x extendido de x1 at x2 e o eixo y extendido de y1 at y2 . Os eixos se intersectam em (x0 , y0 ). Exemplo 103
2
1
1 0 -1 0 1 2 3 4 5
2 3
by Geovane Krger
.................................................................................................... 72
4.2 Eixos
Se (x0 , y0 ) omitido, ento a origem (x1 , y1 ). Se (x0 , y0 ) e (x1 , y1 ) so omitidos, (0, 0) usado como origem. Exemplo 104
1 0 0 1 2 3 4
1 2 3
A numerao posto prximo aos eixos, do mesmo lado de onde parte as coordenadas (x1 , y1 ) para (x2 , y2 ). Observe os dois exemplos a seguir: Exemplo 105 2
1
2 3
Exemplo 106 2
1
2 3
Se ns colocarmos o parmetro arrows, a primeira seta usada para a ponta representada por (x1 , y1 ), enquanto que a segunda seta usada para a ponta representada por (x2 , y2 ). psaxes pode colocar marcas e rtulos nos eixos em intervalos regulares usando os seguintes parmetros: Ns devemos ter muito cuidado na hora de declarar Ox , Dx , Oy e Dy com valores no inteiros. Para que funcione tudo corretamente o nmero de digtos a direita do decimal deve ser sempre o mesmo em todos os casos. A nica exceo que Ox ou Oy podem sempre ser inteiros mesmo que Dx ou Dy no sejam. Observao 4.6 Note que, o primeiro argumento de coordenada de \psaxes determina o posio fsica da origem, mas isto no afeta a origem do rtulo. Por exemplo, se a origem (2, 2), a origem ainda rotulada 0
by Geovane Krger
.................................................................................................... 73
4.2 Eixos
Padro 0 1 0pt
Tabela 4.1: Parmetros para os rtulos dos eixos ao longo de cada eixo, ao menos que ns explicitamente faamos a mudana de Ox e Oy . Temos ainda, outros parmetros para marcas e rtulos: labels=all/x/y/none Para especicar se os rtulos iro aparecer em ambos os eixos, s no x, s no y ou em nenhum (Padro: all). showorigin=true/false Se true, ento os rtulos so colocados na origem, contando que o rtulo no termine em um dos eixos. Se falso, os rtulos nunca so colocados na origem. ticks=all/x/y/none Para especicar se marcas aparecem em ambos os eixos, se s no x, s no y ou em nenhum (Padro: all). Observao 4.7 Se usarmos ticks=none, ento labels tambm desativado. tickstyle=full/top/bottom Se tickstyle=top, ento as marcas so somente do lado do eixo contrrio ao que aparece os rtulos. Se tickstyle=bottom, as marcas so somente do lado do eixo em que esto os rtulos. full em ambos os lados (Padro: full). Observao 4.8 Se ns estivermos usando o pacote pstricks-add a opo tickstyle no funciona. No captulo ?? ns veremos isso. O parmetro a seguir tambm no funciona do mesmo modo com o pacote pstricks-add. ticksize=dimenso Isto faz a marca ser extendida de acordo com a dimenso especicada (Padro: 3pt). labelsep=dimenso Isto separa o rtulo do eixo de acordo com a dimenso especicada.
by Geovane Krger
.................................................................................................... 74
4.2 Eixos
axesstyle=axes/frame/none Podemos ter uma armao em vez de eixos, usando frames, ou no ter eixo nenhum ,mas podemos ter as marcas e os rtulos (Padro: axes). Exemplo 107 3 2 1 0 1.5 1.0 0.5 0
\begin{pspicture}(0,-.5)(-4,3) \psaxes[Dx=.5,dx=1,axesstyle=frame](-3,3) \end{pspicture}
1 2 3
1 2 3
Os parmetros usuais linestyle, llstyle e outros relacionados tambm podem ser usados com \psaxes. Exemplo 109 3 2 1
3 1 2
by Geovane Krger
.................................................................................................... 75
Captulo
1 x 1 1 1 2
2 3
76
Exemplo 111
t
1
1 x
2 3
1 1
A seguir temos algumas opes novas para os eixos. xAxis=false/true Padro true. Se false, o eixo x no produzido. yAxis=false/true Padro true. Se false, o eixo y no produzido. xyAxes=false/true
.................................................................................................... 77
tickwidth=largura Padro 0.5\pslinewidth. tickcolor=cor Padro black. Cor das marcas. xtickcolor=cor ytickcolor=cor Cor das marcas individual para cada eixo. ticklinestyle=solid/dashed/dotted/none Padro solid. Estilo da linha da marca. xticklinestyle= yticklinestyle= Ambas as opes acima para cada eixo. Exemplo 112 2 1
3 1 2
0 0 Exemplo 113 2 1 0
3 1 2
subticks=nmero
by Geovane Krger
.................................................................................................... 78
Padro 0. Com isto escolhemos a quantidade de sub marcas que dever aparecer entre uma marca e outra em ambos os eixos. xsubticks=nmero ysubticks=nmero Como a opo anterior, mas agora para cada eixo. subticksize=tamanho tamanho xsubticksize=tamanho tamanho ysubticksize=tamanho tamanho Padro 0.75. subtickwidth=largura Padro 0.25\pslinewidth. subtickcolor=cor xsubtickcolor=cor ysubticolor=cor Padro darkgray. subticklinestyle=solid/dashed/dotted/none xsubticklinestyle= ysubticklinestyle= Padro solid. Exemplo 114 2 1 0 0 1 2 3
1 2 3
by Geovane Krger
.................................................................................................... 79
1 2 3
\end{pspicture}
Exemplo 117
1 2 3
4 5
4 1 1 2 3
by Geovane Krger
.................................................................................................... 80
Exemplo 118
1 2 3 4 5 6
\begin{center} \psset{arrowscale=3} \psaxes[labelsep=2pt,yAxis=false,subticks=8]{->}(0,0)(-5,-1)(5,1)\\[1cm] \psaxes[yAxis=false,subticks=4,ticksize=-4pt 0]{->}(0,0)(5,1)(-5,-1)\\ \psaxes[yAxis=false,subticks=4,ticksize=-10pt 0]{->}(0,0)(-5,-5)(5,5)\\[.5cm] \psaxes[yAxis=false,subticks=10,ticksize=0 -10pt,labelsep=15pt]{->}(0,0)(-5,-5)(5,5) \\[1cm] \psaxes[yAxis=false,subticks=4,ticksize=0 10pt,labelsep=-15pt]{->}(0,0)(5,5)(-5,-5) \\[1cm] \psaxes[yAxis=false,subticks=4,ticksize=0 -10pt]{->}(0,0)(5,5)(-5,-5)\\[.5cm] \psaxes[yAxis=false,subticks=0]{->}(0,0)(-5,-5)(5,5)\\[1cm] \psaxes[yAxis=false,subticks=0,tickcolor=red,linecolor=blue]{->}(0,0)(5,5)(-5,-5) \\[0.5cm] \psaxes[yAxis=false,subticks=5,tickwidth=2pt,subtickwidth=1pt]{->}(0,0)(-5,-5)(5,5) \\[1cm] \psaxes[yAxis=false,subticks=0,tickcolor=red]{->}(0,0)(5,5)(-5,-5) \end{center}
8 9 10
11
12 13
3 4
2 3
1 2 1
0 0
1 1
2 2
3 3
4 4 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
1 1 1
2 2 2
3 3 3
4 4 4 5 5
4 4
3 3
2 2
1 1
0 0
1 1
2 2
3 3
4 4 5
4 4
3 3
2 2
1 1
0 0
1 1
2 2
3 3
4 4 5
by Geovane Krger
.................................................................................................... 81
1 2 3
by Geovane Krger
.................................................................................................... 82
Exemplo 120
1 2 3
100,0
xlabelFactor={qualquer coisa} ylabelFactor={qualquer coisa} Com estas duas opes podemos personalizar ainda mais os rtulos dos eixos, com elas podemos colocar qualquer coisa logo aps a numerao do rtulo. Observe os exemplos a seguir. Exemplo 121 700 106 600 106 500 106 400 106
1 2 3
0 106 15 20 25
by Geovane Krger
.................................................................................................... 83
1478
1482
1486
1490
1494
2 3
by Geovane Krger
.................................................................................................... 84
Exemplo 124 23 22
1
21 20 0 1 2 3 4
2 3
Exemplo 125 3 2
1
1 0 e0 e1 e2 e3 e4
2 3
101 100 e0 e1 e2 e3 e4
2 3
by Geovane Krger
.................................................................................................... 85
Exemplo 127
1 2 3 4 5 6
y = sin x
Temos uma outra que podemos usar para que as linhas logartmicas sejam plotadas, ou seja, podemos criar grcos mono-logs ou di-logs com esta opo. logLines=all/x/y Exemplo 128 1.0 0.5 0
1 2 3
100
101
102
103
\end{pspicture}
by Geovane Krger
.................................................................................................... 86
Exemplo 129
1 2 3 4
102
101
100 100
101
102
103
104
105
by Geovane Krger
\psPiH=1.570796327 corresponde a
. 2 . 3 3 .
1 2
4
3
Exemplo 131
1 2
Exemplo 132
1 2
3 2
1
5
by Geovane Krger
.................................................................................................... 88
Exemplo 133
1
\psset{xunit=\pstRadUnit} \begin{pspicture}(0,-1.25)(-1,1.25) \psaxes[trigLabels=true,trigLabelBase =3]{->}(0,0)(-0.5,-1.25)(6.5,1.25) \psplot[linecolor=blue,linewidth=1.5pt ]{0}{6}{x Pi 3 div mul RadtoDeg sin} \end{pspicture}
2 3
2 3
4 3
5 3
1
5
Exemplo 134
1
2 3
Exemplo 135
1 2
3 2
5 2
7 2
1
5
possvel modicar as unidades do eixo x e tambm os valores de dx para que os rtulos quem posicionados corretamente, o que foi feito nos dois exemplos acima. Muitas vezes no to fcil acertar este valores, mas isto bem til. No prximo exemplo, vamos xar a unidade em x para que corresponde 1.5707962327 e dx 2 2 xaremos em em relao a unidade de 1cm. O comprimento do eixo x 6.4 unidades, que corresponde a 3 8.3 1.5707962327 13cm e a funo ser plotada de 0 a 4 = 12.56637061. =
by Geovane Krger
.................................................................................................... 89
Exemplo 136
1 2
\begin{pspicture}(0,-2)(-1,2) \psaxes[xunit=\psPiH,trigLabels=true,trigLabelBase=3,dx=0.666667]{->}(0,0)(-0.5,-2) (8.3,2) \psplot[linecolor=Dandelion,linewidth=1.5pt]{0}{\psPiFour}{x RadtoDeg dup sin exch 1.1 mul cos add} \end{pspicture}
2 3
4 3
5 3
7 3
8 3
10 3
11 3
1 2
Exemplo 137
1 2 3
\begin{pspicture}(0,-2)(-1,2) \psaxes[xunit=\psPi,dx=0.25,trigLabels=true]{->}(0,0)(-0.2,-2)(3.2,2) \psplot[xunit=0.25,plotpoints=500,linecolor=Dandelion,linewidth=1.5pt]{0}{37.70}{x RadtoDeg dup sin exch 1.1 mul cos add} \end{pspicture}
1 2
2 3 4 5 6 7 8 9 10 11 12
by Geovane Krger
.................................................................................................... 90
Exemplo 138
1 2
\begin{pspicture}(0,-2)(-1,2) \psplot[xunit=0.0625,linecolor=Dandelion,linewidth=1.5pt,plotpoints =5000]{0}{150.80}{x RadtoDeg dup sin exch 1.1 mul cos add} \psaxes[trigLabels=true,xunit=\psPi,dx=0.5,Dx=8,xsubticks=2]{->}(0,0)(-0.1,-2) (3.2,2) \end{pspicture}
8 1 2
16
24
32
40
48
escrever a expresso usando a notao algbrica clssica e colocar entre parnteses as notaes internas. As quatro operaes fundamentais usando a opo algebraic so, obviamente, + - * /, e o exponencial . Outras funes denidas so: sin, cos, tan, acos, asin em radianos; log, ln;
by Geovane Krger
.................................................................................................... 91
ceiling, oor, truncate, round; sqrt raiz quadrada; abs valor absoluto; fact fatorial; Sum somatrios; IfTE para casos simples. Estas opes podem ser usadas com todos os macros de plotagem. Lembrando que usando a opo algebraic todos os ngulos devem ser usados em radianos. Para usar o macro \parametricplot, as duas partes devem ser divididas pelo caractere |. Exemplo 139
1 2
Exemplo 140
1 2
3 4 5 6 7 8
3 2 1
3 2
5 2
7 2
1 2 3
by Geovane Krger
.................................................................................................... 92
\psset{algebraic=true,plotpoints=501,yunit=3} \def\getColor#1{\ifcase#1 black\or red\or magenta\or yellow\or green\or Orange\or blue\or DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\or Cyan\or Apricot\or SpringGreen \or BlueGreen\or Tan\fi} \begin{pspicture}(0,-1.5)(-1,1.5) \psclip{\psframe[linecolor=white](-1,-1.5)(16,1.5)} \psplot[linewidth=3pt]{0}{14}{sin(x)} \multido{\n=1+1}{15}{% \psplot[linewidth=1pt,linecolor=\getColor{\n}]{0}{14}{% Sum(ijk,0,1,\n,(-1)^ijk*x^(2*ijk+1)/fact(2*ijk+1))}} \endpsclip \psaxes(0,0)(-.2,-1.5)(15,1.5) \end{pspicture}
4 5 6 7 8 9 10 11 12
10
11
12
13
14
15
by Geovane Krger
.................................................................................................... 93
Exemplo 142
\psset{algebraic=true,plotpoints=100,yunit=2,xunit=.5} \def\getColor#1{\ifcase#1 black\or red\or magenta\or yellow\or green\or Orange\or blue\or DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\or Cyan\or Apricot\or SpringGreen\or BlueGreen\or Tan\or black\fi} \begin{pspicture}(0,-1.5)(-16,1.5) \psclip{\psframe[linecolor=white](-16,-1.5)(16,1.5)} \multido{\n=1+1}{16}{% \psplot[linewidth=1.2pt,linecolor=\getColor{\n}]{-15}{15}{% Sum(ijk,0,1,\n,(-1)^ijk*x^(2*ijk)/(2^(2*ijk)*fact(ijk)^2))}} \endpsclip \psaxes[labelFontSize=\tiny](0,0)(-15,-1.5)(15,1.5) \end{pspicture}
15 13 11 987654321 14 12 10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
x > 1.5
by Geovane Krger
.................................................................................................... 94
Exemplo 143
1 2 3 4 5
4 3 2 1 0 -1 -2 -3 -4 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
Exemplo 144
3 2
1
1 0 -1 -2 -3 -3 -2 -1 0 1 2 3
4 5 6 7
by Geovane Krger
.................................................................................................... 95
Exemplo 145
1 2 3 4 5 6 7 8
8 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
by Geovane Krger
.................................................................................................... 96
\def\barData{0 0.03 1 0.11 2 0.28 3 0.84 4 6.70 5 8.55 6 8.77 7 11.09 8 7.18 9 6.20 10 5.78 11 4.19 12 2.37 13 2.26 14 1.68 15 1.03 16 1.37 17 1.34 18 0.92 19 0.67 20 0.87 21 1.20 22 1.98 23 3.99 24 5.08 25 5.17 26 5.78 27 4.44 28 0.11} \psset{xunit=.44cm,yunit=.3cm} \begin{pspicture}(0,-3)(-4,13) \psaxes[axesstyle=axes,Ox=1466,Oy=0,Dx=4,Dy=2,ylabelFactor={\,\%}]{-}(29,12) \listplot[shadow=true,linecolor=blue,plotstyle=bar,barwidth=0.3cm,fillcolor=red, fillstyle=solid]{\barData} \rput{90}(-3,6.25){Amount} \end{pspicture}
8 9
by Geovane Krger
.................................................................................................... 97
Exemplo 147
1 2 3 4
5 6
Exemplo 148
1 2 3 4 5 6 7
by Geovane Krger
.................................................................................................... 98
1 2 3 4
.................................................................................................... 99
Exemplo 150
1 2 3 4 5 6
250000 200000 150000 100000 50000 0 0 100 200 300 400 500 600 700 800 900 1000
Exemplo 151
1 2 3 4 5 6 7
250000 200000 150000 100000 50000 0 0 100 200 300 400 500 600 700 800 900 1000
by Geovane Krger
.................................................................................................... 100
Exemplo 152
1 2 3 4 5 6
250000 200000 150000 100000 50000 0 0 100 200 300 400 500 600 700 800 900 1000
Exemplo 153
1 2 3 4 5 6
250000 200000 150000 100000 50000 0 0 100 200 300 400 500 600 700 800 900 1000
by Geovane Krger
.................................................................................................... 101
Exemplo 154
1 2 3 4 5
250000 200000 150000 100000 50000 0 0 100 200 300 400 500 600 700 800 900 1000
xStar= xStep= xEnd= Os valores padro so: {}, 0, {}, respectivamente. No caso anterior, nStep representa a quantidade de passos que era dados em relao aos dados, por exemplo nStep=50 quer dizer que sero plotados de 50 em 50 dados, j o caso xStep representa a quantidade de passos que ser dados em relao ao eixo x, ou seja xStep=2 quer dizer que o prximo ponto plotado ser o que est sobre o valor 2 no eixo x ou o mais prximo disso logo aps o 2. O mesmo vale para o y nas opes que sero vistas logo aps os exemplos. Neste exemplo mostraremos o uso de uma mesma plotagem com diferente unidades e um valor diferente para xStart. A curva azul representa a curva original plotada dos dados salvos. Para mostra a importncia de apenas uma parte desta curva, iremos plotar um pedao desta curva com um grande valor para yunit e iniciar o valor de x em xStar=0.35. Com isto possvel ter um pedao da curva com um zoom em relao ao grco original.
by Geovane Krger
.................................................................................................... 102
Exemplo 155
1 2 3 4
\readdata{\data}{data3.dat} \begin{pspicture}(-1.5,-1)(14,7) \psset{xunit=10cm, yunit=0.01cm} \psaxes[Dx=0.25,Dy=100,dy=100\psyunit,ticksize=-4pt 0,labelFontSize={\footnotesize }]{->}(0,0)(0,-100)(1.4,520) \uput[0](1.4,0){\textsf{t[s]}} \rput(-0.125,200){\psrotateleft{\small Fluxo [ml/s]}} \listplot[linewidth=2pt,linecolor=blue]{\data} \rput(0.4,300){ \pscustom[yunit=0.04cm,linewidth=1pt]{% \listplot[xStart=0.355]{\data} \psline(1,-2.57)(1,0)(0.355,0) \fill[fillstyle=hlines,fillcolor=gray,hatchwidth=0.4pt,hatchsep=1.5pt,hatchcolor= red]% \psline[linewidth=0.5pt]{->}(0.7,0)(1.05,0) }} \psline[linewidth=.01]{->}(0.75,300)(0.4,20) \psline[linewidth=.01]{->}(1,290)(1.1,440) \rput(1.1,470){\footnotesize Volume que Vazou} \psline[linewidth=.01]{->}(0.78,200)(1,100) \rput[l](1.02,100){\footnotesize Volume Final} \end{pspicture}
5 6 7 8 9 10 11 12
13 14 15 16 17 18 19 20
500 400
Fluxo [ml/s]
t[s]
100
yStart=
by Geovane Krger
.................................................................................................... 103
yStep= yEnd= Os valores padro so: {}, 0, {}, respectivamente. Exemplo 156
1 2 3 4 5 6 7 8
\readdata{\data}{data.dat} \begin{pspicture}(0,-.5)(-2,6) \psset{xunit=0.125mm,yunit=0.0002mm} \psaxes[axesstyle=frame,Dx=100,dx=100,Dy=50000,dy=50000](1000,300000) \psset{linewidth=0.1pt,linestyle=dashed,linecolor=Dandelion} \psline(0,40000)(1000,40000) \psline(0,175000)(1000,175000) \listplot[yStart=40000,yEnd=175000,linewidth=3pt,linecolor=SpringGreen,plotstyle= dots]{\data} \end{pspicture}
300000 250000 200000 150000 100000 50000 0 0 100 200 300 400 500 600 700 800 900 1000
plotNo= plotNoMax= Por padro, o macro de plotagem espera por dados da forma xy, mas quando ns tivermos dados com vrios para y, como x y1 y2 . . . ymax ? Neste caso a opo plotNo escolhe qual o valor de y dever ser plotado (padro 1) e a opo plotNoMax fornece a quantidade de ys presentes nos dados. Para o prximo exemplo, temos a seguinte lista de dados: 0 0 3.375 0.0625
by Geovane Krger
.................................................................................................... 104
5.375 7.1875 5.75 2.1875 -1.9375 -5.125 -6.4375 -4.875 0 5.5 6.8125 5.25
7.1875 8.375 7.75 5.75 2.1875 -1.8125 -5.3125 -7.1875 -7.625 -6.3125 -2.75 2.875
4.5 6.25 6.6875 5.9375 4.3125 0.875 -2.6875 -4.875 -5.625 -5.8125 -4.75 -0.75
Neste caso podemos plotar os mltiplos dados sem qualquer modicao no arquivo de dados. Exemplo 157
1 2 3 4 5 6 7 8 9
5.0 2.5 0 10 2.5 5.0 7.5 .................................................................................................... 105 20 30 40 50 60 70 80 90 100 110 120 130 140
by Geovane Krger
7 6 5 4 3 2 1 x 1 2 3 4 5 6 7
y=0.755679 x+1.84104
E com a opo PstDebug=1 a equao da reta mostrada abaixo do grco. No prximo exemplo vamos utilizar a seguinte lista de dados .................................................................................................... 106
by Geovane Krger
0.003298697 1.397785583 0.003193358 1.615489564 0.003094538 2.044019006 0.003001651 2.259240127 e vamos fazer tambm o uso do comando \pstScalePoints que ser visto logo aps este exemplo. Exemplo 159
1 2 3 4 5 6 7
\readdata{\data}{LSM.dat} \begin{pspicture}(0,-1)(-1,8) \pstScalePoints(10000,1){ 0.003 sub }{} \psset{lly=-1.75cm} \psgraph[arrows=->,Ox=0.0030,Dx=0.0001,dx=\psxunit](0,0)(3.2,3){10cm}{5cm} \listplot[showpoints=true,linewidth=1pt,linecolor=Dandelion]{\data} \listplot[PstDebug=1,plotstyle=LSM,linewidth=0.2pt,linestyle=dashed,xStart=-0.25, xEnd=3.3]{\data} \endpsgraph \end{pspicture}
8 9
0 0.0030
y=-0.162184 x+2.27634
by Geovane Krger
\pstScalePoints(escala x, escala y){xPS}{yPS} escala x e escala y so valores decimais que representam um fator de escala, xPS e yPS so cdigos adicionais de PostScript que adicionam, multiplicam, . . . , aos valores x e y dos dados salvos. No exemplo a seguir, o valor 3 adicionado aos valores ys dos dados e depois escalado com um fator de 0.5. Observe na linha azul que x = 0 e y(0) = (0 + 3) 0.5 = 1.5. Exemplo 160
5 4 3 2
1 2 3 4 5 6
\def\data{% 0 0 1 3 2 4 3 1 4 2 5 3 6 6 } \begin{pspicture}(0,-1)(-1,6) \psaxes{->}(0,0)(6,6) \listplot[showpoints=true,linecolor=red]{\ data} \pstScalePoints(1,0.5){}{3 add} \listplot[showpoints=true,linecolor=blue]{\ data} \end{pspicture}
1 0 0 1 2 3 4 5
by Geovane Krger
.................................................................................................... 108
1 1 1 1 x
\psplot[linecolor=SpringGreen,polarplot=true ]{0}{360}{x sin dup mul x cos dup mul add sqrt } \end{pspicture}
\psset{plotpoints=200,unit=0.75}
2 1 4 3 2 1 1 2 1 2
\begin{pspicture*}(-5,-5)(3,3) 3 \psaxes[labelsep=.75mm,ticksize=2pt,labelFontSize=\
2
footnotesize,linewidth=0.17mm]{->}(0,0) (-4.99,-4.99)(3,3)[$x$,0][$\pi/2$,90]
4 5
\psset{linewidth=.35mm,polarplot=true} \psplot[linecolor=red]{140}{310}{3 neg x sin mul x cos mul x sin 3 exp x cos 3 exp add div} \psplot[linecolor=cyan]{140}{310}{6 neg x sin mul x cos mul x sin 3 exp x cos 3 exp add div} \psplot[linecolor=blue]{140}{310}{9 neg x sin mul x cos mul x sin 3 exp x cos 3 exp add div} \end{pspicture*}
3 4
7
2 1 2 1 1 2 1 2 x
2 3
4 5 6 7 8
\psset{linewidth=.35mm,plotstyle=curve,polarplot=true} \psplot[linecolor=red]{0}{360}{3 x mul cos 1 mul} \psplot[linecolor=green]{0}{360}{3 x mul cos 2 mul} \psplot[linecolor=blue]{0}{360}{3 x mul cos 3 mul} \end{pspicture}
by Geovane Krger
.................................................................................................... 109
/2 3 2 1 3 2 1 1 2
6 1 2 3
\psset{plotpoints=800} \begin{pspicture}(-3.5,-5)(3,5) \psaxes[labelsep=.75mm,ticksize=2pt, labelFontSize=\scriptsize,linewidth=0.17mm ]{->}(0,0)(-3,-4)(4,4)[$x$,0][$\pi/2$,90] \psset{linewidth=.35mm,polarplot=true} \psplot[linecolor=RedOrange ]{0}{1800}{2.718281 x cos exp 4 x mul cos 2 mul sub x 4 div sin 3 exp add} \end{pspicture}
x
4 5
3 4
cos 5x 2
\psset{plotpoints=200} \begin{pspicture}(-3,-3)(3.5,3.5) \psaxes[labelsep=.75mm,ticksize=2pt, labelFontSize=\scriptsize,linewidth=0.17mm ]{->}(0,0)(-3,-3)(3.5,3.5)[$x$,0][$y$,90] \psset{linewidth=1pt,polarplot=true} \psplot[linecolor=BurntOrange]{0}{720}{2 x 5 mul 2 div cos add} \end{pspicture}
by Geovane Krger
.................................................................................................... 110
\psset{plotpoints=800,unit=.8} \begin{pspicture}(-9,-7)(7,7.5) \psaxes[labelsep=.75mm,arrowlength=1.75,ticksize=2pt,linewidth=0.17mm]{->}(0,0) (-7,-7)(7,7)[$x$,0][$\pi/2$,90] \psset{linewidth=1.5pt,plotstyle=curve,polarplot=true} \psplot[linecolor=red]{0}{360}{10 x mul sin 7 mul} \psplot[linecolor=Orange]{0}{360}{10 x mul sin 6 mul} \psplot[linecolor=yellow]{0}{360}{10 x mul sin 5 mul} \psplot[linecolor=green]{0}{360}{10 x mul sin 4 mul} \psplot[linecolor=blue]{0}{360}{10 x mul sin 3 mul} \psplot[linecolor=cyan]{0}{360}{10 x mul sin 2 mul} \psplot[linecolor=Violet]{0}{360}{10 x mul sin 1 mul} \end{pspicture}
4 5 6 7 8 9 10 11 12
/2 6 5 4 3 2 1 7 6 5 4 3 2 1 1 2 3 4 5 6 7 1 2 3 4 5 6 x
by Geovane Krger
.................................................................................................... 111
Captulo
O Pacote pst-node
Todos os comandos descritos neste captulo fazem parte do pacote \usepackage{pst-node} Este pacote faz parte do pacote pstricks, mas para garantir o funcionamento de todas as opes devemos carreglo individualmente. Os nodos e as conexes de nodos so macros que nos permitem conectar informaes e lugares marcados, sem mesmo conhecer a posio exata do que queremos conectar ou onde as linhas deveriam conectar. Estes macros so muito teis na construo de grafos e rvores, diagramas matemticos, diagramas lingsticos de sintaxe e conexes de idias com qualquer coisa. Existem trs componentes para os macros de nodos: Denies de Nodos: permite-nos atribuir um nome e forma para um objeto. Conexes de Nodos: permite conectar dois nodos identicados pelos seus nomes. Rtulos Para Nodos: permite que ns xemos rtulos nas conexes dos nodos. Ns podemos usar estes macros em qualquer lugar. A melhor maneira de posicionarmos eles depende onde esto sendo aplicados. Para maior exibiliade, ns podemos usar os nodos no ambiente pspicture, posicionar e rotacion-los com o comando \rput. Podemos us-los tambm em ambientes com alinhamentos ou listas. pst-node ainda contm um ambiente especial, \psmatrix, o qual designado para posicionar nodos em uma grade, como diagramas matemticos e grafos. Este pacote ainda contm um alto nvel de macros para rvores, estes macros esto descritos no Captulo ??. Portanto, basta usarmos a imaginao para tirarmos o melhor proveito deste pacote.
112
6.1 Nodos
6.1 Nodos
Nodos tm um nome, um limite e um centro. Observao 6.1 O nome dos nodos para fazer referncia quando zermos a conexo entre os nodos. Ns devemos especicar o nome como um argumento dos comandos de nodos. O nome deve conter somente letras e nmeros, mas sempre deve iniciar com uma letra. Nomes mal feitos podem ocasionar erros, por isso, faa nomes simples, de preferncia somente letras. O centro de um nodo onde ca o ponto de conexo. O limite para determinar onde conectar uma conexo de nodo. Os vrios nodos diferem em como eles determinam o centro e limite. Eles tambm diferem em que tipo de objeto eles so criados. A seguir temos os tipos de nodos: \rnode[ponto de referncia]{nome}{coisas} este comando coloca as coisas em um box. O centro do nodo o ponto de referncia, o qual pode ser especicado do mesmo modo que o do comando \rput. \Rnode[parmetros]{nome}{coisas} este comando tambm faz uma caixa, mas o centro xo. A diferena entre estes dois comandos com relao a determinao do centro do nodo. Com Rnode o centro relativo a linha de base e com rnode o centro relativo a opo escolhida e varia de acordo com o tamanho do objeto que determina o nodo. Observe as diferenas: Exemplo 167
1 2
sp
SP
3 4 5
Exemplo 168
1 2
sp
SP
3 4 5
by Geovane Krger
.................................................................................................... 113
6.1 Nodos
\pnode(x, y){nome} Este comando cria um nodo sem dimenso no ponto (x, y). \cnode[parmetros](x, y){raio}{nome} . \cnode*[parmetros](x, y){raio}{nome} . Isto desenha um crculo como nodo com raio especicado em raio. A verso estrelada elimina a borda do crculo. Exemplo 169
1 2 3 4 5
\Cnode[parmetros](x, y){nome} \Cnode*[parmetros](x, y){nome} Este comando como \cnode, mas neste caso o raio deve ser especicado como um parmetro denido pela opo radius=dimenso Este comando conveniente quando queremos muitos nodos na forma de crculos mas todos com o mesmo raio. \circlenode[parmetros]{nome}{coisas} \circlenode*[parmetros]{nome}{coisas} Isto uma variao do comando \pscirclebox. \ovalnode[parmetros]{nome}{coisas} \ovalnode*[parmetros]{nome}{coisas} .................................................................................................... 114
by Geovane Krger
6.1 Nodos
Isto uma variao do comando \psovalbox. \cnodeput[parmetros]{ngulo}(x, y){nome}{coisas} \cnodeput*[parmetros]{ngulo}(x, y){nome}{coisas} Este uma variao do comando \cput. Exemplo 170
1 2
Crculo
Elipse
3 4
\dianode[parmetros]{nome}{coisas} \dianode*[parmetros]{nome}{coisas} como o comando \diabox. \trinode[parmetros]{nome}{coisas} \trinode*[parmetros]{nome}{coisas} Variao do comando \tribox. Exemplo 171 Losango
1 2 3 4
Tringulo
by Geovane Krger
Exemplo 172
+
1 2 3 4 5
\fnode[parmetros](x, y){nome} \fnode*[parmetros](x, y){nome} Este comando como \psframe colocado dentro de um rnode, mas mais simples de usar. Exemplo 173
1 2 3 4 5
Existem duas diferenas entre \fnode e \psframe: Temos apenas um argumento (opcional) de coordenada, que neste caso da o centro da caixa. E a largura e altura da caixa e dado pelo parmetro framesize=dim1 dim2 se a dimenso 2 for omitida, ento teremos um quadrado. Padro 10pt.
.................................................................................................... 116
Observao 6.2 Quando um nome de nodo no pode ser encontrado na mesma pgina em que est o comando de conexo de nodo, provavelmente no teremos nenhuma conexo ou ento algo nada a ver. Entretanto, O
A LTEX no reportar nenhum erro.
As conexes de nodo usam muitos parmetros grcos usuais do PSTricks e mais alguns especiais que veremos aqui. Iniciaremos com um que pode ser aplicado a todas as conexes de nodo: nodesep=dimenso nodesep uma borda em torno dos nodos que adicionado com o propsito de determinar onde conectar as linhas. Padro 0pt. Ainda podemos indicar valores individuais para cada um dos nodos com os parmetros nodesepA=dimenso nodesepB=dimenso Vamos iniciar agora os comandos de conexo de nodo. \ncline[parmetros]{setas}{nodoA}{nodoB} Isto desenha uma linha reta entre os nodos. Exemplo 174 Idia 2
1 2 3 4 5
Idia 1
by Geovane Krger
.................................................................................................... 117
O ngulo entre o arco e a linha entre os dois nodos pode ser modicado com o parmetro arcangle=ngulo Padro 8. Para o prximo grupo de conexes de nodo, ns podemos especicar o ngulo entre os nodos pelo parmetro angle=ngulo ou especicar o ngulo em cada um dos nodos pelos parmetros angleA=ngulo angleB=ngulo onde o padro 0. Podemos especicar ainda o comprimento do segmento de linha onde feita as conexes dos nodos (os braos) pelo parmetro arm=dimenso ou especicar o comprimento individual para cada um pelos parmetros armA=dimenso armB=dimenso Padro 10pt. Todas as conexes de nodos consistem de vrios segmentos de linhas, incluindo os braos. O valor de linearc pode ser usado para arredondar os cantos. A seguir temos os outros comandos, iniciando pelo mais simples de todos. \ncdiag[parmetros]{setas}{nodoA}{nodoB} Um brao desenhado em cada nodo, unido pelo ngulo angleA ou angleB, e com comprimento de armA ou armB. Assim, os dois braos esto conectados por uma linha direta, de modo que a linha tenha trs segmentos.
by Geovane Krger
.................................................................................................... 118
Nodo B
Ns podemos xar um ou ambos os comprimentos do brao para zero. Por exemplo se arm=0, os nodos so conectados por uma linha reta como no comando \ncline, mas a diferena que desse modo ns podemos determinar onde a linha conectada. Compare isto no exemplo abaixo. Exemplo 177 XX
1 2 3 4
Raiz
5 6 7
YY
\ncdiagg[parmetros]{setas}{nodoA}{nodoB} similar ao comando \ncdiag, mas neste caso somente o brao para o nodo A desenhado. O nal deste brao conectado diretamente ao nodo B. Compare \ncdiagg com \ncdiag quando armB=0. Exemplo 178
1
2 3 4 5
Se usarmos \ncdiagg com armA=0, ento teremos uma linha reta unida no nodo A com um ngulo que ns podemos especicar e o ngulo do nodo B determinado automaticamente.
by Geovane Krger
.................................................................................................... 119
\ncbar[parmetros]{setas}{nodoA}{nodoB} Com este comando, os braos so posicionados de acordo com o parmetro angle. A linha que une os dois braos forma sempre uma ngulo de 90o com os mesmos e apenas o comprimento de um dos braos pode ser alterado, pois o outro alterado automaticamente para que a linha continue formando 90o com os braos. Exemplo 179
1 2
Conectando as palavras!
3 4 5
\ncangle[parmetros]{setas}{nodoA}{nodoB} Este um dos comandos de conexo de nodo mais complicados. Primeiramente, neste comando o comprimento do brao A xo, s podemos alterar o comprimento do brao B e o comprimento do brao A se ajustar automaticamente para que a unio dele com a linha forme um ngulo de 90o , ou seja um ngulo reto. Geralmente \ncangle faz trs segmentos de linha. Observe os exemplos a seguir: Exemplo 180 Nodo A
1 2 3 4
Nodo B
Nodo B
by Geovane Krger
.................................................................................................... 120
Nodo B
4 5
\ncangles[parmetros]{setas}{nodoA}{nodoB} similar a \ncangle, mas o comprimento do brao A neste caso pode ser xado pelo parmetro armA. O brao A conectado ao brao B atravs de outros dois segmentos de linhas, onde o brao A forma um ngulo reto com o primeiro segmento que forma um ngulo reto com o segundo segmento. O ngulo com que o ltimo segmento unido ao brao B e o comprimento do segmento depende da posio do dois braos. Geralmente \ncangles produz um total de quatro segmentos de linhas. Exemplo 183 Nodo A
1 2 3 4
Nodo B
Nodo B
\ncloop[parmetros]{setas}{nodoA}{nodoB} Este comando da mesma famlia que \ncangle e \ncangles, mas agora teremos cinco segmentos de linha desenhados. Uma conseqncia disto, que \ncloop pode alcanar os lados opostos dos nodos. O
by Geovane Krger
.................................................................................................... 121
comprimento dos braos so xados por armA e armB. Iniciando no brao A, \ncloop faz um ngulo de 90 graus com a esquerda desenhando um segmento de comprimento loopsize=dimenso Este segmento conecta o brao B do mesmo modo que o brao A conecta o brao B com \ncline; isto , dois segmentos a mais so desenhados, os quais unem o primeiro segmento e cada um dos outros sempre com um ngulo reto, e ento, unem ao brao B. Por exemplo Exemplo 185
1 2
loopsize
Um loop
4 5 6
Neste exemplo acima, o nodo A e o nodo B so o mesmo. Ns podemos fazer isso com todos os tipos de conexo de nodos (mas isto nem sempre faz sentido). O prximo exemplo, \ncloop conecta dois nodos diferentes: Exemplo 186
1 2 3
\begin{pspicture}(-1,0)(0,0) \parbox{4cm}{ \rnode{a}{\psframebox{\large Incio}} \hspace*{\fill} \rnode{b}{\psframebox{\large Fim}} \ncloop[angleA=180,loopsize=1.5,arm=.5,linearc =.6,nodesep=3pt]{-<}{a}{b}} \end{pspicture}
Incio
Fim
4 5 6
As duas conexes de nodo a seguir so um pouco diferente do restante. \nccurve[parmetros]{setas}{nodoA}{nodoB} Este comando desenha uma curva de Bezier entre os dois nodos
by Geovane Krger
.................................................................................................... 122
Nodo A
O ngulo com que a curva une os pontos dada pelos parmetro j vistos acima. A distncia entre os pontos de controle da curva dado pelo parmetro ncurv=nmero Padro 0.67. Ainda podemos especicar cada ponto de controle por ncurvA= ncurvB= Um valor pequeno d uma curva mais apertada. A distncia entre o incio do arco e o primeiro ponto de controle
1 2
Nodo A
\nccircle[parmetros]{setas}{nodoA}{raio} desenha um crculo, ou parte de um crculo, que, se completa, passando pelo centro do nodo no sentido antihorrio, com um ngulo de angleA. \nccircle s pode ser usado para conectar um nodo a si mesmo, ele a nica conexo de nodo com est propriedade; e tambm especial pelo argumento adicional usado para especicar o raio do crculo.
by Geovane Krger
.................................................................................................... 123
Exemplo 189
1 2 3
Nodo
Nodo
4 5 6
As ltimas duas conexes de nodos tambm so especiais. Estas no conectam os nodos com uma curva aberta, elas colocam os nodos dentro de um box, ou um box curvado. Em ambos os casos, a metade da largura do box dado pelo parmetro boxsize=dimenso Padro 0.4cm. Ns devemos sempre ajustar esse valor corretamente para que os nodos quem dentro do box. O parmetro boxsize na verdade xa j os parmetros boxheight e boxdepth. O m do box pode ser extendido alm dos nodos pelos parmetros nodesepA e nodesepB. Os comandos so: \ncbox[parmetros]{nodoA}{nodoB} Este coloca os nodos dentro de um box com linhas retas. Exemplo 190
1
Idia 1
2 3 4
Idia 2
\ncarcbox[parmetros]{nodoA}{nodoB} Este coloca os nodos dentro de um box curvado, com arcangle de afastamento da linha direta entre os dois nodos.
by Geovane Krger
.................................................................................................... 124
Exemplo 191
1
2 3 4
O arco desenhado no sentido anti-horrio do nodo A para o nodo B. Existe ainda um outro parmetro para todos os tipos de conexes de nodo, exceto \ncarcbox, offset=dimenso que desloca o ponto onde feito a conexo para cima por dimenso (isto, assumindo que as conexes partem sempre da da esquerda para a direita). Padro 0pt. Tambm pode ser feito individualmente para cada nodo: offsetA=dimenso offsetB=dimenso Existe dois maneiras principais de se usar este parmetro. Primeira, nos deixa fazer duas linhas paralelas como o comando \ncline: Exemplo 192 Y
1 2 3 4
5 6
Segundo, quando zermos vrias conexes com um mesmo nodo: Exemplo 193
1 2 3 4 5
by Geovane Krger
.................................................................................................... 125
Mais um parmetro de truque: usando o parmetro de borda, border=dimenso ns podemos criar a impresso de que uma conexo de nodo passa por sobre a outra. Padro 0pt. Exemplo 194
1
2 3 4
2
5
\end{pspicture}
Observao 6.3 Ns descrevemos nesta seo todos os tipos de comandos especiais para a unio de nodos, mas tambm podemos usar qualquer um dos outros comandos de grcos do pacote pstricks, como \psline em outros.
by Geovane Krger
\begin{pspicture}(-1,-2)(4.5,2) \cnode(0,0){.5cm}{R} \cnode*(4,2){4pt}{A} \cnode*(4,0){4pt}{B} \cnode*(4,-2){4pt}{C} \ncline[nodesep=3pt]{R}{A} \naput{acima} \ncline[nodesep=3pt]{R}{B} \ncput*{entre} \ncline[nodesep=3pt]{R}{C} \nbput{abaixo} \end{pspicture}
acima
3 4 5
entre
6 7 8
abaixo
9 10 11 12
A verso estrelada faz com que no aparea nenhuma linha cruzando o texto. \naput e \nbput usam o mesmo algoritmo de \uput para colocar os rtulos, e a distncia entre a linha e os rtulos dado por labelsep (pelos menos se as linhas forem retas). \ncput usa o mesmo sistema de \rput para selecionar o ponto de referncia. Ns podemos escolher este ponto de referncia usando o parmetro ref=referncia Padro c. A rotao dos rtulos controlado pelo parmetro grco nrot=rotao Padro 0. rotao pode ser qualquer forma de ngulo, pode ser tambm as formas que so usadas para o comando \rput e ainda pode ser da forma {:ngulo} onde ngulo pode ser :U para up=0o , :L para left=90o , :D para down=180o e :R para right=270o . Estes modelos de ngulos tambm podem ser usados com o comando \rput. O ngulo medido com respeito conexo de nodo. Por exemplo, se o ngulo {:U}, ento o rtulo colocado paralelamente a conexo de nodo. Com outros comandos que temos para colocar rtulos, ns realmente temos muito controle sobre a posio deles.
by Geovane Krger
.................................................................................................... 127
Exemplo 196
1
p com
n ime
to
2 3 4
\ncput*[nrot=:U]{comprimento} 5 \end{pspicture}
A posio do rtulo na conexo de nodo controlado pelo parmetro npos=nmero bruscamente, nmero funciona de acordo com o seguinte esquema: Cada conexo de nodo tem um ou mais segmentos, incluindo os braos e as linhas de conexo. Um nmero entre 0 e 1 coloca um rtulo no primeiro segmento do nodo A para B, onde os valores intermedirios vo do incio do segmento para o m, isto , 0,5 o meio do segmento. Um nmero entre 1 e 2 coloca um rtulo no segundo segmento, e assim por diante. Cada tipo de conexo de nodo tem seu valor padro prprio para npos. Na tabela a seguir temos os valores padro para cada conexo de nodo. Conexo \ncline \nccurve \ncarc \ncbar \ncdiag \ncdiagg \ncangle \ncangles \ncloop \nccircle \ncbox \ncarcbox Veja um exemplo: Segmentos 1 1 1 3 3 2 3 4 5 1 4 4 0 0 0 0 0 0 0 0 0 0 0 0 Alcance pos pos pos pos pos pos pos pos pos pos pos pos 1 1 1 3 3 2 3 4 5 1 4 4 Padro 0.5 0.5 0.5 1.5 1.5 0.5 1.5 1.5 2.5 0.5 0.5 0.5
by Geovane Krger
.................................................................................................... 128
Nodo B
Com \ncbox e \ncarcbox, os segmentos correm no sentido anti-horrio, comeando no lado mais baixo do box. Entretanto, com \nbput o rtulo ca na parte externa do box, e com \naput o rtulo ca na parte interna do box. Exemplo 198
1 2
Fora
De
o ntr
5 6 7
Se ns selecionarmos o parmetro shortput=none/nab/tablr/tab (padro none), para nab, ento imediatamente aps a conexo de nodo ns podemos usar em vez de \naput e _ em vez de \nbput. Exemplo 199
1
2 3 4 5 6
7 8
by Geovane Krger
.................................................................................................... 129
by Geovane Krger
.................................................................................................... 130
Exemplo 200
1 2 3 4
\begin{pspicture}(-1,0)(-1,1.5) \setlength{\arraycolsep}{1.1cm} $\begin{matrix} \Rnode{a}{(X-A)} & \Rnode{b}{A}\\[2cm] \Rnode{c}{x} & \Rnode{d}{\tilde{X}} \end{matrix} \psset{nodesep=5pt,arrows=->} \ncline{a}{c}\tlput{\scriptstyle r} \ncline{a}{b}\taput{\scriptstyle u} \ncline[linestyle=dashed]{c}{d}\tbput{\scriptstyle b} \ncline{b}{d}\trput{\scriptstyle s}$ \end{pspicture}
(X A)
5 6 7
8 9
10 11 12
Estes comandos no possuem argumentos ou parmetros de rotao. Entretanto, ns podemos rotacionar as coisas usando rotao de um box, por exemplo \rotateleft. Se ns usarmos o parmetro que foi visto no m da seo anterior, shortput=none/nab/tablr/tab com shortput=tablr, ento ns podemos usar os seguintes caracteres de abreviao para os comandos vistos nesta seo: Caractere _ < > Abreviao de \taput \tbput \tlput \trput
by Geovane Krger
onde rotao qualquer tipo de rotao vlida para \rput (Padro 0). A posio do rtulo tambm leva em conta o parmetro offsetA. No exemplo a seguir, mostraremos como marcar um ngulo usando \nput. Exemplo 201
1 2
\begin{pspicture}(-1,0)(4.5,3) \rput[br](4,0){\ovalnode{B}{Nodo B}} \rput[tl](0,3){\rnode{A}{\psframebox{Nodo A}}} \nput[labelsep=0]{-70}{A}{ \psarcn(0,0){.4cm}{0}{-70} \uput{.4cm}[-35](0,0){\texttt{ngulo A}}} \ncangle[angleA=-70,angleB=90,armB=1cm,linewidth=1.2 pt]{A}{B} \ncput[nrot=:U,npos=1]{\psframe[dimen=middle](0,0) (.35,.35)} \end{pspicture}
Nodo A ngulo A
3 4 5 6 7
Nodo B
8
\begin{pspicture}(-1,0)(0,3) $\psmatrix[colsep=1cm,rowsep=1cm] & A &\\ B & E & C\\ & D & \endpsmatrix$ \end{pspicture}
4 5 6
O ambiente \psmatrix semelhante ao ambiente \matrix do pacote AMS. No existe argumento para especicar a quantidade de colunas usadas, ou seja, podemos usar quantas precisarmos. As entradas
by Geovane Krger
.................................................................................................... 132
so horizontalmente centralizadas. As linhas so terminadas por duas \\ e ainda, podemos usar o ambiente \psmatrix tanto no modo matemtico ou fora dele. O primeiro exemplo no teve interesse pois no foi usado nodos. Na verdade, cada entrada um nodo. O nome dos nodos neste caso so da forma {linha,coluna} sem espaos aps a vrgula. Veja o prximo exemplo. Exemplo 203
1 2 3 4
\begin{pspicture}(-1,0)(0,3) $\psmatrix[colsep=1cm] & X\\ Y & Z \endpsmatrix \everypsbox{\scriptstyle} \psset{nodesep=3pt,arrows=->} \ncline{1,2}{2,1} \tlput{f} \ncline{1,2}{2,2} \trput{g} \ncline[linestyle=dotted]{2,1}{2,2} \tbput{h}$ \end{pspicture}
X
f g
5 6 7 8
9 10 11
Ns podemos incluir as conexes de nodo dentro do ambiente \psmatrix aps a ltima entrada e antes de \endpsmatrix. Uma vantagem em fazer isto que shortput=tab padro dentro de um ambiente \psmatrix. Exemplo 204
1
\begin{pspicture}(-.5,0)(0,3) $\psmatrix U\\ & X\times_z Y & X\\ & Y & Z \everypsbox{\scriptstyle} \psset{nodesep=3pt,arrows=->} \ncline{1,1}{2,2}_{y} \ncline[doubleline=true,linestyle=dashed ]{-}{1,1}{2,3}^{x} \ncline{2,2}{3,2}<{q} \ncline{2,2}{2,3}_{p} \ncline{2,3}{3,3}>{f} \ncline{3,2}{3,3}_{g} \endpsmatrix$ \end{pspicture}
U
x y
2 3 4 5
X z Y
q
X
f
6 7 8 9
10 11 12 13
by Geovane Krger
.................................................................................................... 133
Ns podemos escolher tambm o tipo de nodo produzido usando o parmetro mnode=tipo Os tipos vlidos so R, r, C, f, p, circle, oval, dia, tri, dot, none que equivalem a \Rnode, \rnode, \Cnode, \fnode, \pnode, \circlenode, \ovalnode, \dotnode e nenhum nodo, respectivamente. Note que para crculos, usamos mnode=C e xamos o raio com o parmetro radius. O tipo padro mnode=R. Exemplo 205
1 2
\begin{pspicture}(-.5,0)(0,3) $\psmatrix[mnode=circle,colsep=1] & A\\ B & E & C\\ & D & \endpsmatrix$ \psset{shortput=nab,labelsep=3pt,arrows=->} \small \ncline{2,2}{2,3}^[npos=.75]{a} \ncline{2,2}{2,1}^{b} \ncline{3,2}{2,1}^{c} \ncarc[arcangle=-40,border=3pt]{3,2}{1,2}_[npos =.3]{d}^[npos=.7]{e} \ncarc[arcangle=12]{1,2}{2,1}^{f} \ncarc[arcangle=12]{2,1}{1,2}^{g} \end{pspicture}
A
g f e
3 4 5 6
B
c
a d
7 8 9 10
11 12
13 14 15
Note que um nodo feito somente para entradas no vazias. Ns podemos especicar tambm um nodo para entradas vazias usando o parmetro emnode=tipo tipo so os mesmos vistos para o parmetro acima. Padro none. Ns tambm podemos escolher parmetros para cada uma das entradas, iniciando a entrada com os parmetros entre colchetes. Observao 6.4 Note que, as escolhas afetam o modo como os nodos so feitos, no o que contm em cada entrada, neste caso devemos usar \psset.
by Geovane Krger
.................................................................................................... 134
Exemplo 206
1 2
\begin{pspicture}(-1,0)(0,3) $\psmatrix[colsep=1cm] & [mnode=circle] X\\ Y & [mnode=tri] Z \endpsmatrix \psset{nodesep=3pt,arrows=->} \ncline{1,2}{2,1} \ncline{1,2}{2,2} \ncline[linestyle=dotted]{2,1}{2,2}$ \end{pspicture}
3 4 5 6 7
8 9 10
Tambm podemos xar um nome prprio para um nodo usando o parmetro name=nome no incio das entradas. Ns ainda assim podemos referenciar um nodo por {linha,coluna}, mas usar os nodos dando nomes a eles melhor pelas seguinte razes: O nome mais fcil de ser lembrado; Ao contrrio dos nomes {linha,coluna}, os nomes dados por ns permanecem vlidos mesmo quando adicionarmos alguma coluna ou linha extra. A seguir temos mais alguns parmetros para encerrar essa seo. mcol=l/r/c Com este parmetro ns podemos escolher como os nodos so justicados, onde l esquerda, r direita e c centro. Padro c. rowsep=dimenso colsep=dimenso O espao entre as linhas e colunas. Padro 1.5cm em ambos. mnodesize=dimenso Se ns quisermos que os nodos tenham uma tamanho xo, devemos usar um valor positivo. Padro -1pt. Se ns quisermos que uma entrada se extenda atravs de vrias colunas, podemos usar o comando
by Geovane Krger
.................................................................................................... 135
\psspan{valor inteiro}
A no nal da entrada. Esta opo como o comando \multicolumn do LTEX.
Exemplo 207
1 2 3
\begin{pspicture}(-.1,0)(0,3) $\psmatrix[rowsep=1,colsep=1] &[name=SL] \Sigma^L &&&& [name=SR] \Sigma^R\\[0cm] [name=L] L && [name=Lr] L_r && [name= R] R\\[1.5cm] [name=Lm] L_m && [name=Krm] K_{r,m} && [name=Rm] R_{m^*}\\ & [name=SG] \Sigma^G &&&& [name=SH] \ Sigma^H\\[0cm] [name=G] G && [name=Gr] G_{r^*} && [ name=H] H
L
L R i1
Lr
R
7
i2
i4
i6
8 9 10
%
\everypsbox{\scriptstyle} \psset{arrows=->,nodesep=2mm,border=3 pt} \ncline{Lr}{R}^{r} \ncline{Krm}{Rm}^{r} \ncline{Gr}{H}_{r^*} \ncline{Lr}{L}^[tpos=0.3]{i_1} \ncline{Krm}{Lm}^[tpos=0.3]{i_3} \ncline{Gr}{G}_{i_5} \ncline{SL}{SR}^{\varphi^r} \ncline{SG}{SH}_{\varphi^{r^*}} \ncline{SR}{SH}>{\varphi^{m^*}} \ncline{SL}{SG}<{\varphi^m} \ncline{Lm}{G}<{m} \ncline{Krm}{Lr}>{i_4} \ncline{Rm}{H}>[tpos=0.3]{m^*} \ncline{Lm}{L}<{i_2} \ncline{Krm}{Gr}>[tpos=0.3]{m} \ncline{Rm}{R}>{i_6} \ncline{L}{SL}<[tpos=0.3]{\lambda^L} \ncline{R}{SR}>[tpos=0.6]{\lambda^R} \ncline{G}{SG}<[tpos=0.3]{\lambda^G} \ncline[linestyle=dashed]{H}{SH}>[ tpos=0.6]{\lambda^H} \endpsmatrix$ \end{pspicture}
i3
Lm
Kr,m
m
Rm
m
11 12 13
m G
G
r
H
H
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
i5
31 32
by Geovane Krger
.................................................................................................... 136
Captulo
O Pacote pst-grad
Todos os parmetros do pacote \usepackage{pst-grad} esto disponveis somente quando o gradiente usado com a opo lltstyle=gradient. Existe ainda outro pacote que funciona como se fosse um adicional a este pacote, o qual pode ser usado para preenchimentos em gradiente circulares. Este pacote visto no Captulo ??. O preenchimento padro da opo gradient em tons de azul, como no exemplo a seguir: Exemplo 208
1 2 3
Para alterarmos as cores do preenchimento e outros detalhes temos uma lista de opes que veremos no que segue, sempre com um exemplo de cada opo. Observao 7.1 Um dos problemas deste pacote, que cores no formato CMYK muitas vezes podem no funcionar corretamente, o melhor usar o formato RGB.
7.1 Opes
gradbegin=cor 137
7.1 Opes
Esta opo ns podemos usar para escolher a cor que dar incio ao gradiente. A cor nal usando s essa opo contnua sendo ainda um ton de azul. E para alterarmos a cor que dar m ao gradiente podemos usar a opo gradend=cor Exemplo 209
1 2
Exemplo 210
1 2
Exemplo 211
1 2
Uma gradiente no nada mais que uma seqncia de linhas coloridas, e largura destas linhas depende muito da resoluo suportada pelo driver de video ou impressora que ser impresso, mas isto um caso a parte. No nosso caso, a opo gradlines=nmero permite escolher a quantidade de linhas coloridas que devem ser produzidas. Exemplo 212
1 2 3
by Geovane Krger
.................................................................................................... 138
7.1 Opes
A opo gradmidpoint= denota o ponto relativo onde a cor nal xada. Este valor deve ser nmeros entre 0 e 1. Exemplo 213
1 2
Exemplo 214
1 2
Exemplo 215
1 2
by Geovane Krger
.................................................................................................... 139
7.1 Opes
Exemplo 217
1 2
Com a opo GradientCircle=true podemos criar gradientes circulares. O raio do crculo pode ser alterado com a opo GradientScale e a posio do centro do crculo pode ser modicada com a opo GradientPos A posio das coordenada referente a base do sistema de coordenadas, que determinado pelo ambiente pspicture como uma regra. Exemplo 218
1 2
Exemplo 219
1 2
Exemplo 220
1 2
by Geovane Krger
.................................................................................................... 140
7.1 Opes
A ltima opo deste pacote permite que ns usemos cores no formato HSB. gradientHSB=true Exemplo 221
1 2 3 4
Exemplo 222
1 2 3 4
Exemplo 223
1 2 3 4
\newhsbcolor{cor1}{.1 0.7 0.3} \newhsbcolor{cor2}{.1 0.7 1} \begin{pspicture}(-1,0)(5,3) \psframe[fillstyle=gradient,gradientHSB=true, gradmidpoint=0.5,gradangle=45,gradbegin=cor1, gradend=cor2](0,0)(5,3) \end{pspicture}
by Geovane Krger
.................................................................................................... 141
Captulo
O Pacote pst-slpe
O pacote \usepackage{pst-slpe} pode ser considerado um adicional ao pacote pst-grad. Este pacote surgiu devido a vrias coisas que o pacote pst-grad deixava a desejar. Outra vantagem que que este pacote trabalha em torno de 30% mais rpido que o pacote pst-grad. pst-slpe dispe de seis novos estilos de preenchimento que so: slope slopes usados para simples preenchimentos em gradiente. Exemplo 224
1 2 3
Exemplo 225
1 2 3
142
Exemplo 227
1 2 3
radslope radslopes e estes dois ltimos estilos tem um preenchimento radial. Exemplo 228
1 2 3
Exemplo 229
1 2 3
by Geovane Krger
.................................................................................................... 143
8.1 Opes
8.1 Opes
Este pacote ainda trs vrios parmetros que ns podemos usar para controlar como os objetos so preenchidos. slopebegin slopeend Com estes dois parmetros podemos escolher qual a cor inicial e a nal que iro interpolar entre si com qualquer um dos trs estilos ..slope. Exemplo 230
1 2
Exemplo 231
1 2
Exemplo 232
1 2
slopecolors Para interpolarmos mais do que duas cores, mas com esta opo devemos usar qualquer um dos trs estilos ..slopes e ainda temos um modo correto de se usar. Para usar este estilo de preenchimento, imagine um escala linear comeando na extremidade esquerda e indo para a extremidade direita. A extremidade esquerda sempre deve receber a coordenada 0. A extremidade direita pode receber qualquer valor arbitrrio, por exemplo, digamos 23. Agora, ns queremos que na
by Geovane Krger
.................................................................................................... 144
8.1 Opes
extremidade esquerda tenha um azul claro, na posio 10/23 um azul mediano, na posio 17/23 a cor azul e na extremidade direita um azul escuro, como na gura abaixo:
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Para isso, usamos quatro cores RGB que so (.9,.9,1), (.6,.6,1), (0,0,1) e (0,0,.4). Os valores para o parmetro slopecolors consistem de uma lista de informao das cores contendo os nmeros que produzem a cor, como a lista acima, e estas cores sempre devem ser valores no formato RGB. O uso correto desta lista deve ser feito sem o uso deve vrgulas, como segue abaixo: slopecolors=0 .9 .9 1 10 .6 .6 1 17 0 0 1 23 0 0 .4 4
onde 0 representa a cor na extremidade esquerda, 10 e 17 na posio respectiva de cada cor, 23 a extremidade direita e o nmero 4 no m da lista representa a quantidade de cores. Para ccslopes, as cores iniciam-se do centro para fora e para radslopes (sem nenhuma rotao especicada), 0 representa o raio indo para o leste. Especique as cores no sentido anti-horrio. Se ns esquecermos algum nmero ou especicarmos algum nmero errado de argumentos, provavelmente teremos algum erro. O valor padro para slopecolors especica um arco-iris. O parmetro slopesteps controla o nmero de cores distintas feitas. Quanto maior o valor para este parmetro, melhor a qualidade do resultado, mas proporcionalmente a isto, o processamento ca mais lento. Por exemplo, slopesteps=5 resulta em apenas 5 cores no preenchimento: Exemplo 233
1 2 3
by Geovane Krger
.................................................................................................... 145
8.1 Opes
Exemplo 234
1 2 3
Os estilos slope(s) e radslope(s) padres podem ser rotacionados com o parmetro slopeangle Os ngulos so dados no sentido anti-horrio. Exemplo 235
1 2 3
Exemplo 236
1 2
Para os estilos cc... e rad..., possvel especicar o centro do desenho com o parmetro slopecenter Este centro como uma coordenada que funciona do seguinte modo: A coordenada x deve ser separada da coordenada y por um espao em branco, no use vrgula. As coordenadas devem ser valores entre 0 e 1. O centro padro 0.5 0.5, isto , meio entre 0 e 1. Agora imagine que a gura sempre est dentro de uma caixa quadrada, que toca cada extremidade da gura em cada lado da caixa. Deste modo calculado o centro do preenchimento, ele relativo a esta caixa. .................................................................................................... 146
by Geovane Krger
8.1 Opes
Observe estes detalhes acima no exemplo a seguir: 1.0 0.8 0.6 0.4 0.2 0 0 0.1 0.2 Para este exemplo ns usamos 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
fillstyle=radslope,slopecenter=.2 .4 E a ltima opo deste pacote sloperadius que ns podemos usar com os estilos cc... e rad.... Por padro, estes estilos distribuem as cores dadas de modo que o centro pintado com a primeira cor dada e os pontos mais longe do centro com a ltima cor dada. Em outras palavras, o preenchimento comea pela primeira cor no incio do raio e ltima cor est no ponto onde o raio alcana a maior distncia no permetro da gura. O valor padro neste parmetro 0. Exemplo 237
1 2
Exemplo 238
1 2 3 4 5
\pscircle*[linecolor=white](0,0){.5} 6 \end{pspicture}
by Geovane Krger
.................................................................................................... 147
Captulo
O Pacote pst-blur
A funo de colocar sombras em objetos quaisquer e uma caracterstica dos PSTricks. Entretanto, est sombras so sempre duras, rigorosas:
Mas com o pacote \usepackage{pst-blur} ns podemos fazer com que est sombras quem obscurecidas, ou fora de foco, para objetos fechados feitos com os pacotes PSTricks:
Para produzirmos objetos com sombras obscurecidas os parmetros grcos shadow=true blur=true 148
sempre devem estar como verdadeiros. O parmetro blur no far diferena nenhuma se shadow estiver como falso. O tamanho da sombra e o ngulo de projeo da sombra so controlados pelas opes shadowsize=tamanho shadowangle=ngulo O tamanho do efeito de obscurecimento controlado pela opo blurradius=tamanho Onde o tamanho padro para blurradius=1.5pt quando o tamanho da sombra tambm o padro que shadowsize=3pt. Exemplo 239
1 2
A cor da sombra controlada pela opo shadowcolor=cor e ainda podemos escolher a cor de fundo que vai enfraquecendo gradualmente com a opo blurbf=cor Exemplo 240
1 2
by Geovane Krger
blursteps=nmero controla o nmero distinto de cores usadas entre shadowcolor e blurbg. O valor padro para esta opo 20, que normalmente mais que suciente. Note que valores maiores para blursteps pode deixar lento o sistema. Exemplo 241
1 2
shadowcolor blurbg
shadowangle
shadowsize blurradius
by Geovane Krger
.................................................................................................... 150
Captulo
10
O Pacote pst-light3d
Usando o pacote \usepackage{pst-ligth3d} podemos adicionar efeitos visuais tridimensionais em caracteres e grcos como ser visto nas duas sees deste captulo.
1 2
Tambm podemos rotacionar os objetos usando o parmetro LightThreeDAngle=ngulo onde ngulo qualquer valor em graus. Padro 45. 151
Exemplo 243
1 2
Com os parmetros LightThreeDXLength=valor LightThreeDYLength=valor podemos alterar a direo do efeito e conseqentemente o comprimento. Exemplo 244
1 2
Observao 10.1 O parmetro que ser visto a seguir usa cdigos de PostScript para alterar a cor dos efeitos produzidos. O primeiro cdigo, nmero div, serve para dividir a tonalidade e quanto mais prximo do 0 mais fraca a cor e quanto maior o nmero mais forte. O outro comando usado, nmero exch, no sei dizer como ele funciona, mas possvel perceber que ele faz uma mistura de tonalidades, assim, vou somente colocar os exemplos para que ao menos possamos visualizar o que este parmetro faz. O ltimo comando para dizer que tipo de paleta de cores para ser usada, setgray, sethsbcolor, setrgbcolor ou setcmykcolor. LightThreeDColorPsCommand=cdigos
by Geovane Krger
.................................................................................................... 152
Exemplo 245
1 2
\DeclareFixedFont{\G}{T1}{phv}{b}{n}{2cm} \psset{linestyle=none,fillstyle=solid,fillcolor= ProcessBlue} \PstLightThreeDText[LightThreeDColorPsCommand=0.5 div setgray]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=1.5 div setgray]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div setgray]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=3.5 div setgray]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=4.5 div setgray]{\G 1234}
Exemplo 246
1 2
\DeclareFixedFont{\G}{T1}{ptm}{b}{n}{3cm} \psset{fillstyle=slope,slopebegin=yellow, slopeend=blue} \PstLightThreeDText[LightThreeDXLength=1, LightThreeDYLength=.5, LightThreeDColorPsCommand=1 mul setgray ]{\G Teste}\\[1.2cm] \PstLightThreeDText[LightThreeDXLength=1, LightThreeDYLength=.5, LightThreeDColorPsCommand=1.5 div setgray ]{\G Teste}\\[1.2cm] \PstLightThreeDText[LightThreeDXLength=1, LightThreeDYLength=0.5, LightThreeDColorPsCommand=2 div .05 exch .99 exch sethsbcolor]{\G Teste}
by Geovane Krger
.................................................................................................... 153
Exemplo 247
1 2
\DeclareFixedFont{\G}{T1}{phv}{b}{n}{2cm} \psset{linestyle=none,fillstyle=solid,fillcolor= Violet} \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 1 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.9 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.8 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.7 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.6 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.5 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.4 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.3 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.2 exch 0.9 sethsbcolor]{\G 1234}\\[.4cm] \PstLightThreeDText[LightThreeDColorPsCommand=2.5 div 0.1 exch 0.9 sethsbcolor]{\G 1234}\\[.6cm] \PstLightThreeDText[fillcolor=white,linestyle= solid,linecolor=BrickRed, LightThreeDColorPsCommand=2 div 0.01 exch 0.9 exch 1 exch setcmykcolor]{\fontsize{85}{90}{\ Fontauri PSTricks}}
10
11
12
13
14
by Geovane Krger
.................................................................................................... 154
\psset{unit=0.5cm} \begin{pspicture}(-1,-3.5)(9.2,3) \PstLightThreeDGraphic[LightThreeDXLength=0.4, LightThreeDColorPsCommand=1.2 div 0.8 exch 0.7 sethsbcolor]{\pscurve(0,2)(1,-3)(2,2)(4,3)(7,0) (8,3)(9,-2)(3,1)} \end{pspicture}
Exemplo 249
1 2
\begin{pspicture}(-8,-1.5)(7,1.5) \psaxes[trigLabels,trigLabelBase=2,dx=\psPiH,xunit=\psPi]{->}(0,0)(-2.2,-1.5) (2.2,1.5) \PstLightThreeDGraphic[LightThreeDColorPsCommand=2 div 0.2 exch 0.9 sethsbcolor]{ \psplot[linewidth=1.5pt,plotpoints=1000]{-7}{7}{x dup mul RadtoDeg sin}} \end{pspicture}
3 4 5
3 2
3 2
by Geovane Krger
.................................................................................................... 155
Captulo
11
O Pacote pst-gr3d
O pacote \usepackage{pst-gr3d} permite desenhar grades tridimensionais. Este pacote possui um nico macro com muitos parmetros prprios alm de muitos parmetros do pacote pstricks que podemos usar para mudar as caractersticas das linhas, etc. O macro denido pelo seguinte comando \PstGridThreeD[parmetros](x, y, z) Mais abaixo ainda veremos como denir outros macros, com a mesma sintaxe do macro acima, mas que podem ser usados para causar efeitos visuais especiais. O ponto de vista padro (viewpoint) (1.2,-0.6,0.8), o qual podemos alterar do modo que quisermos usando o parmetro viewpoint=pos1 pos2 pos3 sem usar vrgulas, apenas as posies relativas. Observao 11.1 O pacote tenta computar aproximadamente o tamanho dos objetos (pensando no ambiente pspicture), mas para grades tridimensionais uma tarefa praticamente impossvel no caso geral (no caso que no exista alterao do ponto de vista padro at que funciona bem). Assim, se o tamanho exato necessrio ou se ns escolhermos outro pontos de vista para o grco, o tamanho pode ser computado manualmente usando o macro \psframebox[framsep=0]... atravs de tentativas de construes por acertos e erros at encontrar o tamanho exato.
156
Outros exemplos usando parmetros genricos de PSTricks especiais para grades. Exemplo 251
1 2 3 4
observe acima, que alterando o ponto de vista, o tamanho do objeto computado pelo pacote no funciona corretamente. Para fazermos com que o objeto seja posicionado corretamente, devemos usar o ambiente pspicture junto com um parmetro que ser visto logo aps o prximo exemplo. Tambm podemos desenhar grades em uma ou duas dimenses, usando casos degenerados:
by Geovane Krger
.................................................................................................... 157
Exemplo 252
1 2 3
PstPicture=true/false como mencionado acima, este parmetro usado para denir ou no um ambiente pspicture para a grade. Ns devemos denir este parmetro para false principalmente se escolhermos outro ponto de vista que no seja o padro. Padro true e assim o pacote tenta denir um ambiente pspicture de acordo com o objeto, o que nem sempre funciona, e ainda, sempre ca rente a margem. Observe no exemplo a seguir, onde usamos o mesmo objeto que no outro exemplo acima ultrapassou as margens e cou por cima do quadro de comandos, como podemos alterar a posio dele corretamente com o parmetro acima. Exemplo 253
1 2 3 4 5 6
\PstGridThreeD[unit=1.5](1,1,1)\hfill \PstGridThreeD[viewpoint=1.2 -1.5 0.4,griddots=7](1,3,2)\hfill \PstGridThreeD[gridwidth=0.08,gridcolor=red](3,2,2)\hfill \begin{pspicture}(-1.7,0)(.8,3.6) \PstGridThreeD[viewpoint=-0.4 -0.6 0.8,PstPicture=false](1,3,2) \end{pspicture}
O parmetro PstDebug=0 ou 1
by Geovane Krger
.................................................................................................... 158
obtm informaes internas, e usando 1, desenha uma caixa em torno do box usado pelo ambiente pspicture caso ele fosse desenhado. Padro 0, ou seja, nenhuma caixa desenhada. Exemplo 254
1 2
\hspace{5cm} \PstGridThreeD[PstDebug=1](3,2,2)
observe como j mencionamos antes, que o pacote tenta calcular o tamanho do objeto, mas por ser em trs dimenses isto aproximado. Os parmetros GridThreeDXunit=inteiro GridThreeDYunit=inteiro GridThreeDZunit=inteiro determinam os coecientes unitrios nas direes x, y e z, respectivamente. Lembrando que estes valores devem ser nmeros inteiros e o padro 1. Exemplo 255
1 2 3 4
by Geovane Krger
.................................................................................................... 159
GridThreeDXPos=inteiro GridThreeDYPos=inteiro GridThreeDZPos=inteiro Com estes parmetros podemos determinar a posio da origem nas direes x, y e z, respectivamente. Padro 0, e lembrando que devemos sempre usar um nmero inteiro. Os dois grupos de parmetros vistos acima so usados principalmente se quisermos sobrepor grades, o que pode ser feito facilmente usando o macro \PstGridThreeDHookEnd o qual descrito nos exemplos abaixo. Exemplo 256
1 2 3 4 5 6 7 8 9 10 11 12
\hspace{1cm}
%Primeira Grade
\def\PstGridThreeDHookEnd{ \PstGridThreeD[PstPicture=false,gridwidth=0.1,GridThreeDXPos=1](0,2,1)} \PstGridThreeD(1,3,2)\hspace{1cm}
%Segunda Grade
\def\PstGridThreeDHookEnd{ \PstGridThreeD[PstPicture=false,gridwidth=0.1,GridThreeDYPos=1](1,2,1)} \PstGridThreeD(1,3,2)\hspace{1cm}
%Terceira Grade
\def\PstGridThreeDHookEnd{ \PstGridThreeD[PstPicture=false,gridwidth=0.1,gridcolor=green,GridThreeDYPos=2, GridThreeDZPos=1](1,1,1)} \PstGridThreeD(1,3,2)\hspace{1cm}
13
GridThreeDNodes=true/false Com este macro podemos denir as interconexes das grades como cada uma delas sendo nodos. Os nodos recebem os nomes Gr3dNodeXYZ. Padro false, ou seja, nenhum nodo denido.
by Geovane Krger
.................................................................................................... 160
Exemplo 257
1
131 130
2 3 4 5
Com o macro \PstGridThreeDHookNode podemos denir a forma, modelo, dos nodos. Existe um macro pr-denido \PstGridThreeDNodeProcessor{cor} o qual dene um crculo com a cor cor e com um pequeno crculo branco dentro. Observe nos exemplos abaixo o uso deste comando. Exemplo 258
1 2 3 4 5 6 7 8 9 10 11 12 13
\hspace{1cm} \def\PstGridThreeDHookNode{ \begin{pspicture}(-0.15,-0.15)(0.15,0.15) \pscircle*[linecolor=magenta]{0.15} \end{pspicture}} \PstGridThreeD(1,2,2)\hspace{2cm} \definecolor{LightBlue}{rgb}{0.68,0.85,0.9} \def\PstGridThreeDHookNode{ \PstGridThreeDNodeProcessor{LightBlue}} \PstGridThreeD[unit=0.7](2,3,4)\hspace{2cm} \def\PstGridThreeDHookNode{ \PstGridThreeDNodeProcessor{SpringGreen}} \PstGridThreeD[unit=1.5](2,2,1)
by Geovane Krger
.................................................................................................... 161
Ns podemos usar tambm o contador \iy para diferenciar os nodos de acordo com as faces Y mas ns no podemos usar para fazer a mesma coisa para as faces X e Z. Padro vazio. O uso fcil basta observar os exemplos. Exemplo 259
1 2 3 4 5 6 7 8 9 10 11 12
\hspace{3cm} \def\PstGridThreeDHookNode{ \ifcase\iy \PstGridThreeDNodeProcessor{magenta} \or\PstGridThreeDNodeProcessor{yellow} \or\PstGridThreeDNodeProcessor{cyan} \or\PstGridThreeDNodeProcessor{green} \or\PstGridThreeDNodeProcessor{orange} \or\PstGridThreeDNodeProcessor{Periwinkle} \else\PstGridThreeDNodeProcessor{Gray} \fi} \PstGridThreeD(1,6,1)
Exemplo 260
1 2 002 3 222 4 221 5 6
\hspace{.5cm} \PstGridThreeD[GridThreeDNodes=true](2,2,2) \SpecialCoor \rput*(Gr3dNode002){\tiny 002} \rput*(Gr3dNode221){\tiny 221} \rput([Rx=0.3]Gr3dNode222){\tiny 222} \multido{\i=0+1}{3}{ \rput([Rx=0.3,Ry=-0.3]Gr3dNode2\i0){2\i0}}
200
210
220
7 8
by Geovane Krger
.................................................................................................... 162
Exemplo 261
1 2 3 4 5 6 7 8 9
\hspace{1cm} \def\PstGridThreeDHookNode{ \PstGridThreeDNodeProcessor{orange}} \psset{unit=1.3} \PstGridThreeD[GridThreeDNodes=true](1,2,2) \SpecialCoor \psset{arrows=<->,arrowscale=2} \ThreeDput[normal=0 0 -1](0,0,0){ \ncloop[linecolor=red,arm=0.35,loopsize=0.6,angleA =-90,angleB=90]{Gr3dNode022}{Gr3dNode002} \ncloop[linecolor=green,arm=0.7,nodesepA=0.18, nodesepB=0.12,loopsize=-0.5,angleA=180]{Gr3 dNode002}{Gr3dNode102}}
10
Exemplo 262
1 2 3 4 5 6 7 8 9 10 11 12 13
\hspace{4cm} \def\PstGridThreeDHookEnd{{ \psset{PstPicture=false,gridwidth=0.1} {\def\PstGridThreeDHookNode{ \PstGridThreeDNodeProcessor{blue}} \PstGridThreeD[gridcolor=blue,GridThreeDZPos=3](0,6,0)} {\def\PstGridThreeDHookNode{ \PstGridThreeDNodeProcessor{red}} \PstGridThreeD[gridcolor=red,GridThreeDXPos=1,GridThreeDZPos=1](0,3,1)} {\def\PstGridThreeDHookNode{ \PstGridThreeDNodeProcessor{green}} \PstGridThreeD[gridcolor=green,GridThreeDYPos=5](1,1,1)}}} \PstGridThreeD(1,6,3)
by Geovane Krger
.................................................................................................... 163
O ltimo grupo de macros adicional deste pacote um pouco mais complicado, mas ele pode ser usado para preencher as faces das grades. \PstGridThreeDHookXFace \PstGridThreeDHookYFace \PstGridThreeDHookZFace Estes, permitem executar um macro antes de desenhar as faces x, y e z, respectivamente. Mas isto no to poderoso assim, porque no podemos controlar a ordem das faces desenhadas como poderia ser o nosso sonho. Por exemplo, no podemos usar est tcnica para desenhar objetos que possuem somente linhas visveis. Tambm devemos ter cuidado com as faces y, a direo negativa na horizontal, assim as coordenadas devem levar em conta este fato. Exemplo 263
1 2 3 4 5 6 7 8 9 10 11 12 13 14
\hspace{1cm} {\def\PstGridThreeDHookXFace{ \ifnum\multidocount=1\psframe*[linecolor=cyan](3,2)\fi} \PstGridThreeD(1,3,2)}\hfill {\def\PstGridThreeDHookYFace{ \ifnum\multidocount=2\psframe*[linecolor=yellow](-3,0)(0,2)\fi} \PstGridThreeD(3,1,2)}\hfill {\def\PstGridThreeDHookZFace{ \ifnum\multidocount=3 \psframe*[linecolor=blue](3,3) \else\psframe*[linecolor=yellow](3,3)\fi \ifnum\multidocount=1 \psframe*[linecolor=red](3,3)\fi} \PstGridThreeD(3,3,2)}
O comando \multidocount= representa qual face deve ser usada. .................................................................................................... 164
by Geovane Krger
Captulo
12
O Pacote pst-poly
O pacote \usepackage{pst-poly} oferece um nico macro, mas adicionado de vrios parmetros para interagir, podemos denir inmeros tipos de polgonos, tanto regulares como irregulares. Tambm podemos usar vrios dos parmetros de PSTricks usuais j vistos anteriormente, como caractersticas das linhas, preenchimentos, etc. Os polgonos so sempre desenhados no sentido horrio. A sintaxe do macro uma das mais simples: \PstPolygon[parmetros] A verso estrelada (*) tambm pode ser usada para preencher os polgonos de acordo com a cor da linha usada.
12.1 Parmetros
Existem oito parmetros especcos para escolher como que os polgonos so denidos: PstPicture=true/false usado para denir ou no um ambiente pspicture para os polgonos. Ns podemos escolher este parmetro para false se quisermos mixar o polgono com outros objetos de PSTricks. Padro true. PolyRotation=ngulo ngulo de rotao aplicado aos polgonos. Padro 0.
165
12.1 Parmetros
Exemplo 264
1 2 3 4 5
PolyOffset=inteiro Nmero de nodos usados para contornar cada lado, ou melhor, nmero de nodo usados para criar cada lado. Padro 1, nenhum nodo. Veja os exemplos:
by Geovane Krger
.................................................................................................... 166
12.1 Parmetros
Exemplo 266
1 2 3 4 5 6 7 8
PolyIntermediatePoint= valor real Posio do ponto intermedirio usado para unir cada nodo (vrtice). Padro vazio, ou seja, no usado. Exemplo 267
1 2 3 4 5 6 7
PolyCurves=true/false Usado para escolher se cada nodo unido at o prximo por uma linha reta ou uma curva. Padro false, linha reta.
by Geovane Krger
.................................................................................................... 167
12.1 Parmetros
Exemplo 268
1 2 3 4 5 6 7
PolyEpicycloid=true/false Para escolher entre polgonos e epicycloid. Padro false, polgono. Exemplo 269
1 2 3 4 5
\hspace{.2cm} \psset{linewidth=0.001,PolyNbSides =72,PolyEpicycloid =true} \multido{\i=2+1}{5}{\PstPolygon[PolyOffset=\i]\hspace{.2cm}} \PstPolygon[PolyOffset=72]\hspace{.2cm} % Epicycloid de fator 71 \PstPolygon[PolyOffset=73] % Epicycloid de fator 72
PolyName=caractere Nome dos polgonos, til ter nomes diferentes para unir os nodos de diferentes polgonos. Padro vazio, ou seja, nenhum nome. O centro do polgono tem nome PolyNameO e os nodos (vrtices) tem nomes PolyName1 at PolyNameN. Com este parmetro, ns podemos conectar nodos de diferentes polgonos.
by Geovane Krger
.................................................................................................... 168
12.1 Parmetros
Exemplo 270
1 2 3 4 5 6
Este tambm pode ser um modo (limitado na verdade) de denir objetos tridimensionais em perspectiva. Exemplo 271
1 2 3 4 5 6
by Geovane Krger
.................................................................................................... 169
Exemplo 273
1 2
\hspace{1cm} \PstTriangle \PstSquare \PstPentagon[linestyle=dotted] \PstHexagon[fillstyle=hlines,hatchangle=90] \PstHeptagon[fillstyle=vlines] \PstOctogon*[linecolor=red] \hspace{1cm} \PstNonagon\hspace{.5cm} \PstDecagon\hspace{.5cm} \PstDodecagon[linecolor=green] \PstStarFiveLines \PstStarFive
by Geovane Krger
.................................................................................................... 170
by Geovane Krger
.................................................................................................... 171
Exemplo 277
F D B G E
4 1
A C
2 3
Exemplo 278
1 2
Exemplo 279
\hspace{1cm} \newbox{\Star} \savebox{\Star}{\PstStarFive*[unit=0.15,linecolor= red]} \providecommand{\PstPolygonNode}{\rput{*0}(1;\ INode){\usebox{\Star}}}
5
1 2 3
.................................................................................................... 172
\multido{\nA=3+1}{8}{\pspolygonbox[PolyNbSides=\nA,framesep=3mm]{Texto}~}
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Exemplo 281
1
\multido{\nA=3+1}{8}{\pspolygonbox[PolyNbSides=\nA,framesep=2mm,doubleline=true]{ Texto}~}
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Exemplo 282
1 2
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Exemplo 283
1
Texto
by Geovane Krger
.................................................................................................... 173
Texto
Texto
Te xt o
Te xt o
Texto
Te xt o
Texto
Exemplo 284
1
\multido{\nA=3+1}{8}{\pspolygonbox[PolyNbSides=\nA,rot=60,framesep=2pt,doubleline= true,linearc=0.2]{Texto}~}
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Exemplo 285
1
\multido{\nA=3+1}{8}{\pspolygonbox[PolyNbSides=\nA,framesep=10pt,fillstyle=solid, fillcolor=cyan,linearc=0.2]{Texto}~}
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Texto
Exemplo 286
1 2
TT T T
Exemplo 287
\vspace*{1.5cm} 2 \hspace{4cm}
1 3
TTTTTTTT
by Geovane Krger
.................................................................................................... 174
Referncias Bibliogrcas
A [1] KRGER, Geovane. LTEX 2 : Uma Introduo. Guarapuava PR, 2006. A [2] MITTELBACH, Frank; GOOSSENS, Michel. The LTEX Companion. Pearson Education, Inc., 2nd Ed., 2004 ISBN 0-201-36299-6. A [3] GOOSSENS, Michel; RAHTZ, Sebastian; MITTELBACH, Frank. The LTEX Graphics Companion: Illustrating Documents With TEX and PostScript. Addison-Wesley Longhman, Inc., 1997 ISBN 0-201-
54199-8.
A [4] LAMPORT, Leslie. LTEX: A Document Preparation System. Addison-Wesley Publishing Company, Inc.,
2nd Ed., 1994 ISBN 0-201-52983-1 [5] ZANDT, Timothy Van. Documentation for multido.tex: A loop macro for Generic TEX. Edited by Rolf Niepraschk, Version 1.41, 2004. Disponvel em: <ftp://ftp.das.ufsc.br/pub/ctan/macros/generic/multido/multido.pdf>. Acessado pela ltima vez em 27 de maio de 2007. [6] ZANDT, Timothy Van. PSTricks: PostScript macros for Generic TEX. Department of Economics and Political Science, INSEAD. Boulevard de Constance - France. Verso 97, 2003. [7] VO, Herbert; NIEPRASCHK, Rolf. PSTricks patch 15: new macros and bugxes for pstricks. 2004/05/12. [8] VO, Herbert. PSTricks version 1.10: new macros and bugxes for pstricks. August 20, 2005. Disponvel em: <http://theory.uwinnipeg.ca/scripts/CTAN/graphics/pstricks/base/doc/pstnews1-10.pdf>. Acessado pela ltima vez em 25 de junho de 2007. [9] VO, Herbert. PSTricks version 1.11: new macros and bugxes for pstricks. September 19, 2005. Disponvel em: 175
Referncias Bibliogrcas
Referncias Bibliogrcas
<http://theory.uwinnipeg.ca/scripts/CTAN/graphics/pstricks/base/doc/pstnews1-11.pdf>. Acessado pela ltima vez em 25 de junho de 2007. [10] VO, Herbert. PSTricks version 1.12: new macros and bugxes for pstricks. October 25, 2005. <http://theory.unwinnipeg.ca/scripts/CTAN/graphics/pstricks/base/doc/pstnews1-12.pdf>. Acessado pela ltima vez em 25 de junho de 2007. [11] VO, Herbert. PSTricks version 1.15: new macros and bugxes for pstricks. December 19, 2006. <http://theory.unwinnipeg.ca/scripts/CTAN/graphics/pstricks/base/doc/pstnews1-15.pdf>. Acessado pela ltima vez em 25 de junho de 2007. [12] RODRIGUEZ, Dominique; VO, Herbert. pstricks-add: additionals Macros for pstricks. Version 2.86; June 23, 2007. Disponvel em: < >. Acessado pela ltima vez em [13] ZANDT, Timothy Van; VO, Herbert. The pst-3d package: Tilting and other pseudo-3D tricks with PSTricks. Version 1.00; September 10, 2005. Disponvel em: <http://theory.unwinnipeg.ca/scripts/CTAN/graphics/pstricks/contrib/pst-3d/pst-3d.pdf>. Acessado pela ltima vez em: 8 de julho de 2007. [14] VO, Herbert. pst-grad: Gradients. Version 1.06; November 27, 2006. Disponvel em: <http://ftp.das.ufsc.br/pub/ctan/graphics/pstricks/contrib/pst-grad/pst-grad-doc.pdf>. Acessado pela ltima vez em: 19 de janeiro de 2008. [15] GIESE, Martin. pst-slpe package. Version 1.1; October 05, 2005. Disponvel em: <http://ftp.das.ufsc.br/pub/ctan/graphics/pstricks/contrib/pst-slpe/pst-slpe.pdf>. Acessado pela ltima vez em 20 de janeiro de 2008. [16] GIESE, Martin. pst-blur package. Version 2.0; September 08, 2005. Disponvel em: <http://ftp.das.ufsc.br/pub/ctan/graphics/pstricks/contrib/pst-blur/pst-blur.pdf>. Acessado pela ltima vez em 21 de janeiro de 2008. [17] GIROU, Denis; KLEIWEG, Peter. The pst-light3d package. Version 0.11; August 13, 2007. Disponvel em: <http://ftp.das.ufsc.br/pub/ctan/graphics/pstricks/contrib/pst-light3d/pst-light3d-doc.pdf> Acessado pela ltima vez em 7 de fevereiro de 2008. [18] GIROU, Denis. The pst-gr3d package: A PSTricks package for three dimensional grids. Version 1.34; September 12, 2005; Revised by Herbert Voss. Disponvel em: .................................................................................................... 176
by Geovane Krger
Referncias Bibliogrcas
Referncias Bibliogrcas
<http://ftp.das.ufsc.br/pub/ctan/graphics/pstricks/contrib/pst-gr3d/pst-gr3d.pdf>. Acessado pela ltima vez em 12 de fevereiro de 2008. [19] GIROU, Denis. The pst-poly package: A PSTricks package for polygons. November 21, 2004; Revised by Herbert Voss. Disponvel em: <http://ftp.das.ufsc.br/pub/ctan/graphics/pstricks/contrib/pst-poly/pst-poly.pdf>. Acessado pela ltima vez em 14 de fevereiro de 2008.
by Geovane Krger
.................................................................................................... 177