Preface to Cinderella.2.0 - Cinderella Documentation
Description: The user's guide to the Interactive Geometry Software Cinderella

# Preface to Cinderella.2.0

I may not always be perfect, but I am always me!

Found on a T-shirt

Seven and a half years have passed since the first release of Cinderella in 1998, and the project went through several metamorphoses that we did not foresee ourselves. Now, we feel that enough new aspects and features were added to justify a new major release: Cinderella.2.

In a sense programming Cinderella turned out to be a kind of "never ending story" and there is always one more feature that should be added or another one that could be improved (or, not infrequently, debugged). So, the current version may not be perfect in all aspects, but it has so many substantially new features that it would be a pity not to release it and see what people will do with it.

So, what do you have to expect from the new version? First of all, the most obvious change is that Cinderella is no longer "only" a geometry program (nevertheless the geometry part has been improved significantly). The present release consists of three major parts: Cinderella – the geometry engine, CindyScript – a functional programming language and CindyLab – a physics simulation engine. At first sight, these three parts can be used almost independently from each other. However, Cinderella, CindyScript and CindyLab are designed to work hand in hand and to take as much advantage from each other as possible — if you look at our new logo, this logo symbolizes the three parts interacting with each other in various ways. Although it would be an exciting story, we will not explain here how we ended up with this final design, because this would fill too many pages. In short, it was a long process, driven by demands and requests of our users, our own desire for cool software scenarios, several conferences on scientific visualization and multimedia and last but not least several days and nights in which we were following fruitful paths (or sometimes dead ends).

In the geometry part of Cinderella there are many substantial improvements. Transformations and Transformation groups have been added, there are many more tools for constructing conics, it is even possible to construct fractal objects. Also, the direct construction of regular polygons has been made possible. Transformations and transformation groups turned out to be a great help to make more advanced constructions and we encourage the users to really take advantage of those concepts. One of the mostly requested features were "macros". Cinderella.2 now comes with a copy/paste/redefine concept that facilitates the re-usage of already available construction parts. It is also possible to encapsulate parts of a construction into a toolbar button that can be reused in other constructions as well.

CindyLab provides an environment in which the points of Cinderella constructions may become masses, and in which segments may act like springs or other force-generating objects. Although CindyLab only provides a particle/mass/force simulation paradigm, it is a quite powerful tool. We already had a lot of fun experimenting with solar systems with several suns, strange mechanical devices and simulated billiard tables.

Finally, CindyScript is a functional programming language that was designed with applications in geometry but also other parts of mathematics in mind. CindyScript grew out of the desire to have a kind of function plotter available in Cinderella. Well, as things sometimes happen in computer science one starts with a simple solution for a demand and observes that by similar techniques much more could be achieved. Roughly the history was like: We want to calculate formulas - why don't we use this for manipulating the position of points? - why don't we add control structures? - why don't we add high level matrix operations? - ... and list operations ... and recursion structures ... and even more powerful function plotting? This is how we finally ended up with a full-featured, mathematically oriented functional, real-time, high level programming language. We are quite sure that, so far, we do not even imagine what is possible by fully exploiting the advantages of a dynamic geometry environment in connection to a programming language. At least we are very surprised how our students who already work with CindyScript use it! We encourage all readers to build really cool and unexpected applications with this tool.

Still there are several bells and whistles that do not fall under the above three program parts. For instance Cinderella.2 supports the recognition of hand sketches that makes it possible to use Cinderella with a pen tablet an interactive whiteboard or a PDA.

There are several features that did not make their way to the final release. The decision whether a feature entered the release was mainly made by stability considerations. We will add many of these features one by one over the next few months whenever we think that they work reasonably well. Among the things that will come are: native support for geometric bases, a recording tool (CINErella) for geometric tutorial films, a hardware simulator, and many more. So we recommend updating frequently.

It is almost impossible to mention all the people that have been helpful in finishing Cinderella.2 by comments, user feedbacks, beta-testing, etc. Still first of all we want to give a great "thank you" and a big excuse to our families. Finishing Cinderella took a lot of our spare time and our families very often missed us as fathers and husbands. Uncountable many weekends and nights were sacrificed for finishing yet another feature or chasing yet another bug. We both hope that in the future there will be more time for all the other things that are also important in live.

We also want to thank Dirk Materlik who got involved into the team during his diploma thesis about sketch recognition and later in the Matheon Visage project, and besides his work there helped to resolve many critical design issues (the Inspector wouldn't be what it is without him). Also a great thank you to to Gunter Gemmel who in an overnight-hack gave us the gift of an implementation of the PSLQ algorithm. Many people have contributed by actively using and commenting several beta and pre-beta versions. Here are some of them, in no special order (and a big excuse to all those who we forgot in this list): Hermann Vogel, Gunter Gemmel, Martin von Gagern, Peter Lebmeir, Vanessa Krummeck, Thorsten Orendt, Andreas Fest, Carola Dietrich, Wolf Dieter Heker, David Bakin, Christof Boeckler, Gerhard Bischoff, Alexander Elkins, Dan Beaton, Camille Wormser, Franz Klement.

Finally there are two people who definitely deserve a special mention. One of them is David Kramer, our copy editor from Harvard. He carefully read every single line we wrote for the documentation and helped us as non-native speakers to end up with an at least linguistically understandable documentation. Thank you David! The second person is, in a sense, almost a member of the Cinderella team. It is Martin Peters, our responsible editor at Springer Verlag. He always had an open ear for our new problems, always understood that we need even more time to end-up with a release version, was always helpful in finding solutions to publishing issues and was extremely active in making several important contacts. And, the most important thing, always gave us the freedom to make our own decisions while trusting that this is the best way to end up with the best possible outcome. Martin, thanks a lot for your patience and confidence!

May 2006 Jürgen Richter-Gebert, Munich Ulrich Kortenkamp, Schwäbisch Gmünd