# Handbok &kig;

Dominique
Devriese

    devriese@kde.org

Stefan
Asserhäll

    stefan.asserhall@comhem.se

Översättare
2002
2003
2004
Dominique Devriese
&FDLNotice;
2005-08-20
1.0 (&kde; 4.1.1)

&kig; är ett &kde;-program för interaktiv geometri.

KDE
KDE utbildning
Kig
Interaktiv geometri
Kgeo
Cabri
Dr. Geo
Kseg

## 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 det interna felrapporteringsverktyget (Hjälp Rapportera fel), eller kontakta mig på toscano.pino@tiscali.it.

Eftersom &kig; stöder makron och konstruktion av 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, skicka det gärna till mig på toscano.pino@tiscali.it, 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 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 nödvändiga delar 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 .

En punkt har konstruerats
En punkt har konstruerats

#### Konstruera andra objekt

Att skapa andra objekt än punkter görs oftast 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 att skapa en cirkel med centrum och punkt, måste du ange två punkter: en för centrum och en för punkten på cirkeln.

Argumenten är också objekt som kan markeras genom att helt enkelt klicka på dem. När du flyttar markören över ett argument du vill använda för att skapa ett objekt, visas en preliminär bild av objektet, så att du vet hur det kommer att se ut. För objekt som kräver punkter som argument, kan du placera 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å knappen Avbryt konstruktion (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 vill markera flera objekt samtidigt, 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, är det möjligt att behålla nuvarande markering genom att hålla nere &Ctrl;-tangenten.

När du har mer än ett objekt under musen, kan du enkelt välja vilket objekt som ska markeras eller läggas till i den nuvarande markeringen. Klicka med vänster musknapp medan du håller nere &Shift;-tangenten, för att få en sammanhangsberoende meny med alla objekt under musen. Därefter kan du välja objektet du vill ha. Som tidigare nämnts, påverkar beteendet hos &Ctrl;-tangenten markeringen.

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 vilket som helst av dem. När du är klar, släpp helt enkelt upp vänster musknappen.

För vissa typer av objekt (särskilt när de definieras av komplicerade lokus), kan det gå långsamt att flytta dem 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 objektet när musen rörs. När objektet 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 Ta bort objekt 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.

#### Nattsyn

Nattsyn är ett särskilt sätt att arbeta med dolda objekt. När du vill flytta eller ändra något i ett eller flera objekt utan att visa alla dolda objekt du har, kan nattsynsläget vara till nytta för dig.

Egentligen låter det dig se de dolda objekten som om de var synliga, så att du kan behandla dem som du skulle normalt. I nattsynsläge är de dolda objekten synliga med en grå färg.

För att ändra nattsynsläget, använd Inställningar Använd infraröda glasögon.

### Ångra/gör om

I &kig; kan du ångra nästan alla ändringar du gör i dokumentet. Använd bara knapparna Ångra/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 Inställningar Fullskärmsläge.

För att lämna fullskärmsläge, högerklicka på skärmen på en plats där det inte finns något objekt, och välj Avsluta fullskärmsläge, eller tryck på snabbtangenterna &Ctrl;&Shift;F.

## Objekttyper i &kig;

&kig; stöder ett relativt stort antal objekttyper. Observera att alla tillgängliga objekttyper visas inte i verktygsraderna, det 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. Prova 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 om 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 nya typer av objekt från andra som redan är definierade.

Antag till exempel att du vill göra ett makro för att skapa en cirkel från tre punkter på den. Du skulle mata in tre punkter, därefter skapa några vinkelräta linjer och mittpunkter till du hittar centrum. Nu kan du använda det befintliga kommandot Skapa en cirkel med centrum och punkt (genom att använda en av de tre punkterna för kommandot). 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 skapa 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 Typer Hantera typer..., ser du en dialogruta där du kan redigera dina typer. Den låter dig ändra befintliga typer, 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 lägga till 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 objekt.

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

Efter du har valt var textetiketten ska placeras, visas dialogrutan för textetiketter. Här kan du skriva in texten som du vill visa i den nya etiketten, och klicka på Slutför. Etiketten ska nu synas 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 med 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.). Tryck därefter 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 egenskapen ansluten till ett visst argument, görs genom att först klicka på argumentet i fråga. Klicka därefter på objektet som du behöver och som har egenskapen, och välj därefter själva egenskapen 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 användning av lokus. Ett lokus definieras matematiskt som mängden av alla punkter eller linjer som uppfyller eller bestäms av specifika villkor, som i ett lokus av ekvidistanta punkter från en given punkt är en cirkel. Härefter visas ett exempel på hur man använder lokus i &kig;.

Tänk dig följande geometriska konstruktion: Vi ritar en cirkel, och en punkt som bara kan röra sig längs omkretsen (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 konstruktion som använder ett lokus
En enkel konstruktion som använder ett lokus

Om du nu flyttar punkten som är begränsad till cirkeln, ser du att den andra punkten rör sig tillsammans med den. Om du skulle hålla en penna på den andra punkten, och flytta den första punkten runt hela cirkeln, skulle en ny cirkel ritas med halva den andras storlek. Vägen som den andra punkten förflyttas medan den första rör sig runt cirkeln, är dess lokus.

I själva verket är det mycket enkelt att konstruera ett lokus för en punkt. Klicka på knappen Lokus 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. Lokus för den beroende punkten ritas då upp.

## Skript

&kig; låter dig 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 &drgeo;).

Grundfunktionen i &kig;s Python-skript är att låta dig skapa dina egna 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 Pythonskript i verktygsraden, eller välja Objekt Övrigt Pythonskript 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 vi vill definiera 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. Du behöver lika många argument som du markerade där. De kallas `arg1` och `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 användning av de två argumenten om det behövs. Du ska returnera objektet som du vill definiera. 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 definiera 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å koordinatuppsättningarna, och dividerar resultatet med två. Därefter skapar vi en ny punkt med resultatet. 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 den. 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 `Point`. Många fler klasser och metoder är tillgängliga i Kigs Python-kod, och en mer fullständig referens om dem tillhandahålls på &kig;s webbsida.

## 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å toscano.pino@tiscali.it.

- &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 objekten i dialogrutan Hantera typer (se ). Du kan exportera dem till filer, importera dem från filer, redigera och ta bort dem.

- &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, Xfig-filer och Latex-filer och SVG-vektorbilder. 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, delvis &drgeo;s format, och &cabri;-formatet. Dessutom planeras stöd för andra format.

## Vanliga frågor

&reporting.bugs;

&updating.documentation;

## Tack till och licens

&kig;

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

Dokumentation copyright 2002-2004 Dominique Devriese devriese@kde.org.

Dokumentation copyright 2004-2005 Pino Toscano toscano.pino@tiscali.it.

Granskad av &Philip.Rodrigues; &Philip.Rodrigues.mail;.

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

I det här kapitlet vill jag påpeka 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å toscano.pino@tiscali.it, så att jag kan inkludera dem i nästa version så att andra kan dra nytta av dem. Observera att jag personligen inte har något ekonomiskt intresse i projektet över huvud taget.

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 med länken till licensen i dialogrutan Om Kig.

### Hur kan jag bidra?

Alla bidrag är välkomna. Om du inte tycker om ikonerna, eller tycker att handboken behöver uppdateras, eller om du 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;