Shapes Editor



A função Shapes Editor do NetLogo (menu Tools->Shapes Editor) é usada para atribuír às turtles outras formas além da chamada default (que tem a forma de um triângulo). Podem ser usadas várias formas diferentes (além da default) no mesmo modelo. Isto é útil para poder distinguir visualmente (na janela gráfica) as várias espécies de turtles (breeds). Isto também poderia ser feito usando apenas a forma convencional com cores diferentes, mas para quem tem outras considerações estéticas, aqui fica uma breve descrição da utilização deste mecanismo.

Chamando a opção no menu como descrito na imagem acima, aparece a seguinte janela com uma lista das formas disponíveis para utilização neste modelo:

Como se pode ver, neste modelo (Formigas), apenas foi criada a forma "ant", usada por todas as turtles (apesar de existirem duas variantes, com cores diferentes; à mesma forma podem ser atribuídas muitas cores). A forma "default" existe sempre (é pré-definida pelo NetLogo) e não pode ser removida; no entanto, pode ser modificada, apesar de ser melhor ideia criar sempre uma nova forma.

Com esta lista, pode-se escolher criar uma forma nova, editar uma forma existente, ou copiar uma forma existente, para, a partir dela, criar-se uma versão modificada, que será gravada com outro nome (constituíndo então uma nova forma independente). Podem-se também apagar formas existentes, exceptuando a forma default. É apenas uma questão de escolher o botão correspondente, New, Edit, Copy, ou Delete, respectivamente. Quando se estiver satisfeito com todas as alterações, basta premir Done. É ainda possível importar (copiar) formas gravadas noutro modelo, usando para isso o botão Import.

Note-se que as formas que aparecem na lista estão gravadas juntamente com o modelo (no mesmo ficheiro); não passam a fazer parte do NetLogo. Ou seja, formas gravadas em modelos diferentes são completamente independentes, e fazer uma modificação numa forma num modelo não terá qualquer influência em qualquer outro modelo, mesmo que tenham formas com o mesmo nome.

Como exemplo de edição de uma forma (as outras opções funcionam de maneira semelhante), vamos modificar a forma "ant" para lhe acrescentar dois olhos (dois pequenos círculos amarelos colocados na zona da cabeça). Usando o botão Edit, aparece a janela de edição:

Nesta podem-se ver quatro réplicas da forma que se está a editar: As três do lado esquerdo servem apenas para visualizar o possível aspecto final que a forma terá em três tamanhos diferentes. No lado direito está a área de edição propriamente dita. No topo encontra-se uma palette de cores, e no canto superior direito está uma lista que permite escolher qual das cores da palette servirá de key: Esta é a cor que será substituída pelo valor da variável color da turtle, por exemplo, quando se faz ask turtles [ set color green ]. Todas as outras cores permanecem constantes.

Existem ainda quatro botões que permitem escolher quatro tipos de objectos geométricos a aplicar: Rectângulo, círculo, linha, e polígono. Pode-se também especificar se os objectos devem ser preenchidos sólidos ou apenas desenhado o seu contorno (usando a opção Fill). Os botões Remove all e Remove last servem para limpar tudo ou remover apenas o último elemento geométrico colocado, respectivamente. Escolhendo então a cor amarela e usando círculos, modificamos a forma "ant":

Antes de gravarmos (usando o botão Done), podemos alterar o nome da forma, no campo Shape name. A opção Rotatable serve para especificar se esta forma tem orientação, ou seja, se a figura é orientada de acordo com o valor da variável heading de cada turtle. No caso de não se usar esta opção, a forma aparece orientada sempre na mesma direcção na janela gráfica (tal como se apresenta na janela de edição), apesar de ainda poder variar em tamanho e cor. No entanto, as turtles continuam a ter orientação, apenas a sua forma não "roda".

É preciso ter cuidado em não complicar demasiado as figuras usadas. Se uma forma for sobrecarregada com muitos elementos geométricos (círculos, linhas, etc.), a execução do modelo poderá ficar muito mais lenta, sobretudo se forem usadas muitas turtles com essa forma.

Falta apenas ver como, depois de se ter criado uma forma, se faz com que uma turtle ou conjunto de turtles (por exemplo, uma breed) adoptem essa forma. Isso pode ser feito de duas maneiras:

Para atribuír uma forma a todas as turtles ou a todas as turtles de uma determinada "espécie" (breed), usa-se a primitiva set-default-shape, por exemplo:
set-default-shape turtles "ant"
Isto atribuí a todas as turtles a forma com o nome ant. Na instrução anterior, turtles pode ser substituída por uma breed definida com a primitiva breeds, por exemplo, set-default-shape gatos "cat", se houver uma breed gatos e uma forma cat. Nestes casos, qualquer nova turtle criada que não pertença à breed gatos terá a forma ant, e uma turtle gatos que seja criada terá automaticamente a forma cat. Além disso, se uma turtle mudar de breed (por exemplo, fazendo set breed-of turtle 10 gatos), a sua forma mudará automaticamente para a que tiver sido definida para essa breed.
Também é possível mudar a forma de turtles individuais. Basta para isso mudar a variável shape dessa turtle para o nome da nova forma. Por exemplo, para reverter a turtle com o número 0 à forma convencional:
ask turtle 0 [ set shape "default" ]