08.02.2015 Views

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

Programação Funcional e Concorrente com Scheme

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

notas de aula -<br />

Jerônimo C. Pellegrini<br />

Definiremos procedimentos para criar linhas e triângulos em SVG, representando-os<br />

<strong>com</strong>o S-expressões. O procedimento make-svg-line aceita dois pontos, duas cores (a do<br />

inteiror e do traçado) e um número, que dá a largura do traçado.<br />

( define make-svg-line<br />

( lambda (x1 y1 x2 y2 stroke fill stroke-width )<br />

( cons ’line<br />

( make-attr-list ’x1 x1<br />

’y1 y1<br />

’x2 x2<br />

’y2 y2<br />

’fill fill<br />

’stroke stroke<br />

’ stroke-width stroke-width ))))<br />

(define line (make-svg-line 2 3 10 20 "bluered"5))<br />

line<br />

(line x1 ”2” y1 ”3”<br />

x2 ”10” y2 ”20”<br />

fill ”red”<br />

stroke ”blue”<br />

stroke-width ”5”)<br />

(xml-write-tag line)<br />

<br />

<br />

Versão Preliminar<br />

O formato SVG não define triângulo <strong>com</strong>o forma básica, por isso o construiremos<br />

<strong>com</strong>o um polígono. Ao descrever um polígono em SVG, precisamos incluir um atributo<br />

points, que contém uma lista de pontos na forma "x1,y1 x2,y2, .... Usaremos um<br />

procedimento que recebe uma lista de números representando pontos e retorna uma<br />

string <strong>com</strong> a lista de pontos.<br />

( define list-of-points<br />

( lambda args<br />

( let next-point (( points ( map number- > string args ))<br />

[ 27 de outubro de 2010 at 15:47 ]<br />

73

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!