# Het handboek van &kig;

## Inleiding

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

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

- Een WISIWYG-hulpmiddel maken waarmee wiskundige figuren getekend kunnen worden om ze in andere documenten te gebruiken.

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 plaatsten ondersteunt, kunnen ook geavanceerde macro's worden gedefinieerd. Als u een interessante macro hebt 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 het kan bijvoegen 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.

## Basisgebruik

### Objecten construeren

#### Punten construeren

U kunt op verschillende manieren punten construeren:

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

  Dit werkt trouwens ook voor het construeren van andere objecten: klik op de gewenste menuoptie of werkbalkknop en selecteer de nodige objecten om het object te selecteren.

- Omdat u vaak punten zult moeten tekenen, kunt u ook eenvoudigerweg ergens op het scherm klikken met de middelste muisknop en er wordt een punt geconstrueerd, zonder ook maar op een knop of menu te klikken.

- U kunt punten construeren 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 volgende sectie voor meer informatie hierover.

Er is een punt geconstrueerd Er is een punt geconstrueerd

#### Andere objecten construeren

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

Een cirkel construeren Een cirkel construeren

Hiermee begint de constructie 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.

Klik op object dat u wilt gebruiken om deze argumenten te selecteren. Als u de muis beweegt over een object dat gebruikt kan worden om het object te construeren, wordt er een voorlopige afbeelding getoond die laat zien hoe de objecten er uit gaan zien. U kunt, voor objecten die punten nodig hebben als argumenten, nieuwe punten construeren en selecteren bij de huidige muispositie door te klikken op de linker muisknop.

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

Een cirkel construeren. Een cirkel construeren

### Objecten selecteren

U kunt op twee manieren objecten selecteren:

- Door te klikken op een object, waarbij de huidige selectie verloren gaat, kunt u een enkel object selecteren. Houd de &Ctrl;-toets ingedrukt terwijl u op een object klikt als u dit niet wilt.

- Door te klikken en te slepen over een leeg deel van het scherm worden alle objecten in de rechthoek geselecteerd. Hiermee wordt ook de huidige selectie gewist. Net als bij de eerste methode kunt u dit voorkomen door de &Ctrl;-toets in te drukken.

Objecten selecteren Objecten selecteren

### Objecten verplaatsen

U moet objecten eerst selecteren voor u ze kunt verplaatsen.

Zodra u de objecten die u wilt verplaatsen hebt geselecteerd, kunt u beginnen met 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 jammer, maar onvermijdelijk door de grote berekeningen die gedaan worden.

U kunt objecten ook verplaatsen door met de &RMB; op een object te klikken en Verplaatsen te selecteren uit het menu. U kunt het object dan direct verplaatsen. Als u het object op de juiste plaats hebt gebracht, kunt u het verplaatsen stoppen door op de &LMB; te drukken.

### 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 op de werkbalk te klikken;

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

### Objecten tonen en verbergen

In &kig; kunnen objecten verborgen worden. 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 op de taakbalk of gebruik de bijbehorende sneltoetsen.

### Volledig scherm

&kig; kan ook worden gebruikt in volledig scherm. Klik hiervoor op de bijbehorende knop in de werkbalk of selecteer Beeld Volledig scherm.

Als u 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 verlaten, of drukt u op de &Esc;-toets.

## Objecttypen van &kig;

&kig; ondersteunt een groot aantal objecttypen. Let wel op dat niet alle beschikbare objecttypen aanwezig zijn in de werkbalken, maar dat er ook nog enkele objecten zijn die u alleen kunt construeren via het menu Objecten op 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 doen.

## Geavanceerd gebruik

### Contextmenu's

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

### Documentcontextmenu's

Door met de &RMB; te klikken op het document (dus niet op een object) verschijnt er een menu waarmee u een nieuw object kunt gaan construeren, het coördinatensysteem kunt wijzigen, verborgen objecten tonen en zelfs inzoomen en uitzoomen op het document.

### Macro's definiëren

Eén van de wat geavanceerdere mogelijkheden van &kig; is de ondersteuning voor macro's. Hiermee kunt u nieuwe objecttypen creëren door het combineren van andere soorten.

Laten we een voorbeeld gebruiken. Stelt u zich voor dat u een macro wilt maken die een cirkel creëert van drie punten die erop komen, dan zou u drie punten construeren, enkele loodlijnen en middelpunten tot u het centrum vindt, en u construeert de cirkel door het geconstrueerde centrum en één van de vorige punten. De volgende afbeelding moet dit iets duidelijker maken.

Macro's proefdraaien Macro's proefdraaien

Hierna komt het definiëren van de macro. Selecteer Nieuwe macrouit het menu Types of klik op de bijbehorende knop op 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 dat nog een keer doet gedeselecteerd) en klik op Volgende om door te gaan. Klik vervolgens op de objecten die moeten verschijnen (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 voor uw nieuwe type, en klik op de knop Voltooien. Uw macrotype is nu klaar om te gebruiken.

Klik op de knop van het nieuwe macrotype op de werkbalk of gebruik het menu Objecten om het te gebruiken. Het maken van een macro is net als het construeren van een gewoon object.

Uw nieuwe type gebruiken Uw nieuwe type gebruiken

### Werken met typen

Zoals u hebt gezien in het vorige hoofdstuk, kunt u met &kig; uw eigen objecten maken. Als u een object hebt 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 Types beheren uit het menu Types, verschijnt er een dialoogvenster waarin u uw eigen typen kunt bewerken. Types die u niet meer gebruikt kunt u hiermee verwijderen, u kunt typen naar een bestand exporteren en u kunt ze laden uit een ander bestand.

Dialoogvenster Types beheren Het dialoogvenster Types beheren

### Tekstlabels

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

Klik op de knop Tekstlabel in de werkbalk of selecteer Objecten Andere Tekstlabel in de menubalk om te beginnen met de constructie van een tekstlabel.

Nu moet u de locatie van de tekstlabel aangeven. U kunt gewoon een locatie op het scherm kiezen, maar u kunt de label ook voegen aan een ander object.

Een label aan een cirkel voegen... Een label aan een cirkel voegen...

Nadat u een plaats hebt gekozen, verschijnt het dialoogvenster Tekstlabel. Hier kunt u de tekst intypen die u wilt hebben in de nieuwe label. Klik op Voltooien om de label te tonen in uw document.

Het dialoogvenster Tekstlabel Het dialoogvenster Tekstlabel

Het vorige voorbeeld was erg eenvoudig, er werd alleen gewone tekst gebruikt. Er is echter ook ondersteuning voor het tonen van veranderlijke informatie over objecten in een label (u kunt bijvoorbeeld een label maken met de tekst Dit lijnstuk is %1 eenheden lang waarbij %i vervangen zou worden door de lengte van het betreffende lijnstuk).

Vul een tekst in met een aantal formatteerspecificaties om dit te doen (%1, %2, enzovoort). Klik op Volgende als u klaar bent. U kunt altijd weer teruggaan als u de tekst of variabelen wilt wijzigen met de knop Vorige.

De assistent toont nu de tekst die u hebt ingevuld met alle formatteerspecificaties vervangen door iets als argument 1. U kunt kiezen wat u wilt zien door op het argument in kwestie te klikken, vervolgens op het object te klikken waarover u informatie wilt tonen, en als laatste te klikken op de soort informatie die u interessant vindt. 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 variabelen als u het zou willen veranderen. Als u klaar bent drukt u op Voltooien om de constructie van de tekstlabel te beëindigen.

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

### Meetkundige plaatsen

&kig; heeft ondersteuning voor meetkundige plaatsen. Een meetkundige plaats is iets uit de wiskunde van de bovenbouw van de middelbare school. In het kort: het is het figuur gedefinieerd door alle punten waarover een punt zich beweegt, wanneer een ander punt beweegt over diens uiteinden. Dit klikt misschien een beetje ingewikkeld, maar dat is in de praktijk niet echt zo, zoals het volgende voorbeeld demonstreert.

Beeldt u zich de volgende meetkundige constructie in: we construeren een cirkel en een punt dat zich op de omtrek van de cirkel kan bewergen (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 centrum van de cirkel, en vervolgens het middelpunt van dat lijnstuk.

Een eenvoudige constructie van een meetkundige plaats Een eenvoudige constructie van een meetkundige plaats

Als u nu het punt verplaatst dat is bevestigd aan de cirkel 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, half zo groot als de andere. Straks zien we dat dit precies datgene is wat een meetkundige plaats doet. De meetkundige plaats zal eruit zien als het pad dat het tweede punt aflegt terwijl het eerste punt rond de cirkel beweegt.

Het construeren 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 bevestigd is aan de cirkel als het bewegende punt (als de tekst Bewegend punt verschijnt) en de andere als het afhankelijke punt. Hierna zal de meetkundige plaats verschijnen.

## 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 &drgenius;.

Met scripts in Python kunt u met &kig; op uw eigen manier objecten definiëren uit bepaalde hoofdobjecten. Als u bijvoorbeeld een wiskundeleraar bent en een leuke manier hebt om een interessant punt of kegelsnede te berekenen, dan kunt u eenvoudigerweg opschrijven in Python-code hoe het punt wordt berekend in plaats van te stoeien met ingewikkelde constructies en macro's. &kig; zal het nieuwe object dan tonen.

Stel dat u niet wist van het bestaan van het in &kig; ingebouwde type middelpunt, en dat u het middelpunt wilde tonen van twee gegeven punten. Klik dan om dan een script te maken op de knop Pythonscript op 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 middelpunt willen verkrijgen. Selecteer deze twee punten in het hoofdvenster van &kig; en klik op Volgende om door te gaan.

Nu krijgt u een groot tekstvak te zien waarin u de code voor het scriptobject in kunt voeren. Als het goed is staat er al code van het sjabloon in met wat commentaar. Het is belangrijk dat de code die u invoert juiste Python-code is. Als u al bekend bent met Python zult u opmerken dat we hier een functie definiëren genaamd `calc`. Daarom is het nodig om enkele regels van Python te kennen omwille van het definiëren van functies. Zo moet elke regel van de functie bijvoorbeeld beginnen met een Tab. De eerste regel die niet meer begint met een Tab geeft het einde van de functiedefinitie aan.

De Python-functie die hier wordt gedefinieerd heet calc, welke in ons voorbeeld twee argumenten accepteert. Die argumenten komen overeen met de objecten die u hebt geselecteerd als argumenten in de vorige stap. Hier verschijnen er dus evenveel argumenten als u daar geselecteerd hebt. Ze heten `arg1` en `arg2`, maar als u wilt kunt u die namen veranderen naar iets met meer betekenis.

In deze functie kunt u alle soorten berekeningen uitvoeren die u nodig acht, waarbij u overal de argumenten kunt gebruiken. Het object dat moet verschijnen moet u terugsturen. In ons voorbeeld is dat een Point-object. De argumenten zijn ook Point-objecten waarbij we de functie `Point.coordinate()` kunnen gebruiken om de coördinaten van de twee gegeven punten te behouden.

De berekening die in ons voorbeeld wordt gedaan is erg eenvoudig, we voegen de twee coördinaten simpelweg bij elkaar en delen het resultaat door twee. Daarna constureren we een nieuw punt op die 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 middelpunt in de assistent Scriptobject.

Het nieuwe object zal verschijnen in het &kig;-document als u op de knop Voltooien hebt geklikt. Wanneer u één van de punten verplaatst zal het zojuist gemaakte punt met de twee punten meebewegen. Op deze manier kunt u heel veel krachtiger 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 klasse Point, waarbij u bijvoorbeeld de methode `Point.coordinate()` kunt gebruiken. Evenzo kunt u alle soorten objecten terugsturen, niet alleen punten. In Python-scripts in &kig; kunt u nog veel meer klassen en objecten gebruiken. Een meer compleet naslagwerk op dit gebied kunt u hier vinden.

## 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 restricties aan het verspreiden van &kig;, hoofdzakelijk dat iedereen dezelfde rechten om &kig; te gebruiken moet hebben, zo ook uw wijzigingen, net 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; hebt, u kunt het me altijd laten weten via devriese@kde.org.

- &kig; is een KPart-toepassing. Dat 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 getoont zonder dat u &kig; zelf hoeft op te starten.

- Het gebruik van &kig; moet eenvoudig te leren zijn. De constructie van objecten is eenvoudig en interactief, waarbij er steeds voorlopige resultaten worden getoond, enzovoort. Verplaatsen, selecteren en construeren 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 geladen bij opstarten, ze gaan dus niet verloren bij afsluiten. In het dialoogvenster Types beheren kunt u deze typen exporteren naar bestanden, ze uit bestanden importeren en verwijderen.

- &kig; slaat haar data op in een duidelijk &XML;-formaat.

- Met &kig; kunt u meetkundige plaatsen construeren.

- Met &kig; kunt u uw &kig;-bestanden exporteren naar enkele interessante bestandsformaten, zoals afbeeldingen en XFig-bestanden. Dit is erg handig, omdat (tot nu toe) lang niet alle programma's het &kig;-formaat ondersteunen.

- &kig; heeft een erg flexibel transformatiesysteem.

- &kig; wil graag compatibel zijn met haar concurrenten. Daarom ondersteunt &kig; het bestandsformaat van &kgeo; en &kseg;, en ondersteuning voor andere formaten is ook het plan.

## Vragen en antwoorden

&reporting.bugs; &updating.documentation;

## Dankbetuigingen en licentie

&kig;

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

Documentatie copyright 2002-2003 Dominique Devriese. devriese@kde.org

&meld.fouten;&vertaling.tijmen;&nagelezen.rinse; &underFDL; &underGPL;

## Installatie

### &kig; 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 het kan gebruiken, bekijken, aanpassen en verspreiden. Ik maak dit programma als hobby, maar ik heb ook veel geleerd over programmeren, C++, &kde;/&Qt;, wiskunde, softwaresamenwerking en open-sourceprojecten in de praktijk.

### 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 bij kan voegen in de volgende versie voor anderen. Ik heb zelf geen enkele financiële interesse voor dit project, dit is dus niet een reclametruc.

Als u niet zeker weet wat uw rechten zijn in het gebruik van deze software, of die voor andere gebruikers voor de veranderingen die u hebt aangebracht, enzovoort, lees dan de licentie. U kunt deze vinden in het bestand `COPYING` in de broncode van &kig; of bij tabblad Licentieovereenkomst 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 hebt 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` in bij de broncode van &kig; en in het hoofdstuk Dankbetuigingen en licentie in deze handleiding.

&documentation.index;