CaRMetal é um software de geometria dinâmica que herdou o mecanismo do software Régua e Compasso. O programa foi criado por Eric Hakenholz na linguagem de programação Java.

CaRMetal

Duas seções cônicas usando CaRMetal
Autor Eric Hakenholz
Desenvolvedor Eric Hakenholz, Pierre-Marc Mazat, Alain Busser
Lançamento 28 de outubro de 2006 (18 anos)
Versão estável 3.8.2 (14 de junho de 2013; há 11 anos)
Idioma(s) Multilingue
Escrito em Java
Sistema operativo Multiplataforma
Gênero(s) Software de geometria dinâmica
Licença GPL
Estado do desenvolvimento Ativo
Tamanho 2,0 MB - 42,1 MB
Página oficial db-maths.nuxit.net/CaRMetal

O CARMetal é um software livre, sob os termos da licença GNU GPL. Ele mantém uma quantidade das funcionalidades do R.e.C., mas utiliza uma interface gráfica diferente que permite eliminar algumas caixas de diálogo intermediárias e fornece acesso direto a numerosos efeitos. As construções são feitas através de uma paleta principal, que contém alguns atalhos de construção úteis, em adição às ferramentas padrão de régua e compasso. Tais ferramentas incluem a mediatriz, o círculo definido por três pontos e seções cônicas definidas por cinco pontos. Igualmente interessantes são as ferramentas de lugar geométrico, funções, curvas paramétricas e gráficos implícitos. A espessura do elemento, sua cor, sua etiqueta e outros atributos (incluindo a assim chamada propriedade magnética) podem ser configuradas através de um painel separado.

O CaRMetal também suporta uma paleta de construção configurável e possui capacidades de atribuição, as quais usam um recurso exclusivo chamado Macaco. O programa possui uma linguagem de script (atualmente, JavaScript com o motor Rhino, da Fundação Mozilla) que permite ao usuário construir figuras bastante complexas, tais como fractais.

O programa está traduzido para muitos idiomas, tais como Francês, Inglês, Espanhol, Alemão, Italiano, holandês, Português e Árabe.[1]

Interesse didático

editar

Antecipação

editar
 
Quando alguém está construindo uma reta paralela, ela segue o mouse, o que torna fácil emitir conjecturas mesmo enquanto a figura permanece em construção.

Quando alguém escolhe uma ferramenta como a paralela por uma reta através de um ponto, ou uma circunferência, o objeto desejado aparece em uma cor amarela e segue os movimentos do mouse. Isso permite fazer hipóteses antes mesmo de a construção estar terminada. Esta interação constante entre o aluno e o objeto de experimentação está de acordo com teorias modernas sobre didática e, neste ponto de vista, o CaRMetal é planejado para ser utilizado pelos alunos.

Amodalidade

editar

As janelas que mostram o histórico, a paleta de ferramentas e as propriedades do objeto selecionado estão em torno da figura e nunca acima dela. Essas janelas não são modais no sentido em que elas nunca escondem a construção. Por exemplo, sempre que o usuário quiser mudar a cor de um polígono, ele vê a nova cor imediatamente.

Transformações

editar

Quando uma transformação (por exemplo, uma macro) foi definida, de tal forma que ela transforma pontos em pontos, essa transformação também pode ser aplicada a curvas. Isso permite ao sujeito da aprendizagem visualizar as propriedades da transformação em um piscar de olhos, mesmo antes de a transformação ter sido aplicada.

Atribuições

editar

 

As pastas de trabalho (veja abaixo) podem ser exportadas como arquivos html com uma paleta de ferramentas restrita (por exemplo, deixar apenas as ferramentas de intersecção e de círculo permite ao aluno fazer construções apenas com o compasso). Para criar uma atribuição, o professor escolhe os objetos iniciais, os objetos a serem criados pelo aluno, e escreve um texto explicando a atividade. Em uma funcionalidade existente desde a versão do ano de 2010, quando o aluno terminou a construção e quer testá-la, as variações aleatórias são testadas (com uma ferramenta chamada Macaco) e uma nota de qualidade é atribuída ao aluno (atualmente, uma porcentagem das boas construções juntamente com as variações).

Macros

editar

As macros podem ser organizadas em uma hierarquia de pastas, o que torna fácil transformar o CaRMetal em uma ferramenta para explorar geometrias não euclidianas.

Recursos especiais

editar

Pastas de trabalho

editar

Desde a versão do ano de 2010, o CarMetal usa um sistema de pastas, chamada de "Pasta de trabalho", que permite ao usuário colocar muitas figuras em uma pasta. É fácil navegar entre as folhas de uma pasta de trabalho, duplicar uma folha (ou figura), fundir várias pastas em uma. O CaRMetal permite ao usuário incluir arquivos de imagens e de JavaScript em uma figura. A extensão de arquivo de uma figura é zir, assim como no C.a.R, indicando as múltiplas compatibilidades entre ambos os programas. A estrutura de arquivos é uma meta-descrição da figura na linguagem XML. No entanto, uma pasta de trabalho é salva como uma pasta compactada no formato ZIP contendo todas as figuras zir, mais as imagens incluidas (GIF, JPEG ou PNG) e um arquivo de preferências.

Display numérico

editar
 
Um exemplo de uma matriz que pode ser modificada em tempo real com as extremidades dos vetores, e exibida com LaTeX.

É possível converter quaisquer medidas numéricas da figura em texto, para fins de exibição. Por exemplo, se um segmento chamado 's1' possui comprimento de 4,5 unidades, escrevendo-se

"O comprimento do segmento é %s1%"

cria uma cadeia de caracteres que é exibida como O comprimento do segmento é 4.5. Essa cadeia de caracteres pode ser incluída na figura mas também configurada como o pseudônimo de um objeto (por exemplo s1) ou o nome de uma expressão. Quando uma das extremidades do segmento é movida com o mouse, o texto é editado em tempo real. Isso é chamado um texto dinâmico.

O CaRMetal usa HotEqn e JLatexMath, que são interpretadores LaTeX, e é possível escrever fórmulas LaTeX no interior de objetos de texto. Por exemplo, se poly1 é um quadrado, e alguém deseja encontrar um círculo cuja área seja a mesma do quadrado, é possível construir uma expressão textual como esta:

"O raio do círculo seria $\sqrt{\frac{%poly1%}{\pi}}\simeq %sqrt(poly1/pi)%$"

Isso pode fornecer um texto como esse:  

A rubustez dessa ferramenta vem do fato de que é possível misturar textos dinâmicos com fórmulas LaTeX, obtendo LaTeX dinâmico (quando o tamanho do quadrado muda, o display muda também)!

 
um dodecaedro pode ser rotacionado com o mouse

O CaRMetal permite ao usuário configurar algumas propriedades dos objetos, como sua cor ou o fato de eles serem visíveis ou não, como condicionais. Cada objeto pode ter um número de camada. Uma aplicação importante desses recursos é o modo 3D do CaRMetal, que surge com um tetraedro regular, um cubo, um diamante e um dodecaedro. Também é possível ligar um ponto ao interior de uma circunferência ou polígono. Este recurso, herdado do C.a.R., é baseado nas coordenadas do baricentro. É possível falar de 2.5D porque o CaRMetal não é exatamente um software 3D, mas é, também, mais do que um software 2D.

Magnetismo

editar

Um ponto pode ser tornado magnético com uma distância e uma lista de objetos pelos quais ele é atraído sempre que o ponto esteja suficientemente próximo de um ou de muitos desses objetos (suficientemente próximo significa que a distância entre eles é menor do que a distância mínima que é uma propriedade do ponto, e é medida em unidades de pixel);

Por exemplo: quando um ponto é atraído para um conjunto finito de pontos que estão fixos, ele pode explorar uma geometria finita.

Desde a versão do ano de 2013 existe a possibilidade de se executar uma imagem do CaRMetal como servidor (tipicamente, a do professor) e muitas como clientes. Portanto, é possível:

  • enviar uma figura para o servidor
  • do servidor, enviar uma figura correta para um estudante que perdeu a sua, ou não pode criá-la no tempo exigido
  • coletar dados, geométricos ou não, dentro de uma única figura (a do servidor)
  • manipular a mesma figura ao mesmo tempo, para muitas pessoas que compartilham seus trabalhos
  • enviar e receber programas JavaScript (veja abaixo)
  • conversar sobre uma figura compartilhada...

JavaScript dentro do CaRMetal

editar

A ferramenta de script mistura algorítmos e geometria. Tais ferramenta de scripts também existem no DrGeo, no Kig e no Cinderela. Para executar um script, o usuário clica sobre um ícone representando um semáforo. Um script pode ser anexado a um ou a muitos pontos, de modo que qualquer movimento de um desses pontos executa o script. Isso permite tipos de Cinemática Inversa e GeoLicia.

Variáveis

editar

Para criar um objeto geométrico em JavaScript é suficiente clicar em um ícone que o represente. A instrução em JavaScript aparece no editor, que predefine os parâmetros. O usuário necessita apenas editá-los, sem precisar usar técnicas de memorização. Mas quando um objeto geométrico é criado, a variável que chama a rotina é realmente uma cadeia de caracteres contendo o nome do objeto.

Por exemplo,

a=Point(2,3);

cria um ponto, geralmente chamado de P1 e a variável a contém a cadeia de caracteres "P1". Isso possibilita referir-se ao ponto através do seu nome.

As coordenadas do ponto são inicializadas, mas ainda é possível mover o ponto com a utilização do mouse. Também é possível criar um ponto em programação procedural com:

Point("A",2,3);

Neste caso, o nome do ponto é "A" (a menos que já exista um objeto chamado "A"), e nenhuma variável é configurada para o nome "A".

Entrada e saída

editar

Existem quatro maneiras de exibir a saída de uma variável:

  1. Criar uma expressão dentro da figura (ou exibir com uma média gráfica, tal como um histograma);
  2. Print que abre uma nova janela e imprime o conteúdo da variável nela;
  3. Println que também vai para a linha;
  4. Alert que abre uma janela de alerta, que é fechada assim que o usuário pressionar OK.

Para entrar com uma variável:

  1. Input que abre uma janela de entrada (com um texto) e aguarda pelo clique no botão OK
  2. InteractiveInput que permite ao usuário escolher um objeto na figura

Este paradigma considera as variáveis do programa não necessariamente como variáveis numéricas ou textuais, mas também pode atuar em objetos gráficos. Este é um recurso comum com os softwares Kig (mas, neste caso, a linguagem é Python) e DrGeo (neste caso, com a linguagem Scheme).

Strings

editar

É possível configurar as coordenadas de um ponto como texto escrito na linguagem do CaRMetal. Por exemplo: para ter um ponto B que se segue de A, exceto se as coordenadas de B são inteiras (para modelar um inteiro de Gauss), o usuário pode escrever:

a=Point("2.72","3.14");
b=Point("round(x_a)","round(y_a)");

Como um exemplo, o Triângulo de Sierpinski pode ser construído como um Sistemas de funções iterativas com um script recursivo, que é bastante curto devido às instruções gráficas já disponíveis, tais como MidPoint:

a=Point(-4,-2);
b=Point(4,-2);
c=Point(0,4);
m=Point(Math.random(),Math.random());
SetHide(m,true);
for(n=0;n<2000;n++){
    dice=Math.ceil(Math.random()*3);          //A 3-faces dice!
    switch(dice){
        case 1: {p=MidPoint(a,m); break;
        }
        case 2: {p=MidPoint(b,m); break;
        }
        case 3: {p=MidPoint(c,m); break;
        }
    }
    SetPointType(p,"point");
    m=p;
}

Após a nuvem de pontos ter sido construída (e inclusive enquanto o script permanece em execução!) o usuário pode mover A, B e C com o mouse (ou automaticamente com o Macaco): o triângulo é dinâmico!

Objetos JavaScript

editar

O CaRMetal também pode usar objetos JavaScript, tais como:

  1. matrizes, úteis para fazer estatísticas em figuras geométricas;
  2. O objeto date, útil para medir tempo;
  3. Objetos String e expressão regular, que tornam fácil implementar sistemas de Lindenmayer;
  4. Objetos JavaScript gerais podem ser utilizados para criar novos objetos geométricos, tais como números complexos, matrizes, entre outros. Esta programação orientada a objetos funciona como os scripts em Python do Kig, apesar de, até hoje, ninguém aparentemente publicou algo que os utilize.

Referências

  1. Eric Hakenholz. «CaRMetal translation». Consultado em 11 de Dezembro de 2013 

Bibliografia

editar
  • Vers des spécifications formelles : Fondements Mathématiques et Informatiques pour la Géométrie Dynamique, Bernard Genevès (PhD) PDF
  • Busser Alain. TP sous JavaScript avec CaRMetal. Bulletin de l?APMEP, 487 (2010), p. 191-199.
  • Busser Alain. Un an d?algorithmique avec CaRMetal en Seconde. MathémaTICE, 21 (2010) (online article: [1])
  • Martin Yves. Algorithmique et intégration des outils. Repères IREM, 79 (2010), p. 5-22.
  • Martin Yves. Géométrie repérée dynamique : une autre voie vers l?algébrisation ? MathémaTICE, 20 (2010) (available online: [2])
  • Martin Yves. Quand la géométrie dynamique rencontre la programmation. In Actes du colloque « Les mathématiciens et l?enseignement de leur discipline en France » (CIRM, Marseille/Luminy, 15-19 mars 2010) (video online: [3])
  • Martin Yves. CaRMetal, une géométrie dynamique enrichie. Expressions, 35 (2010), p. 165-272 PDF

Ver também

editar

Ligações externas

editar
  • Este artigo foi inicialmente traduzido, total ou parcialmente, do artigo da Wikipédia em inglês cujo título é «CaRMetal», especificamente desta versão.