# Das Handbuch zu &kig;

## Einleitung

&kig; ist eine Anwendung für interaktive Geometrie. Es soll hauptsächlich 2 Zwecken dienen:

- Schüler sollen mit Hilfe des Computers mathematische Figuren und Konzepte interaktive entdecken können.

- Es soll ein WYSIWYG Werkzeug zum zeichnen von mathematischen Figuren und deren Verwendung in anderen Dokumenten sein.

Probleme mit &kig; können über das interne Fehlerberichtsystem (Hilfe Berichten Sie Probleme oder Wünsche... ) gemeldet werden oder direkt an mich unter devriese@kde.org.

Seit &kig; Makros und geometrische Orte unterstützt, ist es möglich sehr ausgefeilte Makros zu definieren. Falls Sie ein interessantes Makro erstellt haben, das vielleicht für andere Nutzer ebenfalls von Interesse sein könnte, dann schicken Sie es mir bitte per Email an devriese@kde.org. Ich würde es dann zusammen mit &kig; veröffentlichen (dabei wird es unter &kig;s Lizenz, der GPL, veröffentlicht, damit andere Nutzer es frei benutzen und anpassen können).

## Grundlegende Benutzung

### Objekte konstruieren

#### Punkte konstruieren

Punkte können auf verschiedene Weise konstruiert werden:

- Wählen Sie dazu Objekte Punkte Punkt aus der Menuzeile aus oder drücken Sie den entsprechenden Knopf in der Werkzeugleiste. Jetzt kann man einen Punkt durch einen Klick an der gewünschten Position im Fenster konstruieren.

  Analog können andere Objekte erstellt werden: auf den gewünschten Eintrag in der Menuzeile oder den entsprechenden Knopf in der Werkzeugleiste drücken und dann die notwendigen Objekte auswählen, um das Objekt zu konstruieren.

- Da man sehr oft Punkte konstruieren muss, kann man dies durch einen Klick mit der mittleren Maustaste an einer beliebigen Stelle im Fenster tun, ohne vorher die entsprechende Auswahl in den Menüs oder Leisten getroffen zu haben.

- Man kann Punkte konstruieren, während man im Hintergrund ein anderes Objekt erstellt. Dadurch werden die Punkte dem eigentlich zu konstruierendem Objekt hinzugefügt. Mehr dazu weiter unten.

Ein Punkt wurde konstruiert Ein Punkt wurde konstruiert

#### Andere Objekte konstruieren

Die Konstruktion anderer Objekte als Punkte wird normalerweise durch die Auswahl des entsprechenden Eintrages im Menü Objekte oder den entsprechenden Knopf in der Werkzeugleiste erledigt.

Konstruieren eines Kreises Konstruieren eines Kreises

Dadurch wird der Konstruktionsprozess des gewählten Objektes gestartet. Alle diese Objekttypen benötigen Parameter. Hat man also einen Kreis durch Mittelpunkt und Punkt gewählt, dann müssen 2 Punkte für Mittelpunkt und Punkt auf dem Kreis angegeben werden.

Um diese Parameter anzugeben, klickt man zuerst auf das gewünschte Objekt. Bewegt man den Mauszeiger über ein Objekt, das für die Konstruktion verwendet werden kann, wird eine Vorschau auf das Objekt gezeigt, wie es aussehen wird. Für Objekte die Punkte als Parameter benötigen, kann man einen neuen Punkt an der aktuellen Position durch einen Klick mit der mittleren Maustaste anlegen.

Man kann die Konstruktion eines neuen Objektes jederzeit abbrechen, indem man die &Esc; Taste oder den Stopp Knopf (rotes Achteck mit X) in der Werkzeugleiste drückt.

Einen Kreise konstruieren Konstruieren eines Kreises

### Objekte auswählen

Objekte können auf folgende Weise ausgewählt werden:

- Durch einen Klick auf das Objekt wird dieses ausgewählt und die vorherige Auswahl gelöscht. Möchte man dieses Verhalten nicht, dann muss man während des Klicks die &Ctrl; Taste gedrückt halten.

- Mit einem Klick und anschließendem Ziehen an einer leeren Stelle auf der Zeichenfläche, kann man durch das entstehende Viereck mehrere Objekte mit einmal auswählen. Zuvor wird die vorherige Auswahl gelöscht. Dies kann man wiederum durch das Halten der &Ctrl; Taste verhindern.

Objekte auswählen Objekte auswählen

### Objekte verschieben

Um Objekte verschieben zu können, muss man sie zuerst ausgewählt haben.

Um die ausgewählten Objekte zu verschieben, muss man die linke Maustaste gedrückt halten über einem der gewählten Objekte. Jetzt kann man durch Ziehen der Maus die Objekte verschieben. Ist man damit fertig, läßt man die linke Maustaste wieder los.

Für einige Objekte (besonders geometrische Orte) kann das Verschieben von Objekten auf älterer Hardware sehr langsam sein. Das läßt sich leider nicht verhindern, da im Hintergrund Berechnungen stattfinden müssen.

Klickt man mit der rechten Maustaste auf ein ausgewähltes Objekt und wählt Verschieben, dann kann man das Objekt durch Mausbewegung verschieben. Wurde die gewünschte Position für das Objekt erreicht, dann kann das Verschieben durch einen Klick mit der linken Maustaste beendet werden.

### Objekte löschen

Objekte müssen zuerst ausgewählt werden, und können dann auf verschiedene Weise gelöscht werden:

- durch Drücken der Entfernen Taste

- durch Drücken des Löschen Knopf in der Werkzeugleiste

- Klick mit der rechten Maustaste und dem Aufruf von Löschen im erscheinendemKontextmenü.

### Objekte zeigen und ausblenden

In &kig; können Objekte ausgeblendet werden. Dazu wählt man das Objekt aus, klickt mit der rechten Maustaste darauf und ruft aus dem erscheinendem Kontextmenü den Eintrag Ausblenden.

Um ein Objekt wieder anzuzeigen, wählt man Bearbeiten Alle zeigen. Es werden alle momentan ausgeblendeten Objekte wieder angezeigt.

### Rückgängig/Wiederherstellen

In &kig; kann man fast jede Änderungen rückgängig machen. Einfach dazu die entsprechenden Rückgängig/Wiederherstellen Knöpfe aus der Werkzeugleiste oder die entsprechenden Tastenkürzel aufrufen.

### Vollbildmodus

&kig; verfügt über einen Vollbildmodus. Um diesen zu nutzen wählt man Einstellungen Ganzer Bildschirm oder den entsprechenden Knopf aus der Werkzeugleiste.

Um den Vollbildmodus zu verlassen, klickt man mit der rechten Maustaste auf die Zeichenfläche an einer Stelle ohne Objekte und wählt Vollbildmodus an-/ausschalten oder man drückt die &Esc; Taste.

## &kig; Objekt Typen

&kig; unterstützt eine Vielzahl von Objekten. Es ist zu beachten, dass nicht alle Objekte in der Werkzeugleiste verfügbar sind, sondern über die Menuzeile im Menüpunkt Objekte auffindbar sind. Natürlich kann wie überall in &kde; der Inhalt der Werkzeugleiste angepasst werden. Falls dies gewünscht ist, steht die Möglichkeit zur Verfügung unter Einstellungen Werkzeugleisten einrichten....

## Fortgeschrittene Benutzung

### Kontextmenüs

&kig; bietet Kontextmenüs für die Objekte. Dazu genügt ein Klick mit der rechten Maustaste auf das Objekt und das Kontextmenü erscheint. Es gibt eine Vielzahl von Möglichkeiten: andere Objekte konstruieren, Farben setzen, Ausblenden, Verschieben oder Löschen von Objekten. Einige Objekte haben spezifische Möglichkeiten (z.B. kann man bestimmte Punkte einer Linie zuordnen). Sie sollten selbsterklärend sein.

### Dokument Kontextmenüs

Ein Klick mit der rechten Maustaste auf ein Dokument (nicht auf ein Objekt) zeigt ein Kontextmenü, mit dem man neue Objekte konstruieren, das Koordinatensystem ändern, Objekte wieder anzeigen oder sogar den Zoom einstellen kann.

### Makros definieren

Ein weiteres Merkmal von &kig; ist die Unterstützung von Makros. Damit kann man neue Objekt als Zusammensetzung anderer Objekte definieren.

Beispiel: Nehmen wir an es soll ein Makro zur Konstruktion eines Kreises durch 3 Punkte erstellt werden. Dazu konstruiert man 3 Punkte und die Linien dazwischen. Auf zweien dieser Linien errichtet man in der Mitte die Senkrechten, deren Schnittpunkt die Mitte für den Kreis durch die 3 Ausgangspunkte bildet. Das folgende Bild veranschaulicht die Konstruktion.

Ein Test Makro Ein Test Makro

Jetzt muss das Makro definiert werden. Dazu wählt man Neues Makro... aus dem Typen aus oder klickt auf den entsprechenden Knopf in der Werkzeugleiste. Ein Assistent erscheint und fordert zum Markieren der gegebenen Objekte auf. In unserem Beispiel sind das die 3 Punkte. Man wählt jetzt die Punkte aus (durch einen Klick, ein weiterer Klick hebt die Markierung für das Objekt wieder auf) und bestätigt dies mit dem Nächster Knopf. Abschließend muss man das erhaltene Objekt (in unserem Beispiel den Kreis) auswählen.

Der Makro Assistent Der Makro Assistent

Nachdem die vorherigen Schritte erledigt wurden, muss man den Nächster Knopf drücken, um fortzusetzen. Nun muss man einen Namen und optional eine Beschreibung für den neuen Typ vergeben und abschließend mit dem Abschließen bestätigen. Das Makro ist jetzt vollständig definiert.

Um das Makro zu benutzen, wählt man es aus der Werkzeugleiste direkt aus oder ruft es aus dem Menü Objekte auf. Ein Makro zu konstruieren funktioniert genauso wie mit jedem anderen Objekt.

Das neue Makro benutzen Das neue Makro benutzen

### Arbeiten mit Makros

Wie im vorherigen Kapitel gezeigt, erlaubt es &kig; einem eigene Objekte zu definieren. &kig; stellt weiterhin sicher, dass bei jedem Beenden die angelegten Objekte gespeichert werden und beim nächsten Start wieder zur Verfügung stehen. Ein manuelles Laden ist nicht notwendig. Man kann aber noch mehr mit Makros anstellen. Über Typen verwalten im Menü Typen ist ein Fenster zur Verwaltung der Makros abrufbar. Man kann ungenutzte Makros löschen, Makros in Dateien speichern und sogar Makros aus Dateien laden.

Typen verwalten Fenster Das Typen verwalten Fenster

### Textfelder

In &kig; können Textfelder einer Konstruktion hinzugefügt werden. Das ist sehr nützlich um Namen, Erklärungen oder anderen Text in Konstruktionen anzuzeigen. &kig; kann weiterhin variable Informationen von Objekten (Eigenschaften) anzeigen.

Um ein Textfeld zu konstruieren, einfach den Textfeld Knopf aus der Werkzeugleiste anklicken oder im Menü auswählen unterObjekte Sonstige Textfeld.

Jetzt muss man eine Position für das Textfeld festlegen. Man kann entweder eine zufällige Position auf der Zeichenfläche auswählen oder es an ein anderes Objekt dranhängen.

Ein Textfeld an einen Kreis hängen... Ein Textfeld an einen Kreis hängen...

Jetzt wird das Textfeldfenster angezeigt. Hier trägt man den im Textfeld anzuzeigenden Text ein und bestätigt mit Abschließen. Das Textfeld sollte sich jetzt in der Zeichnung befinden.

Das Textfeldfenster Das Textfeldfenster

Das vorherige Beispiel war einfach, es wurde nur Text angezeigt. Man kann aber auch sich ändernde Informationen über die Objekte im Textfeld anzeigen (z.B. kann man ein Textfeld mit dem Inhalt Diese Strecke ist %1 Einheiten lang... anzeigen, wobei %1 automatisch mit der Länge des entsprechenden Strecke ersetzt wird).

Dazu muss man einen Text mit Platzhaltern (%1, %2, usw.) eingeben. Danach betätigt man den Nächster Knopf. Will man den Text oder die Platzhalter später noch ändern, dann kann man zurückkehren über den Knopf Zurück.

Der Assistent zeigt nun den eingegebenen Text mit den Platzhaltern in der Form Argument 1. Um festzulegen, was für ein bestimmtes Argument angezeigt werden soll, muss man zuerst das Argument im Text anklicken. Jetzt klickt man auf das Objekt, über das man Informationen anzeigen lassen will und wählt die gewünschte Information aus dem erscheinendem Fenster. In unserem Beispiel oben würden wir auf Argument 1 klicken, in der Arbeitsfläche von &kig; auf die entsprechende Strecke klicken und die gewünschte Information wie Länge aus dem erscheinendem Fenster auswählen. Danach kann man weitere variable Teile des Textes festlegen. Ist man fertig, dann schließt man die Konstruktion des Textfeldes über den Abschließen Knopf ab.

Eine Eigenschaft für den variablen Teil auswählen Eine Eigenschaft für den variablen Teil auswählen

### Geometrische Punkte

&kig; bietet Unterstützung für geometrische Orte. Ein geometrischer Ort ist ein Konzept aus der höheren Schulmathematik. Formal gesprochen ist ein geometrischer Ort die Figur, die sich durch die Bewegung eines Punktes innerhalb bestimmter Einschränkungen ergibt. Das klingt sehr kompliziert, ist aber kein schwieriges Konzept, wie das folgende Beispiel zeigen wird.

Man betrachte folgende geometrische Konstruktion: Man zeichnet einen Kreis mit einem Punkt auf dessen Rand. Den Punkt konstruiert man, indem man die Maus auf den Kreisrand bewegt und die mittlere Maustaste drückt. Versucht man jetzt den neuen Punkt zu bewegen, dann wird man feststellen, dass man ihn nur auf dem Kreisrand bewegen kann. Jetzt konstruieren wir eine Strecke zwischen diesem Punkt und dem Mittelpunkt des Kreises. Anschließend konstruieren wir den Mittelpunkt der Strecke.

Eine einfache Konstruktion mittels geometrischem Ort Eine einfache Konstruktion mittels geometrischem Ort

Bewegt man nun diesen auf den Kreisrand beschränkten Punkt, dann bewegt sich die Strecke und ihr Mittelpunkt ebenfalls mit. Würde man jetzt einen Stift über den Mittelpunkt der Strecke halten und den Punkt auf dem Kreisrand einmal auf dem Kreis bewegen, dann würde ein neuer Kreis mit der halben Größe entstehen. Genau das macht ein geometrischer Ort. Der Weg den der Mittelpunkt bei der Rotation des Punktes auf dem Kreisrand zurücklegt, ist der geometrische Ort.

Den geometrischen Ort zu konstruieren, ist sehr einfach. Dazu klickt man auf den geometrischen Ort Knopf in der Werkzeugleiste oder wählt Objekte Sonstige Locus aus dem Menü aus. Jetzt wählt man zuerst den abhängigen Punkt (der Text Bewegender Punkt erscheint) und dann den sich bewegenden Punkt aus. Der geometrische Ort erscheint.

## Skripte

&kig; bietet die Möglichkeit eigene Objekte in der Python Skript Sprache zu definieren. Das ist eine sehr fortgeschrittene Funktion und ich kenne nur noch ein anderes Programm (das GNOME Programm &drgenius;) für interaktive Geometrie, dass diese Funktion bietet.

Mit der Python Skript Erweiterung in &kig; kann man die Art eigene Objekte durch Elternobjekte zu definieren festlegen. So kann man z.B. als Mathematik Lehrer den Bedarf haben, einen bestimmten Punkt eines Kegels zu berechnen. Anstatt nun mit komplexen Konstruktionen und Makros zu hantieren, kann man die Rechenvorschrift einfach in der Python Sprache niederschreiben und &kig; wird den Punkt entsprechend darstellen.

Nehmen wir an uns ist das Mittelpunkt Objekt zur Ermittlung eines Mittelpunktes zwischen 2 Punkten nicht bekannt und wir wollen selber die Rechenvorschrift entwickeln. Dazu klickt man auf den Python Skript Knopf in der Werkzeugleiste oder man wählt Objekte Sonstige Skriptobjekt im Menü. Es wird nun ein Assistent angezeigt, der durch den Prozess begleitet.

Der Skriptobjekt Assistent Der Skriptobjekt Assistent

Zuerst muss man die Argumente des Skriptobjektes wählen. In unserem Beispiel sind das die 2 Punkte, zwischen denen wir den Mittelpunkt anzeigen wollen. Diese wählt man im Hauptfenster von &kig; aus und fährt mit dem nächsten Schritt über den Nächster Knopf fort.

Jetzt wird ein Texteingabefeld angezeigt, in den man den Quelltext für das Skriptobjekt einzugeben hat. Ein Quelltextgerüst und einige Kommentare sind bereits vorhanden. Es ist wichtig sicher zu stellen, dass man korrekten Python Quelltext eingibt. Für Nutzer, die mit Python vertraut sind, ist ersichtlich, dass wir eine Funktion `calc` definieren. Man muss sich an die Python Regeln zum Definieren einer Funktion halten. So muss jede Zeile der Funktion mit einem Tabulator eingerückt werden. Die erste Zeile ohne Tabulator am Zeilenanfang beendet die Funktionsdefinition.

Die zu definierende Python Funktion heißt calc und verarbeitet in unserem Beispiel 2 Argumente. Das sind die im vorherigen Schritt ausgewählten Objekte. Die Anzahl der Argumente stimmt immer mit der Anzahl der gewählten Objekte überein. Sie heißen `arg1` und `arg2`, aber man kann natürlich einen anderen Namen vergeben.

In der Funktion kann man alle Arten von Berechnungen mit den Argumenten durchführen, die man für nötig erachtet. Man muss das Objekt zurückgeben, dass erscheinen soll. In unserem Beispiel ist es ein Point Objekt. Die beiden Argumente sind ebenfalls Point Objekte und wir können die Funktion `Point.coordinate()` nutzen, um die Koordinaten der Punkte zu verarbeiten.

Die im Beispiel notwendige Berechnung ist einfach. Wir addieren die beiden Punkte und teilen das Ergebnis durch 2. Mit den neuen Koordinaten erstellen wir ein neues Point Objekt. Der dazu notwendige Python Quelltext lautet:

    def calc( a, b ):
            m = ( a.coordinate() + b.coordinate() ) / 2;
            return Point( m )

Quelltext eingeben Quelltext für den Mittelpunkt im Skriptobjekt Assistent eingeben...

Drückt man nun den Abschließen Knopf, wird das neue Objekt im Arbeitsbereich von &kig; angezeigt. Bewegt man einen der Punkte, dann bewegt sich der neu erstellte Punkt entsprechend mit. Man kann natürlich weitaus komplexere Objekte erstellen, man sollte einfach es ausprobieren!

Ein Skriptobjekt erstellt Das neu erstellte Skriptobjekt

Alle &kig; Objekte können im Python Quelltext benutzt werden. Wie weiter oben gezeigt wurde, gehören Punkte zur Point Klasse und man kann die Koordinaten über die Funktion `Point.coordinate()` ermitteln. Man kann alle Arten von Objekten zurückgeben, nicht nur Point Objekte. Viele weitere Klassen und Funktionen stehen im &kig; Python Quelltext zur Verfügung, eine vollständigere Referenz befindet sich hier.

## &kig;s Funktionen

- &kig; ist eine OpenSource Anwendung. Das bedeutet, man darf es frei verändern und nutzen, wie man will. Die Weitergabe von &kig; unterliegt einigen Einschränkungen, hauptsächlich dass jeder die gleichen Rechte an &kig;s Benutzung hat, dazu gehören auch die eigenen Änderungen.

  Freie Software wird in einem sehr offenem Umfeld entwickelt und die Entwickler reagieren meist sehr schnell auf die Rückmeldung durch die Nutzer. Deshalb, wenn es Fragen, Probleme oder sonstige Sachen bezüglich &kig; gibt, dann lassen Sie mich bitte davon wissen unter devriese@kde.org.

- &kig; ist eine KPart Anwendung. Das bedeutet, man kann sie in andere &kde; Programme einbetten. Öffnet man z.B. eine `.kig` Datei in &konqueror;, dann wird sie direkt angezeigt, ohne dass eine externe Anwendung gestartet werden musste.

- Arbeiten mit &kig; ist unkompliziert. Das Konstruieren von Objekten ist einfach und interaktiv, eine Vorschau wird z.B. gleich angezeigt. Verschieben, auswählen und konstruieren funktioniert genau so, wie man es erwartet. Die Rückgängig Unterstützung ist ebenfalls intuitiv.

- &kig; unterstützt die Erstellung von Makros auf eine sehr unkomplizierte Art und Weise. Diese Objekte stehen dem Nutzer wie normale Objekte zur Verfügung. Sie werden beim Beenden gespeichert und beim Start geladen, so dass sie nicht verloren gehen. In Typen verwalten steht, wie man die Objekte verwaltet. Man kann Objekte in Dateien exportieren, aus Dateien importieren und sie löschen.

- &kig; speichert seine Daten in einem sauberen &XML; Format.

- &kig; unterstützt die Konstruktion von geometrischen Orten.

- &kig; erlaubt den Export einer &kig; Datei in interessante Formate wie Bilder und XFig Dateien. Das ist sehr nützlich, da noch nicht alle Programme das &kig; Dateiformat unterstützten.

- &kig; verfügt über ein sehr flexibles Transformationssystem.

- &kig; versucht kompatibel mit seinen Mitbewerbern zu sein. Deshalb unterstützt es das &kgeo; und &kseg; Dateiformat. Unterstützung für weitere Dateiformate ist in Arbeit.

## Fragen und Antworten

&reporting.bugs; &updating.documentation;

## Mitwirkende und Lizenz

&kig;

&kig; Copyright 2002 Dominique Devriese devriese@kde.org

Dokumentation Copyright 2002-2003 Dominique Devriese. devriese@kde.org

Sebastian Steins5228@informatik.htw-dresden.de

&underFDL; &underGPL;

## Installation

### Bezugsquellen von &kig;

&install.intro.documentation;

### Kompilierung und Installation

&install.compile.documentation;

## Unterstützung

### Freie Software

&kig; ist Freie Software. Das bedeutet, der Quelltext ist frei verfügbar im Internet und jeder kann ihn nutzen, ändern und verteilen. Für mich ist es ein Hobby Projekt und ich konnte viel über Programmierung, C++, &kde;/&Qt;, Mathematik, verteilte Softwareentwicklung und Open Source Projekte lernen.

### Unterstützung

Das Ziel dieses Kapitels ist es, den Benutzer (Sie) auf die Rechte aufmerksam zu machen, die die &kig; Lizenz einem gewährt. Wie bei jeglicher freier Software kann man (soll man :) Probleme, die man während der Nutzung entdeckt, beheben, neue Funktionen hinzufügen und das Programm weiterverteilen. Man sollte mir die Änderungen schicken an devriese@kde.org, damit ich sie in der nächsten Version zum Nutzen aller mit veröffentlichen kann. Da ich selbst keine finanziellen Interessen an diesem Projekt habe, handelt es sich hier nicht um reines Marketing Gerede.

Sollten Zweifel über das eigene Recht an dieser Software oder dem Recht anderer an den eigenen Veränderungen an diesem Programm bestehen, dann sollte man die Lizenz lesen. Man findet die Lizenz in der `COPYING` Datei im &kig; Quelltextbaum oder in der Lizenzkartei im Über &kig; Fenster.

### Wie unterstützt man?

Jegliche Unterstützung ist willkommen! Ist man der Meinung die Icons sind schlecht, das Handbuch braucht eine Überarbeitung oder man hat dieses tolle Makro, das man mit der ganzen Welt teilen möchte, dann bitte nicht zögern dies an mich zu schicken. Dabei ist zu beachten, dass der Beitrag ebenfalls unter der GNU GPL, deren Text man in der Lizenz Datei `COPYING` im &kig; Quelltextbaum und in diesem Handbuch findet, veröffentlicht werden.

&documentation.index;