# Handbok &kig;

## Inledning

&kig; är ett program för interaktiv geometri. Det är avsett att tjäna två syften:

- Låta studenter utforska matematiska figurer och koncept med datorn.

- Fungera som ett verktyg för att rita matematiska figurer och infoga dem i andra dokument, med resultatet direkt synligt.

Du kan rapportera problem med &kig; med felrapporteringsverktyget som ingår (Hjälp Rapportera fel), eller kontakta mig på devriese@kde.org.

Eftersom &kig; stöder makron och lokus, ger det möjlighet att definiera några ganska avancerade makron. Om du har skapat ett intressant makro, som du tror kan vara användbart för andra, kan du skicka det till mig på devriese@kde.org, så att jag kan lägga till det i distributionen (om du gör det, licensieras det med &kig;s licens, GPL, så att andra kan använda och ändra det fritt).

## Grundläggande användning

### Konstruera objekt

#### Konstruera punkter

Du kan skapa punkter på flera olika sätt:

- Välj Objekt Punkter Normala punkter i menyraden eller tryck på lämplig knapp i verktygsraden. Därefter kan du konstruera en punkt genom att klicka på önskad position i fönstret.

  I själva verket fungerar detta på samma sätt för att konstruera andra objekt: Klicka på önskat alternativ i menyer eller verktygsknapp och markera önskade objekt för att skapa objektet.

- Eftersom du ofta behöver skapa punkter, skapas en punkt åt dig genom att du helt enkelt klickar någonstans på skärmen med musens mittenknapp, utan att behöva gå till en meny eller knapp.

- Du kan skapa punkter medan du bygger andra objekt i bakgrunden, och eventuellt markera dem för objektet du håller på att bygga. För mer om detta, se avsnittet nedan.

En punkt har konstruerats En punkt har konstruerats

#### Konstruera andra objekt

Att skapa andra objekt än punkter görs normalt genom att välja lämpligt alternativ i menyn Objekt, eller genom att klicka på en av knapparna i verktygsraden.

Konstruera en cirkel Konstruera en cirkel

Då påbörjas konstruktionen av den valda objekttypen. Alla dessa typer kräver argument. Om du till exempel väljer en cirkel med centrum och punkt, måste du ange två punkter: en för centrum och en för punkten på cirkeln.

För att markera argumenten, klickar du helt enkelt på objektet du vill använda. Om du flyttar över ett objekt som kan användas för att skapa objektet, visas en preliminär bild av hur objektet kommer att se ut. För objekt som kräver punkter som argument, kan du skapa en ny punkt på markörens nuvarande position, och markera den genom att klicka med vänster musknapp.

Du kan alltid avbryta konstruktionen av det nya objektet genom att trycka på knappen Esc, eller genom att klicka på stoppknappen (den röda åttakantiga symbolen med ett kryss) i verktygsraden.

Konstruera en cirkel Konstruera en cirkel

### Markera objekt

Att markera objekt kan göras på två sätt:

- Genom att helt enkelt klicka på ett objekt gör att objektet du klickade på blir markerat, och nuvarande markering försvinner. Om du inte vill ha det beteendet, håll nere &Ctrl;-tangenten medan du klickar på ett objekt.

- Genom att klicka och dra på ett tomt ställe på skärmen, kan du välja alla objekt inne i rektangeln som skapas. Den här åtgärden tar bort nuvarande markering. Som i föregående fall, förhindras beteendet genom att hålla nere &Ctrl;-tangenten.

Markera objekt Markera objekt

### Flytta objekt

För att flytta objekt, måste du först markera dem.

När objekten som du vill flytta är markerade, kan du börja flytta dem genom att vänsterklicka och dra något av dem. När du är klar, släpp helt enkelt upp vänster musknappen.

För vissa typer av objekt (i huvudsak komplicerade lokus), kan det gå långsamt att flytta objekt på gamla datorer. Det är olyckligt, men oundvikligt, med de beräkningar som måste utföras.

Om du högerklickar på ett av de markerade objekten, och väljer Flytta, flyttas objekten när musen rörs. När objekten har flyttats till önskad position, avslutas förflyttningen med ytterligare ett klick med vänster musknapp.

### Ta bort objekt

Att ta bort objekt görs genom att först markera dem, och därefter göra något av det följande:

- Trycka på tangenten Delete.

- Trycka på knappen för att ta bort i verktygsraden.

- Högerklicka på ett av objekten, och välja Ta bort i den sammanhangsberoende menyn som visas.

### Visa och dölja objekt

I &kig; kan objekt döljas. Det görs genom att markera objekten, högerklicka på ett av dem, och välja Dölj i den sammanhangsberoende menyn som visas.

För att visa objekt igen, använd Redigera Visa allt. Det visar alla objekt som för närvarande är dolda.

### Ångra/gör om

I &kig; kan du ångra nästan alla ändringar du gör i dokumentet. Använd bara knapparna ånga/gör om i verktygsraden, eller motsvarande snabbtangenter.

### Fullskärmsläge

&kig; har också ett fullskärmsläge. Klicka på motsvarande knapp i verktygsraden för att använda det, eller välj Visa Fullskärmsläge.

För att lämna fullskärmsläge, högerklicka på skärmen där det inte finns något objekt, och välj Växla fullskärmsläge, eller tryck på knappen Esc.

## Objekttyper i &kig;

&kig; stöder ett relativt stort antal objekttyper. Observera att alla tillgängliga objekttyper visas inte i verktygsraderna, utan att det också finns några objekt som du bara kan skapa via menyn Objekt i menyraden. Som med alla &kde;-program, är förstås det som visas i verktygsraderna anpassningsbart. Använd alternativet Inställningar Anpassa verktygsrader... om du vill göra det.

## Avancerad användning

### Sammanhangsberoende menyer

&kig; har sammanhangsberoende menyer för objekt. Försök att högerklicka på ett objekt för att se menyn visas. Det finns många alternativ för att skapa andra objekt, ställa in färger, och till och med för att dölja, flytta eller ta bort objekt. Vissa objekt har egna alternativ (du kan t.ex. omdefiniera vissa punkter som ska vara begränsade till en linje när de inte tidigare var det, etc.). De här alternativen bör vara mycket enkla att förstå.

### Sammanhangsberoende dokumentmenyer

Genom att högerklicka på dokumentet (dvs. inte på ett objekt) visas en meny som du kan använda för att börja skapa ett nytt objekt, ändra koordinatsystem som används, visa dolda objekt, och till och med zooma in och ut i dokumentet.

### Definiera makron

En av de mest avancerade funktionerna i &kig; är stödet för makron. Det låter dig definiera en ny typ av objekt genom att kombinera andra.

Antag till exempel att du vill göra ett makro för att skapa en cirkel från tre punkter på den, så skapar du bara de tre punkterna, några vinkelräta linjer och mittpunkter till du hittar centrum, och skapar cirkeln genom det centrum du skapade och en av de tidigare punkterna. Följande bild bör klargöra det hela.

Prova att köra makron Prova att köra makron

Därefter kommer definitionen av makrot. Välj Nytt makro i menyn Typer, eller klicka på knappen i verktygsraden. En guide visas, som ber dig markera de givna objekten. I vårt exempel är det de tre punkterna. Så du markerar de tre punkterna (klicka på dem för att markera, klicka igen för att avmarkera), och klickar på knappen Nästa för att fortsätta. Markera därefter till sist slutobjekten (bara cirkeln i vårt exempel).

Makroguiden Makroguiden

Efter föregående steg är färdiga, klicka på knappen Nästa för att fortsätta. Skriv in ett namn, och en valfri beskrivning för den nya typen, och klicka på knappen Slutför. Den nya makrotypen är nu klar.

För att använda den nya makrotypen, klicka på dess knapp i verktygsraden eller använd menyn Objekt. Du kan bygga ett makroobjekt precis som vilket annat objekt som helst.

Använda den nya typen Använda den nya typen

### Arbeta med typer

Som du såg i föregående kapitel, låter &kig; dig skapa dina egna objekt. &kig; försäkrar också att när du har skapat ett objekt, sparas det när programmet avslutas och laddas när det startas. Du behöver inte spara eller ladda makrodefinitioner för hand. Men &kig; låter dig göra mer med makron. Om du väljer Hantera typer i menyn Typer, ser du en dialogruta där du kan redigera dina typer. Den låter dig ta bort typer du inte längre använder, exportera dem till en fil, eller till och med ladda dem från en annan fil.

Dialogruta för att redigera typer Dialogrutan för att redigera typer

### Textetiketter

&kig; låter dig lägga till textetiketter i en konstruktion. Det är mycket användbart för att visa namn, förklaringar, eller annan text i konstruktioner. &kig; kan också visa varierande information om objekt (också kallade egenskaper).

För att börja skapa en textetikett, tryck helt enkelt på knappen Textetikett i &kig;s verktygsrad, eller välj Objekt Övrigt Textetikett i menyraden.

Därefter måste du välja en plats för textetiketten. Du kan antingen bara välja en slumpmässig plats på skärmen, eller välja att ansluta etiketten till ett annat objekt.

Ansluta en etikett till en cirkel... Ansluta en etikett till en cirkel...

Nu har du nått dialogrutan för textetiketten. Här kan du skriva in texten som du vill visa i den nya etiketten, och klicka på Slutför. Etiketten ska nu finnas i dokumentet.

Dialogruta för textetikett Dialogruta för textetikett

Föregående exempel var enkelt, och begränsat till bara text. Men det finns också stöd för att visa varierande information om objekt i en etikett (du kan t.ex. konstruera en etikett som visar texten Det här segmentet är %1 enheter långt., där %1 skulle dynamiskt ersättas av längden av ett särskilt segment).

För att göra det, skriv in en text med ett antal platsmarkörer (%1, %2 etc.). När du är klar, tryck på knappen Nästa för att fortsätta. Om du vill ändra texten eller variablerna senare, kan du alltid gå tillbaka med knappen Tillbaka.

Guiden visar nu texten som du skrev in med alla platsmarkörerna ersatta med något i stil med argument 1. Att välja vad som visas som ett visst argument, görs genom att först klicka på argumentet i fråga. Klicka därefter på objektet vars information du vill visa, och välj den intressanta informationen i menyn som visas. I exemplet ovan skulle du t.ex. klicka på argument 1, klicka på rätt segment i &kig;s huvudfönster, och välja egenskapen Längd. Efteråt kan du fylla i resten av de variabla delarna, eller välja en annan egenskap för en av de variabla delarna om du vill ändra den. När du är klar, klicka på knappen Slutför, för att avsluta konstruktionen av textetiketten.

Välja en egenskap för en varierbar del Välja en egenskap för en varierbar del

### Lokus

&kig; har stöd för geometriska lokus. Ett lokus är ett koncept från gymnasiematematik. I korthet är det figuren som definieras av alla punkter som en punkt rör sig över, när en annan punkt flyttas längs dess begränsningar. Detta kan låta något komplicerat, men i själva verket är det inte ett svårt koncept, som följande exempel visar.

Tänk dig följande geometriska konstruktion: Vi ritar en cirkel, och en punkt som kan röra sig över dess yta (skapa punkten genom att placera markören på en cirkel och klicka på musens mittenknapp. Om du därefter försöker flytta punkten som skapats, ser du att du inte kan flytta den från cirkeln.) Därefter ritar vi ett segment från punkten till cirkelns mittpunkt, och det segmentets mittpunkt.

En enkel lokuskonstruktion En enkel lokuskonstruktion

Om du nu flyttar punkten som är begränsad till cirkeln, kan du se att den andra punkten rör sig tillsammans med den. Om du skulle hålla en penna ovanför den andra punkten, och du flyttar den första punkten runt hela cirkeln, skulle en ny cirkel ritas med halva den andras storlek. Nedan kommer vi att se att det är just vad ett lokus gör. Vägen som den andra punkten förflyttas medan den första rör sig runt cirkeln, är vad detta lokus kommer att se ut som.

Att verkligen konstruera detta lokus är mycket enkelt. Klicka på lokus-knappen i verktygsraden, eller välj Objekt Övrigt Lokus i menyraden. Välj därefter den begränsade punkten som flyttbar punkt (texten Flyttbar punkt visas när du flyttar musen över den), och den andra som beroende punkt. Detta lokus visas då.

## Skript

&kig; låter användaren skapa egna typer med skriptspråket Python. Det är en mycket avancerad funktion, och jag känner bara till ett annat interaktivt geometriprogram som har en liknande funktion (GNOME-programmet &drgenius;).

Grundfunktionen i &kig;s Python-skript är att låta dig skapa ditt eget sätt att definiera objekt från vissa ursprungsobjekt. Om du till exempel är matematiklärare, och har ett avancerat sätt att räkna ut en intressant punkt på en kon, kan du skriva ner hur punkten ska beräknas med Python-kod, istället för att bråka med komplexa konstruktioner och makron, så visar &kig; den åt dig.

Antag att du inte var medveten om &kig;s inbyggda mittpunktstyp, och du ville visa mittpunkten för två givna punkter. Då skulle du klicka på knappen Python-skript i verktygsraden, eller välja Objekt Övrigt Skriptobjekt i menyraden. Då visas en guide för dig som låter dig gå vidare.

Skriptobjektguiden Skriptobjektguiden

Det första du måste göra är att välja argument för skriptobjektet. I vårt exempel, betyder det de två punkterna som vi vill visa mittpunkten för. Markera dem i &kig;s huvudfönster, och klicka på Nästa för att gå vidare.

Nu visas en textredigeringsruta, där du kan skriva in koden för skriptobjektet. Mallkod och några kommentarer finns redan på plats. Det är viktigt att försäkra dig om att din kod är giltig Python-kod. Personer som är bekanta med Python observerar att vi definierar i själva verket en Python-funktion, som heter `calc`. Därför är det nödvändigt att följa Pythons regler för definition av funktioner. Varje rad i funktionen måste till exempel börja med ett tabulatortecken. Den första raden som inte börjar med ett tabulatortecken avslutar funktionens definition.

Python-funktionen som ska definieras heter calc, och i vårt fall tar den två argument. De är objekten som du har markerat som argument på föregående skärm. Det finns lika många argument som du markerade där. De kallas `arg1`, `arg2`, men du kan ändra namnen till något meningsfullare om du vill.

Du kan göra alla sorters beräkningar i funktionen som du anser vara nödvändiga, med de två argumenten om det behövs. Du ska returnera objektet som du vill ska visas. I vårt fall är det ett punktobjekt. De två argumenten är också punktobjekt, och vi kan använda funktionen `Point.coordinate()` för att få fram de två givna punkternas koordinater.

Beräkningen som krävs i vårt exempel är mycket enkel. Vi lägger helt enkelt ihop de två koordinaterna, och dividerar resultatet med två. Därefter skapar vi en ny punkt med den nya koordinaten. Python-koden som behövs är:

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

Skriva in koden Skriva in koden för mittpunkten i Skriptobjektguiden.

Om du nu klickar på knappen Slutför, visas det nya objektet i &kig;s dokument. Om du flyttar en av punkterna, flyttas den nyskapade punkten med dem. Mycket mer kraftfulla objekt kan byggas på detta sätt. Du uppmuntras att försöka dig på det.

Konstruerade ett skriptobjekt Det nykonstruerade skriptobjektet

Alla objekt i Kig kan användas i Python-kod. Som vi såg ovan, har punkter klassen Point, och du kan till exempel använda metoden `Point.coordinate()`. Du kan också returnera alla sorters objekt, inte bara punkter. Många fler klasser och metoder är tillgängliga från Kigs Python-kod, och en mer fullständig referens till dem tillhandahålls här.

## Funktioner i &kig;

- &kig; är ett program med öppen källkod. Det betyder att du kan använda och ändra den på vilket sätt du vill. Att distribuera &kig; är föremål för vissa begränsningar, i grunden att alla ska ha samma rättigheter att använda &kig;, inklusive dina ändringar, som du och jag.

  Fri programvara utvecklas med en mycket öppen attityd, och utvecklarna är ofta mycket lyhörda för återmatning från användare. Om du därför har några frågor, klagomål eller något annat som rör &kig;, låt gärna upphovsmannen få reda på det på devriese@kde.org.

- &kig; är ett Kpart-program, vilket betyder att du kan bädda in det i andra &kde;-program. Om du öppnar en `kig`-fil i &konqueror;, kan den direkt visas i &konqueror;s fönster utan att behöva starta ett yttre program.

- Att arbeta med &kig; ska vara mycket rättframt. Det är lätt och interaktivt att skapa objekt, med visning av preliminära resultat, etc. Flytta, markera och bygga fungerar alla som man kan förvänta sig. Stöd för att ångra bör också vara mycket intuitivt.

- &kig; stöder makron som definieras på ett rättframt sätt. De här objekten visas för användaren som vanliga objekt. De sparas vid avslutning och laddas vid start, så de går inte förlorade när programmet avslutas. Du kan hantera dem som beskrivs under hantering av typer. De kan exporteras till filer, importeras från filer och tas bort.

- &kig; sparar data med ett enkelt &XML;-format.

- &kig; stöder skapande av lokus.

- &kig; låter dig exportera en &kig;-fil till några intressanta format, som bilder och Xfig-filer. Det är ganska användbart, eftersom inte alla program ännu stöder &kig;s filformat.

- &kig; har ett mycket flexibelt transformeringssystem.

- &kig; har som mål att fungera tillsammans med konkurrerande program. Det är därför det stöder &kgeo;s filformat, &kseg;s filformat och dessutom planeras stöd för andra format.

## Vanliga frågor

&reporting.bugs; &updating.documentation;

## Tack till och licens

&kig;

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

Dokumentation copyright 2003 Dominique Devriese. devriese@kde.org

Stefan Asserhäll stefan.asserhall@comhem.se

&underFDL; &underGPL;

## Installation

### Hur man skaffar &kig;

&install.intro.documentation;

### Kompilering och installation

&install.compile.documentation;

## Bidrag

### Fri programvara

&kig; är fri programvara. Det betyder att källkoden är fritt tillgänglig på Internet, och att alla kan använda den, läsa den, ändra den och distribuera den. Jag arbetar på den som ett hobbyprojekt, och jag har redan lärt mig mycket om att programmering, C++, &kde;, &Qt;, matematik, samarbete om programvara och projekt med öppen källkod, under tiden.

### Bidrag

Meningen med det här kapitlet är att tala om för dig (användaren) vilka rättigheter &kig;s licens ger dig. Som med all fri programvara, tillåts (och uppmuntras) du att lösa problem du stöter på medan du använder det, att lägga till funktioner du saknar, att distribuera ditt ändrade program, och skicka ändringarna till mig på devriese@kde.org, så att jag kan inkludera dem i nästa version så att andra kan dra nytta av dem. Personligen har jag inget ekonomiskt intresse i projektet över huvud taget, så det här är inte bara marknadsföringssnack!

Om du är osäker på dina rättigheter att använda programvaran, eller andra personers rätt att använda eventuella ändringar som du gör i programmet, etc. läs då licensen. Du hittar den i filen `COPYING` i &kig;s källkod, eller under licensfliken i dialogrutan Om Kig.

### Hur kan jag bidra?

Alla bidrag är välkomna. Om du tycker att ikonerna är skräp, eller att handboken behöver uppdateras, eller har ett riktigt häftigt makro som du vill dela med världen, tveka inte att skicka det till mig. Observera att ditt bidrag kommer att distribueras enligt villkoren i GNU GPL. Du hittar licensvillkoren i filen `COPYING` i &kig;s källkod, och i kapitlet Tack till och licenser i den här handboken.

&documentation.index;