<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kseg "<application
>KSeg</application
>">
  <!ENTITY cabri "<application
>Cabri</application
>">
  <!ENTITY drgenius "<application
>Dr.Genius</application
>">
  <!ENTITY package "kdeedu">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % German "INCLUDE">
  <!-- change language only here -->
]
>

<book lang="&language;">

  <bookinfo>
    <title
>Das Handbuch zu &kig;</title>

    <authorgroup>
      <author
><firstname
>Dominique</firstname
> <surname
>Devriese</surname
> <affiliation
> <address
><email
>devriese@kde.org</email
></address>
	</affiliation>
      </author>
    <othercredit role="translator"
> <firstname
>Sebastian</firstname
><surname
>Stein</surname
><affiliation
><address
><email
>kbruch@hpfsc.de</email
></address
></affiliation
><contrib
>Deutsche Übersetzung</contrib
></othercredit
> 
    </authorgroup>


    <copyright>
      <year
>2002</year
><year
>2003</year
> <holder
>Dominique Devriese</holder>
    </copyright>

    <legalnotice
>&FDLNotice;</legalnotice>

    <date
>2003-07-27</date
> <releaseinfo
>0.6.0</releaseinfo>
    
    <abstract>
      <para
>&kig; ist die &kde; Anwendung für interaktive Geometrie. </para>
    </abstract>

    <keywordset>
      <keyword
>KDE</keyword
> <keyword
>KDE-Edu</keyword>
      <keyword
>Kig</keyword
> <keyword
>Interaktive Geometrie</keyword>
      <keyword
>KGeo</keyword
> <keyword
>Cabri</keyword>
    </keywordset>
  </bookinfo>

  <chapter id="introduction">
    <title
>Einleitung</title>

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

    <itemizedlist>
      <listitem
><para
>Schüler sollen mit Hilfe des Computers mathematische Figuren und Konzepte interaktive entdecken können. </para
></listitem>

      <listitem
><para
>Es soll ein <acronym
>WYSIWYG</acronym
> Werkzeug zum zeichnen von mathematischen Figuren und deren Verwendung in anderen Dokumenten sein.</para
></listitem>
    </itemizedlist>

    <para
>Probleme mit &kig; können über das interne Fehlerberichtsystem (<menuchoice
><guimenu
>Hilfe</guimenu
> <guimenuitem
>Berichten Sie Probleme oder Wünsche...</guimenuitem
> </menuchoice
>) gemeldet werden oder direkt an mich unter <email
>devriese@kde.org</email
>. </para>
    <para
>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 <email
>devriese@kde.org</email
>. Ich würde es dann zusammen mit &kig; veröffentlichen (dabei wird es unter &kig;s Lizenz, der <ulink url="http://www.gnu.org/licenses/licenses.html#GPL"
>GPL</ulink
>, veröffentlicht, damit andere Nutzer es frei benutzen und anpassen können). </para>
  </chapter>

  <chapter id="using-kig-basic">
    <title
>Grundlegende Benutzung</title>
    <section id="constructing-objects">
      <title
>Objekte konstruieren</title>
      <section id="constructing-points">
	<title
>Punkte konstruieren</title>
	<para
>Punkte können auf verschiedene Weise konstruiert werden:</para>
	  <itemizedlist>
	    <listitem>
	      <para
>Wählen Sie dazu <menuchoice
><guimenu
>Objekte</guimenu
> <guisubmenu
>Punkte</guisubmenu
> <guimenuitem
>Punkt</guimenuitem
></menuchoice
> 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.</para
>  <note
><para
>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.</para
></note>
	    </listitem>
	    <listitem>
	      <para
>Da man sehr oft Punkte konstruieren muss, kann man dies durch einen Klick mit der <mousebutton
>mittleren</mousebutton
> Maustaste an einer beliebigen Stelle im Fenster tun, ohne vorher die entsprechende Auswahl in den Menüs oder Leisten getroffen zu haben. </para>
	    </listitem>
	    <listitem>
	      <para
>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 <link linkend="constructing-other-objects"
>weiter unten</link
>. </para>
	    </listitem>
	  </itemizedlist>

	<screenshot>
	  <screeninfo
>Ein Punkt wurde konstruiert</screeninfo>
	  <mediaobject>
	    <imageobject>
	      <imagedata fileref="constructed_a_point.png"
	      format="PNG"/>
	    </imageobject>
	    <textobject>
	      <phrase
>Ein Punkt wurde konstruiert</phrase>
	    </textobject>
	  </mediaobject>
	</screenshot>
      </section>

      <section id="constructing-other-objects">
	<title
>Andere Objekte konstruieren</title>
	<para
>Die Konstruktion anderer Objekte als Punkte wird normalerweise durch die Auswahl des entsprechenden Eintrages im Menü <guimenu
>Objekte</guimenu
> oder den entsprechenden Knopf in der Werkzeugleiste erledigt. </para>
	<screenshot>
	  <screeninfo
>Konstruieren eines Kreises</screeninfo>
	  <mediaobject>
	    <imageobject>
	      <imagedata fileref="constructing_a_circle.png"
	      format="PNG"/>
	    </imageobject>
	    <textobject>
	      <phrase
>Konstruieren eines Kreises</phrase>
	    </textobject>
	  </mediaobject>
	</screenshot>
	<para
>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. </para>
	<para
>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 <mousebutton
>mittleren</mousebutton
> Maustaste anlegen. </para>
	<para
>Man kann die Konstruktion eines neuen Objektes jederzeit abbrechen, indem man die &Esc; Taste oder den <guiicon
>Stopp</guiicon
> Knopf (rotes Achteck mit <quote
>X</quote
>) in der Werkzeugleiste drückt. </para>
	<screenshot>
	  <screeninfo
>Einen Kreise konstruieren</screeninfo>
	  <mediaobject>
	    <imageobject>
	      <imagedata fileref="constructing_a_circle_2.png"
	      format="PNG"/>
	    </imageobject>
	    <textobject>
	      <phrase
>Konstruieren eines Kreises</phrase>
	    </textobject>
	  </mediaobject>
	</screenshot>
      </section>
    </section>

    <section id="selecting-objects">
      <title
>Objekte auswählen</title>
      <para
>Objekte können auf folgende Weise ausgewählt werden: </para>
      <itemizedlist>
	<listitem>
	  <para
>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. </para>
	</listitem>
	<listitem>
	  <para
>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. </para>
	</listitem>
      </itemizedlist>

      <screenshot>
	<screeninfo
>Objekte auswählen</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="selecting_objects.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Objekte auswählen</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
    </section>

    <section id="moving-objects">
      <title
>Objekte verschieben</title>
      <para
>Um Objekte verschieben zu können, muss man sie zuerst <link linkend="selecting-objects"
>ausgewählt</link
> haben. </para>
      <para
>Um die ausgewählten Objekte zu verschieben, muss man die <mousebutton
>linke</mousebutton
> 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. </para>
      <note
><para
>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. </para
></note
> <note
><para
>Klickt man mit der <mousebutton
>rechten</mousebutton
> Maustaste auf ein ausgewähltes Objekt und wählt <guimenuitem
>Verschieben</guimenuitem
>, 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 <mousebutton
>linken</mousebutton
> Maustaste beendet werden. </para
></note>
    </section>
    <section id="deleting-objects">
      <title
>Objekte löschen</title>
      <para
>Objekte müssen zuerst <link linkend="selecting-objects"
>ausgewählt</link
> werden, und können dann auf verschiedene Weise gelöscht werden: <itemizedlist>
	  <listitem>
	    <para
>durch Drücken der <keycap
>Entfernen</keycap
> Taste </para>
	  </listitem>
	  <listitem>
	    <para
>durch Drücken des <guiicon
>Löschen</guiicon
> Knopf in der Werkzeugleiste </para>
	  </listitem>
	  <listitem>
	    <para
>Klick mit der <mousebutton
>rechten</mousebutton
> Maustaste und dem Aufruf von <guimenuitem
>Löschen</guimenuitem
> im erscheinendem<link linkend="objects-context-menus"
>Kontextmenü</link
>. </para>
	  </listitem>
	</itemizedlist>
      </para>
    </section>
    <section id="showing-hiding-objects">
      <title
>Objekte zeigen und ausblenden</title>
      <para
>In &kig; können Objekte ausgeblendet werden. Dazu wählt man das Objekt aus, klickt mit der <mousebutton
>rechten</mousebutton
> Maustaste darauf und ruft aus dem erscheinendem <link linkend="objects-context-menus"
>Kontextmenü</link
> den Eintrag <guimenuitem
>Ausblenden</guimenuitem
>. </para>
      <para
>Um ein Objekt wieder anzuzeigen, wählt man <menuchoice
><guimenu
>Bearbeiten</guimenu
> <guimenuitem
>Alle zeigen</guimenuitem
></menuchoice
>. Es werden alle momentan ausgeblendeten Objekte wieder angezeigt. </para>
    </section>
    <section id="undo-redo">
      <title
>Rückgängig/Wiederherstellen</title>
      <para
>In &kig; kann man fast jede Änderungen rückgängig machen. Einfach dazu die entsprechenden <guiicon
>Rückgängig</guiicon
>/<guiicon
>Wiederherstellen</guiicon
> Knöpfe aus der Werkzeugleiste oder die entsprechenden Tastenkürzel aufrufen. </para>
    </section>
    <section id="full-screen-mode">
      <title
>Vollbildmodus</title>
      <para
>&kig; verfügt über einen Vollbildmodus. Um diesen zu nutzen wählt man <menuchoice
><guimenu
>Einstellungen</guimenu
><guimenuitem
>Ganzer Bildschirm</guimenuitem
></menuchoice
> oder den entsprechenden Knopf aus der Werkzeugleiste. </para>
      <para
>Um den Vollbildmodus zu verlassen, klickt man mit der <mousebutton
>rechten</mousebutton
> Maustaste auf die Zeichenfläche an einer Stelle ohne Objekte und wählt <guimenuitem
>Vollbildmodus an-/ausschalten</guimenuitem
> oder man drückt die &Esc; Taste. </para>
    </section>
  </chapter>

  <chapter id="kig-object-types">
    <title
>&kig; Objekt Typen</title>
    <para
>&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 <guimenu
>Objekte</guimenu
> 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 <menuchoice
><guimenu
>Einstellungen</guimenu
> <guimenuitem
>Werkzeugleisten einrichten...</guimenuitem
></menuchoice
>. </para>
  </chapter>

  <chapter id="using-advanced">
    <title
>Fortgeschrittene Benutzung</title>
    <section id="objects-context-menus">
      <title
>Kontextmenüs</title>
      <para
>&kig; bietet Kontextmenüs für die Objekte. Dazu genügt ein Klick mit der <mousebutton
>rechten</mousebutton
> 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. </para>
    </section>
    <section id="document-context-menus">
      <title
>Dokument Kontextmenüs</title>
      <para
>Ein Klick mit der <mousebutton
>rechten</mousebutton
> 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. </para>
    </section>
    <section id="defining-macros">
      <title
>Makros definieren</title>
      <para
>Ein weiteres Merkmal von &kig; ist die Unterstützung von Makros. Damit kann man neue Objekt als Zusammensetzung anderer Objekte definieren. </para>
      <para
>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. </para>
      <screenshot>
	<screeninfo
>Ein Test Makro</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="test_run_macro.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Ein Test Makro</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>

      <para
>Jetzt muss das Makro definiert werden. Dazu wählt man <guimenuitem
>Neues Makro...</guimenuitem
> aus dem <guimenu
>Typen</guimenu
> 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 <guibutton
>Nächster</guibutton
> Knopf. Abschließend muss man das erhaltene Objekt (in unserem Beispiel den Kreis) auswählen. </para>

      <screenshot>
	<screeninfo
>Der Makro Assistent</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="macro_wizard.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Der Makro Assistent</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>

      <para
>Nachdem die vorherigen Schritte erledigt wurden, muss man den <guibutton
>Nächster</guibutton
> 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 <guibutton
>Abschließen</guibutton
> bestätigen. Das Makro ist jetzt vollständig definiert. </para>

      <para
>Um das Makro zu benutzen, wählt man es aus der Werkzeugleiste direkt aus oder ruft es aus dem Menü <guimenu
>Objekte</guimenu
> auf. Ein Makro zu konstruieren funktioniert genauso wie mit jedem anderen Objekt. </para>
      <screenshot>
	<screeninfo
>Das neue Makro benutzen</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="macros_at_work.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Das neue Makro benutzen</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
    </section>
    <section id="working-with-types">
      <title
>Arbeiten mit Makros</title>
      <para
>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 <guimenuitem
>Typen verwalten</guimenuitem
> im Menü <guimenu
>Typen</guimenu
> ist ein Fenster zur Verwaltung der Makros abrufbar. Man kann ungenutzte Makros löschen, Makros in Dateien speichern und sogar Makros aus Dateien laden. </para>
      <screenshot>
	<screeninfo
>Typen verwalten Fenster</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="edit_types_dialog.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Das Typen verwalten Fenster</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
    </section>
    <section id="text-labels">
      <title
>Textfelder</title>
      <para
>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 (<quote
>Eigenschaften</quote
>) anzeigen. </para>
      <para
>Um ein Textfeld zu konstruieren, einfach den Textfeld Knopf aus der Werkzeugleiste anklicken oder im Menü auswählen unter<menuchoice
><guimenu
>Objekte</guimenu
><guisubmenu
>Sonstige</guisubmenu
> <guimenuitem
>Textfeld</guimenuitem
></menuchoice
>. </para>
      <para
>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 <quote
>dranhängen</quote
>. </para>
      <screenshot>
	<screeninfo
>Ein Textfeld an einen Kreis hängen...</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="text_label_attaching.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Ein Textfeld an einen Kreis hängen...</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
      <para
>Jetzt wird das Textfeldfenster angezeigt. Hier trägt man den im Textfeld anzuzeigenden Text ein und bestätigt mit <guibutton
>Abschließen</guibutton
>. Das Textfeld sollte sich jetzt in der Zeichnung befinden. </para>
      <screenshot>
	<screeninfo
>Das Textfeldfenster</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata fileref="text_label_wizard.png" format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Das Textfeldfenster</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
      <para
>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 <quote
>Diese Strecke ist <token
>%1</token
> Einheiten lang...</quote
> anzeigen, wobei <token
>%1</token
> automatisch mit der Länge des entsprechenden Strecke ersetzt wird). </para>
      <para
>Dazu muss man einen Text mit Platzhaltern (<token
>%1</token
>, <token
>%2</token
>, usw.) eingeben. Danach betätigt man den <guibutton
>Nächster</guibutton
> Knopf. Will man den Text oder die Platzhalter später noch ändern, dann kann man zurückkehren über den Knopf <guibutton
>Zurück</guibutton
>. </para>
      <para
>Der Assistent zeigt nun den eingegebenen Text mit den Platzhaltern in der Form <guilabel
>Argument 1</guilabel
>. 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 <guilabel
>Argument 1</guilabel
> klicken, in der Arbeitsfläche von &kig; auf die entsprechende Strecke klicken und die gewünschte Information wie <guilabel
>Länge</guilabel
> 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 <guibutton
>Abschließen</guibutton
> Knopf ab. </para>
      <screenshot>
	<screeninfo
>Eine Eigenschaft für den variablen Teil auswählen</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata
	    fileref="text_label_wizard__select_property.png"
	    format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Eine Eigenschaft für den variablen Teil auswählen</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
    </section>
    <section id="locuses">
    <title
>Geometrische Punkte</title>
      <para
>&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. </para>
      <para
>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 <mousebutton
>mittlere</mousebutton
> 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. </para>
      <screenshot>
	<screeninfo
>Eine einfache Konstruktion mittels geometrischem Ort</screeninfo>
	<mediaobject>
	  <imageobject>
	    <imagedata
	      fileref="simple_locus_construction.png"
	      format="PNG"/>
	  </imageobject>
	  <textobject>
	    <phrase
>Eine einfache Konstruktion mittels geometrischem Ort</phrase>
	  </textobject>
	</mediaobject>
      </screenshot>
      <para
>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. </para>
      <para
>Den geometrischen Ort zu konstruieren, ist sehr einfach. Dazu klickt man auf den geometrischen Ort Knopf in der Werkzeugleiste oder wählt <menuchoice
><guimenu
>Objekte</guimenu
> <guisubmenu
>Sonstige</guisubmenu
> <guimenuitem
>Locus</guimenuitem
></menuchoice
> aus dem Menü aus. Jetzt wählt man zuerst den abhängigen Punkt (der Text <guilabel
>Bewegender Punkt</guilabel
> erscheint) und dann den sich bewegenden Punkt aus. Der geometrische Ort erscheint. </para>
    </section>
  </chapter>

  <chapter id="scripting">
    <title
>Skripte</title>
    <para
>&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. </para>
    <para
>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. </para>
    <para
>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 <guibutton
>Python Skript</guibutton
> Knopf in der Werkzeugleiste oder man wählt <menuchoice
><guimenu
>Objekte</guimenu
><guisubmenu
>Sonstige</guisubmenu
> <guimenuitem
>Skriptobjekt</guimenuitem
></menuchoice
> im Menü. Es wird nun ein Assistent angezeigt, der durch den Prozess begleitet. </para>
    <screenshot>
      <screeninfo
>Der Skriptobjekt Assistent</screeninfo>
      <mediaobject>
	<imageobject>
	  <imagedata fileref="script_wizard.png" format="PNG"/>
	</imageobject>
	<textobject>
	  <phrase
>Der Skriptobjekt Assistent</phrase>
	</textobject>
      </mediaobject>
    </screenshot>
    <para
>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 <guibutton
>Nächster</guibutton
> Knopf fort. </para>
    <para
>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 <function
>calc</function
> definieren. Man muss sich an die Python Regeln zum Definieren einer Funktion halten. So muss jede Zeile der Funktion mit einem <keysym
>Tabulator</keysym
> eingerückt werden. Die erste Zeile ohne <keysym
>Tabulator</keysym
> am Zeilenanfang beendet die Funktionsdefinition. </para>
    <para
>Die zu definierende Python Funktion heißt <quote
>calc</quote
> 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 <parameter
>arg1</parameter
> und <parameter
>arg2</parameter
>, aber man kann natürlich einen anderen Namen vergeben. </para>
    <para
>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 <function
>Point.coordinate()</function
> nutzen, um die Koordinaten der Punkte zu verarbeiten. </para>
    <para
>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:</para>

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

    <screenshot>
      <screeninfo
>Quelltext eingeben</screeninfo>
      <mediaobject>
	<imageobject>
	  <imagedata fileref="script_wizard_entering_code.png" format="PNG"/>
	</imageobject>
	<textobject>
	  <phrase
>Quelltext für den Mittelpunkt im Skriptobjekt Assistent eingeben...</phrase>
	</textobject>
      </mediaobject>
    </screenshot>
    <para
>Drückt man nun den <guibutton
>Abschließen</guibutton
> 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! </para>
    <screenshot>
      <screeninfo
>Ein Skriptobjekt erstellt</screeninfo>
      <mediaobject>
	<imageobject>
	  <imagedata fileref="constructed_script_object.png" format="PNG"/>
	</imageobject>
	<textobject>
	  <phrase
>Das neu erstellte Skriptobjekt </phrase>
	</textobject>
      </mediaobject>
    </screenshot>
    <para
>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 <function
>Point.coordinate()</function
> 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 <ulink url="http://edu.kde.org/kig/manual/scripting-api/index.html"
>hier</ulink
>. </para>
  </chapter>

  <chapter id="kig-features">
    <title
>&kig;s Funktionen</title>

      <itemizedlist>
	<listitem>
	  <para
>&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. </para>
	  <para
>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 <email
>devriese@kde.org</email
>. </para>
	</listitem>
	<listitem>
	  <para
>&kig; ist eine KPart Anwendung. Das bedeutet, man kann sie in andere &kde; Programme einbetten. Öffnet man z.B. eine <literal role="extension"
>.kig</literal
> Datei in &konqueror;, dann wird sie direkt angezeigt, ohne dass eine externe Anwendung gestartet werden musste. </para>
	</listitem>
	<listitem>
	  <para
>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. </para>
	</listitem>
	<listitem>
	  <para
>&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 <link linkend="working-with-types"
>Typen verwalten</link
> steht, wie man die Objekte verwaltet. Man kann Objekte in Dateien exportieren, aus Dateien importieren und sie löschen. </para>
	</listitem>
	<listitem>
	  <para
>&kig; speichert seine Daten in einem sauberen &XML; Format. </para>
	</listitem>
	<listitem>
	  <para
>&kig; unterstützt die Konstruktion von geometrischen Orten. </para>
	</listitem>
	<listitem>
	  <para
>&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. </para>
	</listitem>
	<listitem>
	  <para
>&kig; verfügt über ein sehr flexibles Transformationssystem. </para>
	</listitem>
	<listitem>
	  <para
>&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. </para>
	</listitem>
      </itemizedlist>
  </chapter>


  <chapter id="faq">
    <title
>Fragen und Antworten</title>
&reporting.bugs; &updating.documentation; <para
></para>
  </chapter>

  <chapter id="credits">
    <title
>Mitwirkende und Lizenz</title>

    <para
>&kig; </para>
    <para
>&kig; Copyright 2002 Dominique Devriese <email
>devriese@kde.org</email
> </para>

    <para
>Dokumentation Copyright 2002-2003 Dominique Devriese. <email
>devriese@kde.org</email
> </para>
    <para
>Sebastian Stein<email
>s5228@informatik.htw-dresden.de</email
></para
>  &underFDL; &underGPL; </chapter>

  <appendix id="installation">
    <title
>Installation</title>

    <sect1 id="getting-kig">
      <title
>Bezugsquellen von &kig;</title>
&install.intro.documentation; </sect1>

    <sect1 id="compilation">
      <title
>Kompilierung und Installation</title>
&install.compile.documentation; </sect1>

  </appendix>

  <appendix id="contributing">
    <title
>Unterstützung</title>
    <section id="kig-is-free">
      <title
>Freie Software</title>
      <para
>&kig; ist <ulink url="http://www.gnu.org/philosophy/philosophy.html#AboutFreeSoftware"
> Freie Software</ulink
>. 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. </para>
    </section>
    <section id="contribute-to-kig">
      <title
>Unterstützung</title>
      <para
>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 <email
>devriese@kde.org</email
>, 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. </para>
      <para
>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 <filename
>COPYING</filename
> Datei im &kig; Quelltextbaum oder in der Lizenzkartei im <guilabel
>Über &kig;</guilabel
> Fenster. </para>
    </section>
    <section id="howto-contribute">
      <title
>Wie unterstützt man?</title>
      <para
>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 <filename
>COPYING</filename
> im &kig; Quelltextbaum und <link linkend="credits"
>in diesem Handbuch</link
> findet, veröffentlicht werden. </para>
    </section>
  </appendix>

  &documentation.index;
</book>
<!--
Local Variables:
mode: xml
End:
-->
