# Het handboek van &kig;

Dominique Devriese

    devriese@kde.org

&Tijmen.Baarda;&Rinse.Devries;
2002 2003 2004 Dominique Devriese
&FDLNotice;
2004-06-29
0.9.0

&kig; is een &kde;-toepassing voor interactieve meetkunde.

KDE KDE-Edu Kig Interactieve meetkunde KGeo Cabri Dr.Geo KSeg

## Inleiding

&kig; is een toepassing voor interactieve meetkunde. Het programma heeft twee doelen:

- Ervoor zorgen dat studenten interactief wiskundige figuren en ideeën kunnen bestuderen met behulp van de computer.

- Een WISIWYG-hulpmiddel maken waarmee wiskundige figuren getekend kunnen worden die in andere documenten kunnen worden opgenomen.

Problemen met &kig; kunt u melden via het interne bugrapporteerhulpmiddel (Help Bug rapporteren...), of gewoon door contact met mij op te nemen via devriese@kde.org.

Omdat &kig; macro's en meetkundige plaatsen ondersteunt, kunnen ook geavanceerde macro's worden gedefinieerd. Als u een interessante macro heeft gemaakt, waarvan u denkt dat het ook handig kan zijn voor andere mensen, kunt u die naar me sturen via devriese@kde.org, zodat ik die kan opnemen in de distributie. (Als u dit doet, wordt uw macro uitgegeven onder de voorwaarden van de licentie van &kig;, de GPL, zodat anderen het vrij kunnen gebruiken en aanpassen).

## Beginselen van het gebruik

### Objecten tekenen

#### Punten tekenen

U kunt op verschillende manieren punten tekenen:

- Selecteer Objecten Punten Punt in de menubalk of klik op de bijbehorende knop in de werkbalk. U kunt dan een punt tekenen door te klikken op de gewenste positie in het venster.

  Dit werkt trouwens ook voor het tekenen van andere objecten: klik op de gewenste menu-ingang of werkbalkknop en selecteer die zaken die nodig zijn om het object te tekenen.

- Omdat u vaak punten zult moeten tekenen, kunt u ook eenvoudig ergens op het scherm klikken met de &MMB;. Er wordt daar dan een punt getekend, zonder gebruik van een menu of knop.

- U kunt punten tekenen terwijl u andere objecten maakt in de achtergrond, waarbij u ze desgewenst selecteert voor het object dat u aan het maken bent. Zie ook de . voor meer informatie.

Er is een punt getekend
Er is een punt getekend

#### Andere objecten tekenen

U kunt een object anders dan een punt tekenen door de bijbehorende ingang te selecteren in het menu Objecten, of door te klikken op één van de werkbalkknoppen.

Een cirkel tekenen
Een cirkel tekenen

Hiermee begint het tekenen van het gekozen objecttype. Bij elk van deze typen zijn argumenten nodig. Als u bijvoorbeeld "Cirkel met behulp van middelpunt en punt" selecteert, moet u twee punten geven: één voor het middelpunt en één voor het punt op de cirkel.

Deze argumenten zijn ook objecten, die u kunt selecteren door er gewoon op te klikken.Als u de muisaanwijzer beweegt boven een argument dat u wilt gebruiken om een object te tekenen, wordt er een voorlopige afbeelding getoond die laat zien hoe het object er uit gaan zien. U kunt, voor objecten die punten nodig hebben als argumenten, een nieuw punt tekenen bij de huidige muispositie door te klikken met de &LMB;.

U kunt het tekenen van een nieuw object altijd annuleren door op de &Esc;-knop te drukken of door te klikken op de Stop-knop (rode achthoek met een X) in de werkbalk.

Een cirkel tekenen.
Een cirkel tekenen

### Objecten selecteren

U kunt op twee manieren objecten selecteren:

- U kunt een object selecteren door erop te klikken. De huidige selectie gaat dan verloren.U kunt meerdere objecten tegelijkertijd selecteren door tijdens het klikken de &Ctrl;-toets ingedrukt te houden.

- Door te klikken en te slepen over een leeg deel van het scherm worden alle objecten in de zo ontstane rechthoek geselecteerd. Hiermee wordt ook de huidige selectie gewist. Zoals in de vorige situatie kunt u dit voorkomen door de &Ctrl;-toets ingedrukt te houden.

Objecten selecteren
Objecten selecteren

### Objecten verplaatsen

U moet objecten eerst selecteren voor u ze kunt verplaatsen.

Als u de objecten die u wilt verplaatsen heeft geselecteerd, kunt u ze verplaatsen door ze met de &LMB; te verslepen. Laat de &LMB; weer los als u klaar bent.

Bij sommige objecttypen (vooral bij gecompliceerde meetkundige plaatsen) kan het verplaatsen langzaam gaan op oudere hardware. Dit is natuurlijk jammer, maar onvermijdelijk door het vele rekenwerk.

U kunt objecten ook verplaatsen door met de &RMB; op een object te klikken en Verplaatsen te selecteren in het menu. Door de muis te bewegen verplaatst u het object. Als u het object op de juiste plaats heeft gebracht, kunt u het verplaatsen stoppen door met de &LMB; te klikken.

### Objecten verwijderen

U kunt objecten verwijderen door ze te selecteren en daarna één van het volgende te doen:

- Door op de Delete-toets te drukken;

- Door op de knop verwijderen in de werkbalk te klikken;

- Door met de rechter muisknop op één van de objecten te klikken en Verwijderen te selecteren in het contextmenu dat verschijnt.

### Objecten tonen en verbergen

In &kig; kunnen objecten worden verborgen. Dit kunt u doen door de objecten te selecteren, er met de &RMB; op te klikken en Verbergen te selecteren in het contextmenu dat verschijnt.

Als u de objecten weer wilt terughalen, klikt u op Bewerken Alles tonen. Hierdoor worden alle verborgen objecten weer getoond.

### Ongedaan maken/opnieuw

In &kig; kan bijna elke verandering in het document ongedaan worden gemaakt. Klik hiervoor op de knop Ongedaan maken of Opnieuw in de taakbalk of gebruik de bijbehorende sneltoetsen.

### Volledig scherm

&kig; kan ook worden gebruikt in een volledig scherm. Klik hiervoor op de daartoe aanwezige knop in de werkbalk of selecteer Beeld Volledig-scherm aan/uit.

Als u het volledig scherm weer wilt verlaten, klikt u met de &RMB; op het scherm op een plaats waar geen object is en selecteert u Volledig-scherm aan/uit, of drukt u op de &Esc;-toets.

## Objecttypen van &kig;

&kig; ondersteunt een groot aantal objecttypen. Let er wel op dat niet alle beschikbare objecttypen aanwezig zijn in de werkbalken, maar dat er ook nog enkele objecten zijn die u alleen kunt tekenen via het menu Objecten in de menubalk. Natuurlijk kunt u, net als bij alle andere &kde;-toepassingen, de inhoud van de werkbalken aanpassen. Probeer de optie Instellingen Werkbalken instellen... als u dit wilt.

## Gevorderd gebruik

### Contextmenu's

&kig; heeft contextmenu's voor de objecten. Klik met de &RMB; op een object om een contextmenu te openen. Er zijn vele opties: om andere objecten te tekenen, kleuren in te stellen, en zelfs om objecten te verbergen, te verplaatsen of te verwijderen. Sommige objecten bevatten eigen opties (u kunt bijvoorbeeld bepaalde punten herdefiniëren zodat ze geforceerd worden naar een lijn als ze dat daarvoor niet waren, enzovoort). Deze opties zijn allemaal erg begrijpelijk.

### Documentcontextmenu's

Door met de rechter muisknop te klikken op het document (dus niet op een object) verschijnt er een menu waarmee u een nieuw object kunt gaan tekenen, het coördinatenstelsel kunt wijzigen, verborgen objecten tonen en zelfs inzoomen en uitzoomen op het document.

### Macro's definiëren

Eén van de wat meer gevorderde mogelijkheden van &kig; is de ondersteuning voor macro's. Hiermee kunt u nieuwe objecttypen creëren met behulp van andere reeds gedefinieerde objecten.

Laten we een voorbeeld geven. Stelt u zich voor dat u een macro wilt maken die een cirkel tekent als drie punten die erop liggen zijn gegeven. U zou dan de drie punten invoeren, en dan enkele middens van twee punten en loodlijnen tekenen tot u het middelpunt van de cirkel vindt. U kunt dan de reeds bestaande opdracht Cirkel met middelpunt en punt gebruiken (met behulp van een van de drie gegeven punten). De volgende afbeelding moet dit iets duidelijker maken.

Macro's testen
Macro's testen

Hierna komt het definiëren van de macro. Selecteer Nieuwe macroin het menu Typen of klik op de knop in de werkbalk. Er verschijnt een assistent waarin gevraagd wordt om de objecten die gegeven zijn te selecteren. In ons voorbeeld zijn het de drie punten. Selecteer deze drie punten (als u klikt worden ze geselecteerd, als u nog eens klikt gedeselecteerd) en klik op Volgende om door te gaan. Selecteer tenslotte de laatste objecten (in ons voorbeeld alleen de cirkel).

De macroassistent
De macroassistent

Als u klaar bent met de vorige stappen, klikt u op de knop Volgende om door te gaan. Vul een naam in en eventueel een beschrijving van uw nieuwe type, en klik op de knop Voltooien. Uw macrotype is nu klaar.

Om het nieuwe macrotype te gebruiken, klik op de knop ervan in de werkbalk of gebruik het menu Objecten. Het maken van een macro is net als het maken van elk ander object.

Uw nieuwe type gebruiken
Uw nieuwe type gebruiken

### Werken met typen

Zoals u heeft gezien in het vorige hoofdstuk, kunt u met &kig; uw eigen objecten maken. Als u een object heeft gemaakt, wordt het door &kig; zelf opgeslagen bij het afsluiten en geladen bij het opstarten. Het is dus niet nodig om macrodefinities zelf op te slaan of te laden. Maar &kig; stelt u ook in staat meer met de macro's te doen. Als u klikt op Typen beheren... in het menu Typen, verschijnt er een dialoogvenster waarin u uw eigen typen kunt bewerken. Typen die u niet meer gebruikt kunt u hiermee verwijderen, u kunt typen in een bestand opslaan en u kunt ze zelfs inlezen uit een ander bestand.

Dialoogvenster Typen beheren
Het dialoogvenster Typen beheren

### Tekstlabels

Met &kig; kunt u teksten aan een tekening toevoegen. Zo kunt u bijvoorbeeld namen, uitleg en andere tekst bij uw tekeningen zetten. Ook kan &kig; hiermee variabele informatie tonen over objecten (ook wel bekend als eigenschappen).

Om een tekst te maken klikt u op de knop Tekstlabel in de werkbalk of selecteert u Objecten Andere Tekstlabel in de menubalk.

Nu moet u de plaats van de tekst aangeven. U kunt gewoon een plaats op het scherm kiezen, maar u kunt de tekst ook koppelen aan een object.

Een label aan een cirkel koppelen...
Een label aan een cirkel koppelen...

Nadat u een plaats heeft gekozen, verschijnt het dialoogvenster Tekstlabel. Hierin kunt u de gewenste tekst intypen. Klik op Voltooien om de tekst op te nemen in uw document.

Het dialoogvenster Tekstlabel
Het dialoogvenster Tekstlabel

Het vorige voorbeeld was erg eenvoudig, en beperkt tot alleen tekst. Het is echter ook mogelijk veranderlijke informatie over objecten in een tekst op te nemen (u kunt bijvoorbeeld een tekst maken: Dit lijnstuk is %1 eenheden lang waarin %i vervangen zal worden door de lengte van het betreffende lijnstuk).

Als voorbeeld, vult u een tekst in met een aantal argumenten (%1, %2, enzovoort). Klik op Volgende als u klaar bent. U kunt altijd weer teruggaan als u de tekst of argumenten wilt wijzigen met de knop Vorige.

De assistent toont nu de tekst die u heeft ingevuld waarin alle argumenten vervangen zijn door zoiets als argument 1. Het selecteren van de eigenschap die bij een bepaald argument hoort gebeurt door eerst te klikken op het argument waarom het gaat. Daarna klikt u op het object dat u eraan wilt koppelen en daarna selecteert u de gewenste eigenschap in het nu verschenen contextmenu.In het voorbeeld hierboven zou u klikken op argument 1, daarna op het juiste lijnstuk in het venster van &kig; en als laatste op de eigenschap Lengte. Hierna kunt u de rest van de variabelen invullen of een andere eigenschap kiezen voor één van de variabele gedeelten als u die zou willen veranderen. Als u klaar bent drukt u op Voltooien om de tekst te voltooien.

Een eigenschap kiezen voor een variabele
Een eigenschap kiezen voor een variabele

### Meetkundige plaatsen

In &kig; worden meetkundige plaatsen gebruikt. Een meetkundige plaars wordt in de Wiskunde gedefinieerd als de verzameling van punten met een bepaalde eigenschap zoals In een plat vlak is de meetkundige plaats van alle punten die even ver liggen vanaf een bepaald punt een cirkel. Hier volgt een voorbeeld hoe in &kig; meetkundige plaatsen worden gebruikt.

Beschouw de volgende meetkundige constructie: we tekenen een cirkel en een punt dat zich op de omtrek van de cirkel kan bewegen (dit kunt u doen door met de &MMB; te klikken op de omtrek van een cirkel: als u daarna het punt probeert te verplaatsen zult u zien dat het punt niet van de cirkel af kan gaan). Daarna tekenen we een lijnstuk vanaf dat punt tot aan het middelpunt van de cirkel, en vervolgens het midden van dat lijnstuk.

Een eenvoudige constructie met een meetkundige plaats
Een eenvoudige constructie met een meetkundige plaats

Als u nu het punt dat gedwongen op de cirkel ligt verplaatst zult u zien dat het tweede punt meebeweegt. Als u een pen zou houden boven het tweede punt en u het eerste punt de hele cirkel rond zou bewegen, wordt er een nieuwe cirkel getekend, met een straal half zo groot als van de eerste. Deze meetkundige plaats is de weg die het tweede punt beschrijft terwijl het eerste punt rond de cirkel beweegt.

Het tekenen van een meetkundige plaats is erg eenvoudig. Klik op de knop Meetkundige plaats in de werkbalk of selecteer Objecten Andere Meetkundige plaats in de menubalk. Selecteer daarna het punt dat gedwongen op de cirkel ligt als het bewegende punt (als de tekst Bewegend punt verschijnt) en de andere als het afhankelijke punt. Hierna zal de meetkundige plaats worden getekend van het afhankelijke punt..

## Scripts

In &kig; kan de gebruiker eigen typen maken met behulp van de scripttaal Python. Dit is een zeer geavanceerde functie, en ik ken slechts één ander programma voor interactieve geometrie dat ook zulke functionaliteit heeft: het GNOME-programma &drgeo;.

Met scripts in Python kunt u in &kig; uw eigen objecten definiëren vanuit bepaalde oorspronkelijke objecten. Als u bijvoorbeeld een wiskundeleraar bent en een leuke manier heeft om een interessant punt of kegelsnede te berekenen, dan kunt u heel eenvoudig in Python-code opschrijven hoe het punt wordt berekend in plaats van te stoeien met ingewikkelde constructies en macro's. &kig; zal het dan voor u demonstreren.

Stel dat u niet wist van het bestaan van het in &kig; ingebouwde type "midden van twee punten", en dat u het midden wilde tekenen van twee gegeven punten. Klik dan om dan een script te maken op de knop Pythonscript in de werkbalk of selecteer Objecten Andere Scriptobject in de menubalk. Dan verschijnt er een assistent waarmee u het scriptobject kunt maken.

De assistent Scriptobject
De assistent Scriptobject

Het eerste dat u moet doen is het selecteren van de argumenten voor het scriptobject. In ons voorbeeld moeten we de twee punten selecteren waarvan we het midden willen verkrijgen. Selecteer deze twee punten in het hoofdvenster van &kig; en klik op Volgende om door te gaan.

Nu krijgt u een tekstvak te zien waarin u de code voor het scriptobject kunt invoeren. Er staat al wat code in van een sjabloon met wat commentaar. Het is belangrijk dat de code die u invoert goede Python-code is. Als u al bekend bent met Python zult u opmerken dat we hier een functie definiëren genaamd `calc`. Daarom moet u wel enkele eigenschappen van Python kennen voor het definiëren van functies. Elke regel van de functie moet bijvoorbeeld beginnen met een Tab. De eerste regel die niet begint met een Tab geeft het einde van de functiedefinitie aan.

De Python-functie die we hier willen definiëren heet calc, en accepteert in ons voorbeeld twee argumenten. Deze argumenten komen overeen met de objecten die u heeft geselecteerd als argumenten in de vorige stap. Hier verschijnen er dus evenveel argumenten als u daar geselecteerd heeft. Ze heten arg1 en arg2, maar als u wilt kunt u die namen veranderen in duidelijker namen.

In deze functie kunt u alle soorten berekeningen uitvoeren die u nodig acht, waarbij u waar nodig beide argumenten kunt gebruiken. Het object dat u wenst moet het eindresultaat zijn. In ons voorbeeld is dat een Point-object (een punt dus). De argumenten zijn ook Point-objecten waarbij we de functie `Point.coordinate()` kunnen gebruiken om de coördinaten van de twee gegeven punten in vast te leggen.

De berekening die in ons voorbeeld moet worden gedaan is erg eenvoudig, we tellen de coördinaten van beide punten simpelweg bij elkaar op en delen het resultaat door twee. Daarna tekenen we een nieuw punt met de berekende coördinaten. De Python-code luidt als volgt:

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

De code invoeren
De code invoeren voor het midden van twee punten in de assistent Scriptobject.

Het nieuwe object zal verschijnen in het &kig;-document als u op de knop Voltooien heeft geklikt. Wanneer u één van de punten verplaatst zal het zojuist gemaakte punt met de twee punten meebewegen. Op deze manier kunt u veel ingewikkelder objecten maken, en u wordt aangemoedigd om dat eens te proberen.

Er is een scriptobject geconstrueerd
Het zojuist geconstrueerde scriptobject.

Alle objecten van &kig; kunnen worden gebruikt in de Python-code. Zoals we zojuist zagen zijn punten van de "class" Point, waarbij u bijvoorbeeld de "method" `Point.coordinate()` kunt gebruiken. Evenzo kunt u alle soorten objecten maken, niet alleen punten. In Python-scripts in &kig; kunt u nog veel meer "classes" en "methods" gebruiken. Een vollediger naslagwerk op dit gebied kunt u vinden op de website van Kig . Noot: class(es) en method(s) zijn termen uit de programmeertaal, in dit geval Python. Om succesvol met zo'n taal aan de gang te gaan moeten dit soort begrippen uiteraard bekend zijn of kunnen worden opgezocht, reden om die niet te vertalen.

## Mogelijkheden van &kig;

- &kig; is een open-source-toepassing. Dat betekent dat u vrij bent om het te gebruiken en aan te passen als u dat wilt. Er zijn enkele beperkingen aan het verspreiden van &kig;, hoofdzakelijk dat iedereen dezelfde rechten om &kig; te gebruiken moet hebben, met inbegrip van uw wijzigingen ,als u en ik.

  Vrije software wordt ontwikkeld op een erg open manier, de ontwikkelaars ontvangen meestal graag ondersteuning van gebruikers. Als u vragen, klachten of wat dan ook over &kig; heeft, u kunt het me altijd laten weten via devriese@kde.org.

- &kig; is een KPart-toepassing. Dit betekent dat het mogelijk is om het in te bedden in andere &kde;-software. Als u een `.kig`-bestand in &konqueror; opent kan het direct in het scherm van &konqueror; worden getoond zonder dat u een externe applicatie hoeft te starten.

- Het gebruik van &kig; moet eenvoudig te leren zijn. Het tekenen van objecten is eenvoudig en interactief, waarbij er steeds voorlopige resultaten worden getoond, enzovoort. Verplaatsen, selecteren en het opbouwen van een tekening werken allemaal zoals u zou verwachten, net als het ongedaan maken van bewerkingen.

- &kig; heeft ondersteuning voor macro's op een manier die eenvoudig te leren is. Deze macro's zijn objecten die voor de gebruiker er net zo uitzien als normale objecten. De macro's worden opgeslagen bij afsluiten en ingelezen bij opstarten, ze gaan dus niet verloren bij afsluiten. In het dialoogvenster Typen beheren kunt u deze objecten beheren (zie ). U kunt deze typen exporteren (opslaan in) naar bestanden, ze uit bestanden importeren (inlezen) en verwijderen.

- &kig; slaat de gegevens op in een duidelijk &XML;-formaat.

- Met &kig; kunt u meetkundige plaatsen tekenen.

- &kig; allows you to export a &kig; file to some interesting formats, like images, XFig and LaTeX files, and SVG vectorial images. This is rather useful, because not all programs support the &kig; file format yet.

- &kig; heeft een erg flexibel transformatiesysteem.

- Met &kig; willen we graag compatibel zijn met de concurrenten. Daarom worden in &kig; de bestandsformaten van &kgeo; en &kseg; ondersteund, gedeeltelijk die van &drgeo; en &cabri;, en ondersteuning voor andere formaten is ook voorgenomen.

## Vragen en antwoorden

&reporting.bugs; &updating.documentation;

## Dankbetuigingen en licentie

&kig;

&kig; copyright 2002-2004 Dominique Devriese devriese@kde.org

Documentatiecopyright 2002-2004 Dominique Devriese. devriese@kde.org

Nagelezen (Engelse tekst) door &Philip.Rodrigues; &Philip.Rodrigues.mail;.

Jaapjjh.woldringh@planet.nl

&underFDL; &underGPL;

## Installatie

### Hoe &kig; te verkrijgen

&install.intro.documentation;

### Compilatie en installatie

&install.compile.documentation;

## Meewerken

### Vrije software

&kig; is vrije software. Dat betekent dat de broncode vrij beschikbaar is op het internet, waarbij iedereen die kan gebruiken, bekijken, aanpassen en verspreiden. Ik maak dit programma als hobby, maar ik heb al doende ook veel geleerd over programmeren, C++, &kde;/&Qt;, wiskunde, softwaresamenwerking en open-sourceprojecten.

### Meewerken

Het doel van dit hoofdstuk is om u (de gebruiker) de rechten die de licentie van &kig; u geeft duidelijk te maken. Net als met alle andere vrije software is het u toegestaan (en aanbevolen) om problemen op te lossen die u opmerkt tijdens het werken met dit programma, om functies toe te voegen die u mist en om uw gewijzigde versie verder te verspreiden en de wijzigingen door te sturen naar mij op devriese@kde.org, zodat ik deze toe kan voegen aan de volgende versie voor anderen. Ik heb zelf geen enkel financieel belang in dit project, dit is dus niet bedoeld als reclame.

Als u niet zeker weet wat uw rechten zijn bij het gebruik van deze software, of die van andere gebruikers wat betreft de veranderingen die u heeft aangebracht &etc;, leest u dan de licentie. U kunt deze vinden in het bestand `COPYING` bij de bronbestanden van &kig; of in het tabblad licentie in het dialoogvenster Info over Kig.

### Hoe kan ik meehelpen?

Elke medewerking is welkom. Als u vindt dat de pictogrammen lelijk zijn, dat de handleiding toe is aan vernieuwing, of dat u een geweldige macro heeft ontwikkeld die u wilt delen met de rest van de wereld, twijfel dan niet om het naar me op te sturen. Uw toevoegingen zullen worden verspreid onder de voorwaarden van de &GNU;-GPL; de voorwaarden van deze licentie kunt u vinden in het bestand `COPYING` bij de broncodebestanden van &kig; en in het hoofdstuk Dankbetuigingen en licentie in deze handleiding.

&documentation.index;