Prefácio

Cinderella é um programa destinado a fazer geometria no computador. Na sua forma actual é o culminar de três projectos realizados entre 1993 e 1998. É baseado em várias teorias matemáticas, desde as descobertas dos geómetras do século XIX, até métodos recentemente desenvolvidos que encontram a sua primeira aplicação neste programa.

A ideia para o primeiro destes projectos nasceu em 1993 durante uma conferência sobre Combinatória no Instituto Mettag-Leffler, na Suécia, quando Henry Crapo e Jürgen Richter-Gebert navegavam a bordo de um barco com o nome Cinderella. Nessa altura Jürgen Richter-Gebert tinha desenvolvido métodos simbólicos para demonstrações automáticas em Geometria [RG], e ambos sonhavam com um programa de computador que permitisse, após introduzir figuras com alguns cliques do rato, obter propriedades dessas configurações.

Henry e Jürgen iniciaram o seu projecto numa plataforma NeXT, cuja maravilhosa arquitectura de software tornara famosa. Cinderella foi o nome provisório do projecto, tendo-se, mais tarde, tornado definitivo.

Algumas semanas de desenvolvimento produziram o primeiro protótipo. O programa baseava-se na Geometria Projectiva e na Teoria dos Invariantes. Era capaz de produzir provas algébricas para muitos teoremas da Geometria Projectiva sobre pontos, rectas e cónicas [CrRG].

Contudo, a perda de popularidade da plataforma NeXT arrastou consigo a queda do entusiasmo inicial no Cinderella. Após o verão de 1995 quase nenhum progresso se registou. Numa conferência sobre Geometria Computacional, em Mt. Holyoke, MA, foi quase impossível demonstrar o programa, tal era a raridade de computadores NeXT e do seu sistema operativo.

Em Agosto de 1996, logo após essa conferência em Mt. Holyoke, nós (Ulli Kortenkamp e Jürgen Richter-Gebert, na altura trabalhando na Universidade Técnica de Berlim no grupo de Günter M. Ziegler) decidimos começar um novo projecto, baseado na linguagem Java, que não depende da plataforma. A linguagem Java era relativamente nova, e ambos temíamos que usar uma linguagem interpretada poderia tornar o programa muito lento, já que ele requer muitas computações em tempo real. Mas, de qualquer forma, decidimos tentar.

O objectivo deste segundo projecto era obter a funcionalidade do anterior, disponível na versão NeXT, substancialmente expandida com a possibilidade de realizar geometria euclidiana e não-euclidiana. Também desejávamos funcionalidade para lugares geométricos. Dado que Java é tão adequado à Internet, também queríamos que o nosso programa pudesse correr dentro de qualquer browser. Em particular queríamos ser capazes de produzir trabalhos práticos para os estudantes realizarem na Web. A capacidade de provar teoremas deveria ser utilizada para corrigir os problemas dos estudantes automaticamente.

Conferências, competições e os seus prazos induzem rapidez de execução dos projectos. A primeira versão foi apresentada em 1996 na universidade ETH de Zurique na conferência "CGAL-startup-meeting". Uma segunda versão venceu o "Multimedia Innovation Award" no Multimedia Transfer de ASK Karlsruhe em Janeiro de 1997.

Em 1997 Jürgen Richter-Gebert tornou-se professor na universidade ETH de Zurique. Esta mudança originou novo contratempo no projecto. Ulli Kortenkamp mudou-se para Zurique em Setembro.

Simultaneamente começámos a negociar a publicação de Cinderella. A princípio, planeámos polir e acabar o segundo projecto. Contudo, não foi assim que as coisas sucederam.

A segunda versão, como outros programas de Geometria Dinâmica, padecia de inconsistências matemáticas aparentemente irremovíveis. Elas advinham de ambiguidades em operações como "tome-se a intersecção de uma recta com uma circunferência". Pode haver dois, um ou nenhum ponto de intersecção, depende das posições das figuras em questão. Quando se arrasta uma figura o programa tem de decidir qual escolher. Esta aparentemente inócua ambiguidade pode dar origem a terríveis inconsistências no comportamento de uma contrução geométrica. Pode acontecer que um pequeno movimento de um ponto origine um salto brusco de outra parte da figura.

No começo de 1998 compreendemos que esta problema dos saltos de partes de figuras era solúvel. Contudo, ficou claro que a implementação da respectiva teoria não seria tarefa fácil. Cada configuração deveria ser mergulhada num espaço vectorial complexo. Resultados de Teoria das Funções Analíticas teriam de ser utilzados para evitar "situações singulares". Se queríamos usar estas novas perspectivas teríamos de reescrever o núcleo matemático do programa desde o início. O programa teria de efectuar aproximadamente 20-100 vezes mais cálculos, um desafio para nós e para o Java.

Decidimos empreender este terceiro projecto, e o resultado é este programa. Num período de trabalho extremamente intensivo (que levou ao limite a nossa paciência e a das nossas famílias) reescrevemos o programa de novo---afinando-o para melhor desempenho em todos os lugares possíveis.

Optar por todo este esforço foi mais tarde reconhecido como uma boa ideia. Os benefícios desta nova teoria revelaram-se maiores que o previsto. Baseados nos métodos novos fomos capazes de implementar verificação aleatória de teoremas de forma confiável. Esta técnica revelou-se muito mais útil que os métodos simbólicos que a precederam. Também tornou possível gerar lugares geométricos completos usando métodos genéricos, o que, tanto quanto sabemos, é uma novidade.

O presente programa é uma mistura de geometria antiga do século XIX, de análise complexa, dos nossos métodos e de tecnologia de programação moderna. Esperamos que o aprecie tanto como nós.

 
Jürgen Richter-Gebert, Ulli Kortenkamp
 

Zürich, Dezembro 1998


---> Introdução

<--- Apresentação

<--> Índice