# &kig;-håndbogen

Dominique Devriese

    devriese@kde.org

&erik.kjaer.pedersen.role;
2002 2003 Dominique Devriese
&FDLNotice;
2003-07-27
0.6.0

&kig; er et &kde;-program til interaktiv geometri.

KDE KDE-Edu Kig Interaktiv geometri KGeo Cabri

## Indledning

&kig; er et program til interaktiv geometri. Det er beregnet til at tjene to formål:

- At tillade elever at udforske matematiske figurer og begreber interaktivt ved brug af en computer.

- At tjene som et WYSIWYG-værktøj til at tegne matematiske figurer og inkludere dem i andre dokumenter.

Du kan rapportere problemer i &kig; ved brug af det interne fejlrapport-værktøj (Hjælp Rapportér fejl), eller blot ved at kontakte mig på devriese@kde.org.

Da &kig; understøtter makroer og lokuser, kan det lade sig gøre at definere nogle ret avancerede makroer. Hvis du har lavet en interessant makro, som du tror kunne være nyttig for andre, kan du sende den til mig på devriese@kde.org, så jeg kan inkludere den i distributionen (hvis du gør det vil den komme under samme licens som &kig;'s license, nemlig GPL, så andre kan bruge den frit og adaptere den).

## Basal brug

### Konstruktion af objekter

#### Konstruktion af punkter

Du kan konstruere punkter på adskillige måder:

- Vælg Objekter Punkter Normalt punkt fra menulinjen eller tryk på en passende knap i værktøjslinjen. Du kan så konstruere et punkt ved at klikke på den ønskede position i vinduet.

  Rent faktisk virker dette også på samme måde til at konstruere andre objekter: klik på den ønskede indgang på menulinjen eller knap på værktøjslinjen og vælg de nødvendige objekter til at konstruere objektet.

- Da du ofte har brug for at konstruere punkter, vil et simpelt klik et eller andet sted på skærmen med den midterste museknap konstruere et punkt for dig, uden at gå til en menu eller knap.

- Du kan konstruere punkter mens du er ved at bygge andre objekter i baggrunden, hvis du vil ved at vælge dem for objektet du er ved at bygge. For mere om dette, se afsnittet nedenfor.

Et punkt er blevet konstrueret
Et punkt er blevet konstrueret

#### Konstruktion af andre objekter

Konstruction af andre objekter end punkter gøres normalt ved at vælge en passende indgang i Objekter-menuen, eller ved at klikke på en af værktøjslinjens knapper.

Konstruktion af en cirkel
Konstruktion af en cirkel

Dette vil starte konstruktionen af den valgte objekttype. Alle disse typer kræver argumenter. For eksempel, hvis du valgte en cirkel ved centrum og punkt, vil du skulle give det to punkter: et for centrum, og et for punktet på cirklen.

For at vælge disse argumenter, klikkes simpelthen på objektet du ønsker at bruge. Hvis du bevæger dig over et objekt der kan bruges til at konstruere objekt, vil et foreløbigt billede blive vist af hvordan objektet vil komme til at se ud. For objekter der kræver punkter som argumenter, kan du konstruere et nyt punkt ved den nuværende markørposition og vælge det ved at klikke med venstre museknap.

Du kan altid annullere konstruktionen af det nye objekt ved at trykke på &Esc;-tasten eller ved at klikke på Stop-knappen (rød oktagon med et X) på værktøjslinjen.

Konstruktion af en cirkel.
Konstruktion af en cirkel

### Valg af objekter

Valg af objekter kan gøres på to måder:

- Et objekt bliver valgt ved simpelthen at klikke på det, hvilket rydder det nuværende valg. Hvis du ikke ønsker dette skal ske, så hold &Ctrl;-tasten nede mens du klikker på et objekt.

- Ved at klikke på et tomt sted på skærmen og trække, kan du vælge alle objekter indenfor det rektangel der opstår. Dette vil rydde det nuværende valg. Som i det tidligere tilfælde vil det at holde &Ctrl;-tasten nede forhindre dette.

Valg af objekter
Valg af objekter

### Flytning af objekter

For at flytte objekter må du først vælge dem.

Når de objekter du ønsker at flytte er blevet valgt, kan du begynde at flytte dem ved at venstre-klikke og trække en af dem. Når du er færdig så giv blot slip på &LMB;.

For visse typer objekter (de mest komplicerede lokuser), kan det være langsom at flytte objekterne hvis computeren er langsom. Dette er uheldigt, men uundgåelig givet de involverede beregninger.

Hvis du højreklikker på et af de markerede objekter, og vælger Flyt, vil flytning af musen flytte objektet. Når objektet er flyttet til den ønskede position, vil et venstreklik standse bevægelsen.

### Sletning af objekter

Sletning af objekter gøres ved først at vælge dem, og dernæst gøre et af følgende:

- Tryk på Delete-tasten.

- Tryk på slet-knappen i værktøjslinjen.

- Klik med &RMB; på et af objekterne, og vælg Slet i den sammenhængsmenu der kommer frem.

### Vise og skjule objekter

I &kig;, kan objekter være skjulte. Dette gøres ved at vælge objekterne, klikke med &RMB; et af dem, og vælge Skjul i sammenhængsmenuen der kommer frem.

For ikke længere at skjule objekterne bruges Redigér Skjul intet.... Dette vil gøre at ingen objekter længere vil være skjult.

### Fortryd/Annullér fortryd

I &kig;, kan du fortryde næsten enhver ændring du gør på dokumentet. Brug blot fortryd/annullér fortryd knapperne i værktøjslinjen er passende genveje.

### Fuldskærmstilstand

&kig; har også en fuldskærmstilstand. For at bruge den klikkes på en passende knap i værktøjslinjen eller Vis Fuldskærm vælges.

For at forlade fuldskærmstilstand klikkes med &RMB;på skærmen et sted hvor der ikke er noget objekt til stede og Forlad fuldskærmstilstand vælges, eller der trykkes på &Esc;-tasten.

## &kig;'s objekttyper

&kig; understøtter et temmeligt stort antal objekttyper. Bemærk venligst at ikke alle de tilgængelige objekttyper er vist i værktøjslinjerne, men at der også er nogle objekter som du kun kan konstruere via Objekter-menuen i menulinjen. Naturligvis er, som med alle &kde;'s programmer, det der ses i værktøjslinjerne indstilleligt. Prøv Opsætning Indstil værktøjslinjer... hvis du ønsker at gøre dette.

## Avanceret brug

### Sammenhængsmenuer

&kig; har sammenhængsmenuer for sine objekter. Prøv at klikke med &RMB; på et objekt for at se en sammenhængsmenu komme frem. Der er mange valgmuligheder: til at konstruere andre objekter, sætte farver, og endog skjule, flytte eller slette objekter. Nogle objekter har deres egne indstillinger (⪚ kan du redefinere visse punkter til at være begrænset til en linje hvor de tidligere ikke var, &etc;). Disse valgmuligheder skulle være rimeligt nemme at forstå.

### Dokument sammenhængsmenuer

Klik med &RMB; på dokumentet (&ie; ikke på et objekt) vil præsentere en popop som du kan bruge til at begynde på at konstruere et nyt objekt,ændre det brugte koordinatsystem, vise skjulte objekter, og endog formindske og forstørre dokumentet.

### Definere makroer

En af de mere avancerede egenskaber i &kig; er dets støtte for makroer. Dette tillader dig at definere en ny type objekter ved at kombinere andre.

For eksempel: Lad os antage du ønsker at lave en makro til at konstruere en cirkel ud fra tre punkter på den, så ville du blot konstruere tre punkter, nogle vinkelrette linjer og midtpunkter indtil du finder centrum, og så konstruere cirklen ud fra det centrum du har konstrueret og et af de tidligere punkter. Følgende billede skulle gøre dette en smulemere klart.

Testkørsel af makroer
Testkørsel af makroer

Dernæst kommer at definere makroen. Vælg Ny makro fra Type-menuen eller klik på knappen på værktøjslinjen. En guide vil komme frem der beder dig om at vælge de givne objekter. I vort eksempel, er disse de tre punkter. Vælg de tre punkter (klik på dem for at vælge dem, klik igen for at fravælge) og klik på næste-knappen for at fortsætte. Endelig vælges de sidste objekter (kun cirklen i vort eksempel).

Makro-guiden
Makro-guiden

Efter de tidligere skridt er færdige, klik på næste-knappen for at fortsætte. Indtast et navn og hvis du vil en beskrivelse for din nye type, og klik på Færdig-knappen. Din makrotype er nu færdig.

For at bruge den nye makrotype, klik på dens knap på værktøjslinjen eller brug Objekter-menuen. Bygning af et makro-objekt er helt ligesom at konstruere et vilkårligt andet objekt.

Brug din nye type
Brug din nye type

### Arbejde med typer

Som du så i det tidligere kapitel, tillader &kig; dig at lave dine egne objekter. &kig; sørger også for at når du har lavet et objekt, bliver det gemt ved afslutning og indlæst når der startes igen. Du behøver ikke at gemme eller indlæse makro-definitioner manuelt. &kig; tillader dig imidlertid at gøre mere med makroerne. Hvis du vælger Håndtér typer fra Typer-menuen vil du se en dialog hvor du kan redigere dine typer. Det tillader dig at slette typer der ikke længere bliver brugt, eksportere dem til en fil, eller endog indlæse dem fra en anden fil.

Redigér-typer dialog
Rediger-typer dialogen

### Tekst-etiketter

&kig; tillader dig at tilføje tekst-etiketter til en konstruktion. Det er meget nyttigt til at vise navne, forklaringer eller anden tekst i konstruktioner. &kig; kan også vise variabel information om objekter (også kendt som egeneskaber).

For at starte konstruktionen af en tekst-etikette, tryk blot på 'Tekst-etikette'-knappen i &kig;'s værktøjslinje eller vælg Objekter Andet Tekst-etikette i menulinjen.

Dernæst skal du vælge et sted for tekst-etiketten. Du kan enten blot vælge et tilfældigt sted på skærmen, eller vælge at knytte etiketten til et andet objekt.

Tilknytning af en etiket til en cirkel...
Tilknytning af en etiket til en cirkel...

Du kommer nu til tekst-etikette dialogen. Her kan du skrive den tekst du ønsker skal vises i den nye etikette, og klikke på Færdig. Etiketten skulle nu være tilstede i dit dokument.

Tekst-etikette dialogen
Tekst-etikette dialogen

Det forrige eksempel var meget simpelt og begrænset kun til tekst. Der er imidlertid også støtte for at vise variabel information om objekter i en etikette (⪚. kan du konstruere en etikette der viser teksten Dette linjestykke er %1 enheder langt... hvor %1 bliver erstattet dynamisk med længden af et bestemt linjestykke).

For at gøre dette indtastes en tekst med et antal pladsholdere ( %1, %2 &etc;) i sig. Når du er færdig, tryk på Næste-knappen for at fortsætte. Hvis du ønsker at ændre teksten eller variablerne senere kan du gå tilbage ved brug af Tilbage-knappen.

Guiden viser nu teksten du skrev med alle pladsholdere erstattet med noget i retning af argument 1. Valg af hvad der skal vises som et bestemt argument gøres ved først at klikke på argumentet det drejer sig om. Derpå klikkes på det objekt for hvilket du ønsker at vise information, og så vælges noget interessant information i popop-menuen der kommer frem. For eksempel, i eksemplet ovenfor, ville du klikke på argument 1, klikke på det rigtige linjestykke i &kig;'s hovedvindue og så vælge egenskaben Længde. Bagefter kan du udfylde resten af de variable dele, eller vælge en anden egenskab for en af de variable dele hvis du ønsker at ændre det. Når du er parat klikkes på Færdig-knappen for at færdiggøre konstruktionen af tekstetiketten.

Valg af en egenskab for en variabel del
Valg af en egenskab for en variabel del

### Lokuser

&kig; har støtte for geometriske lokuser. Et lokus, eller 'geometrisk sted' er et begreb fra gymnasiets matematik. Kort sagt bliver figuren defineret ved alle de punkter et punkt bevæges over, når et andet punkt bevæges langs sine begrænsninger. Dette lyder måske lidt kompliceret, men er rent faktisk ikke et vanskeligt begreb som følgende eksempel demonstrerer.

Betragt følgende geometriske konstruktion: Vi tegner en cirkel, og et punkt der bevæger sig på randen af cirklen (konstruér dette punkt ved at putte markøren på en cirkel, og klikke med den &MMB; museknap. Hvis du så prøver at flytte det resulterende punkt, vil du se at du ikke kan flytte det væk fra cirklen). Vi tegner så et linjestykke fra dette punkt til centrum for cirklen, og midtpunktet af dette linjestykke.

En simpel lokus konstruktion
En simpel lokus konstruktion

Hvis du nu bevæger punktet der er begrænset til cirklen, kan du se at det andet punkt bevæger sig samtidigt. Hvis du holdt en pen over det andet punkt, og du flytter det første punkt rundt på hele cirklen, vil en ny cirkel, på den halve størrelse af den anden blive tegnet. Vi skal se nedenfor at dette er nøjagtigt have et lokus eller geometrisk sted gør. Stien det andet punkt gennemløber mens det første bevæger sig gennem cirklen er hvordan et lokus vil se ud.

Rent faktisk at konstruere et lokus er meget nemt. Klik på lokus-knappen i værktøjslinjen eller vælg Objekter Andet Lokus fra menulinjen. Vælg så det begrænsede punkt som det bevægende punkt (tekst Bevægende punkt vil komme frem når du har musen over det), og det andet punkt som det afhængige punkt. Så vil lokus komme frem.

## Scripter

&kig; tillader brugeren at lave egne typer i Python script-sproget. Dette er en meget avanceret egenskab, og jeg kender kun et andet interaktivt geometri program der har lignende funktionalitet (GNOME-programmet &drgenius; ).

Python scripter i &kig; tillader dig basalt set at have din egen måde at definere et objekt fra et vist over-objekt. For eksempel, hvis du er matematiklærer, og du har en smart måde at beregne et interessant punkt på et keglesnit, så kan du, i stedet for at rode med komplekse konstruktioner og makroer, blot skrive ned i Python kode hvordan punktet skal beregnes så vil &kig; vise det for dig.

Antag du ikke kendte til &kig;'s indbyggede midtpunkts-type, og du ønskede at vise midtpunktet for to givne punkter. Du ville så klikke på Python-script knappen i værktøjslinjen eller vælg Objekter Andet Script objekt fra menulinjen. Du bliver så præsenteret for en guide der lader dig fortsætte.

Script objekt guiden
Script objekt guiden

Det første du skal gøre er at vælge argumenterne for script-objektet. I vort eksempel, betyder dette de to punkter for hvilke vi ønsker at vise midtpunktet. Vælg dem i &kig;'s hovedvindue, og klik på Næste for at fortsætte.

Nu bliver du præsenteret for en tekst-redigeringsboks hvor du kan indtaste koden for dit script-objekt. Skabelon-kode og nogle kommentarer er allerede på plads. Det er vigtigt at sørge for at din kode er gyldig Python-kode. Folk der kender til Python vil bemærke at vi rent faktisk definerer en Python-funktion der hedder `calc`. Det er derfor nødvendigt at adlyde Python-reglerne for at definere funktioner. For eksempel skal hver linje i funktionen starte med en Tab. Den første linje der ikke starter med en Tab afslutter definitionen af funktionen.

Python-funktionen der bliver defineret hedder calc, og i vores tilfælde accepterer den to argumenter. Disse er de objekter du har valgt som argumenter på den forrige skærm. Der vil være så mange argumenter som du har valgt der. De hedder arg1 og arg2, men du kan ændre deres navne til noget mere betydningsfuldt hvis du vil.

I funktionen kan du udføre alle slags beregninger som du mener er nødvendige, ved brug af de to argumenter. Du skal returnere objektet du ønsker skal blive vist. I vores tilfælde er det et punkt-objekt. De to argumenter er også punkt-objekter, og vi kan bruge `Point.coordinate()` funktionen til at få fat i koordinaterne for de to givne punkter.

Den nødvendig beregning i vores eksempel er meget enkel, vi lægger simpelthen de to koordinater sammen, og dividerer resultatet med to. Vi konstruerer så et nyt punkt ved brug af disse koordinater. Den python-kode der bruges er:

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

Indtastning af kode
Indtastning af kode for midtpunkt i Script-objekt guide.

Hvis du nu klikker på Færdig-knappen, så vil det nye objekt komme frem i &kig;-dokumentet. Hvis du flytter et af punkterne, så vil det nye punkt flytte langs med dem. Mange meget mere interessante objekter kan bygges på denne måde, du opfordres til at forsøge dig frem.

Konstruerede et script-objekt
Det nyligt konstruerede script-objekt.

Alle objekter i &kig; kan bruges i Python-koden. Som vi har set ovenfor er punkter af Punkt-klasse, og du kan bruge ⪚ `Point.coordinate()` metoden. Du kan også returnere alle andre slags objekter, ikke kun punkter. Mange flere klasser og metoder er tilgængelige fra &kig;'s Python-kode, og en mere fuldstændig reference om dem findes her.

## &kig;'s egenskaber

- &kig; er et open source program. Det betyder at det står dig frit for at bruge og ændre det som du har lyst. Distribution af &kig; foregår under nogle restriktioner, basalt set skal alle have de samme rettigheder til at bruge &kig;, inklusive at lave ændringer, som dig og mig.

  Free software programmer udvikles i en meget åben ånd, og dets udviklere er sædvanligvis meget responsive for tilbagemeldinger fra brugere. Derfor, hvis du skulle have spørgsmål, beklagelser, eller hvadsomhelst om &kig;, så lad forfatteren vide om det på devriese@kde.org.

- &kig; er et KPart-program, hvilket betyder at du kan indlejre det i andre &kde;-programmer. Hvis du åbner en `.kig`-fil i &konqueror;, kan den åbnes direkte i &konqueror;-skærmen uden at behøve at starte et eksternt program.

- Det skulle være ligetil at arbejde med &kig;. Konstruktion af objekter er nemt og interaktivt, med foreløbige resultater der bliver vist &etc;. Det foregår som man skulle forvente når man flytter, markere og bygger ting. Støtte for at fortryde skulle også være meget intuitivt.

- &kig; understøtter makroer defineret på en ligetil måde. Disse objekter bliver præsenteret for brugeren som normale objekter. De bliver gemt ved afslutning on indlæst ved opstart, så de går ikke tabt ved afslutning. I Type-håndtering kan du håndtere disse objekter. Du kan eksportere dem til filer, importere dem fra filer, og slette dem.

- &kig; gemmer sine data i et rent &XML;-format.

- &kig; understøtter konstruktion af lokuser..

- &kig; tillader dig at eksportere en &kig;-fil til nogle interessante formater, såsom billeder og XFig-filer. Dette er ret nyttigt da ikke alle programmer understøtter &kig;'s filformat endnu.

- &kig; har et meget fleksibelt transformationssystem.

- &kig; prøver på at være kompatibel med sine konkurrenter. Det er derfor den understøtter &kgeo;'s filformat, &kseg;'s filformat og støtte for andre formater er også planlagt.

## Spørgsmål og svar

&reporting.bugs; &updating.documentation;

## Medvirkende og licens

&kig;

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

Dokumentation ophavsret 2002-2003 Dominique Devriese. devriese@kde.org

&erik.kjaer.pedersen.credit; &underFDL; &underGPL;

## Installation

### Hvordan får du fat på &kig;

&install.intro.documentation;

### Kompilering og installation

&install.compile.documentation;

## Hjælp til

### Frie programmer

&kig; er Free Software. Det betyder at dets kildekode er frit tilgængelig på internettet, og enhver kan bruge den, læse den, ændre den og distribuere den. Jeg arbejder på den som en hobby, og jeg har allerede lært en masse om C++ programmering, &kde;/&Qt;, matematik, samarbejde om software open source projekter i processen.

### Hjælp til

Pointen i dette kapitel er at påpege over for dig (brugeren) de rettigheder som &kig;'s licens giver dig. Som med al fri software har du lov til (og opfordres) til at ordne problemer du møder mens du bruger det, at tilføje egenskaber du mangler, at distribuere dit ændrede program, og til at sende disse ændringer til mig på devriese@kde.org, så jeg kan inkludere dem i den næste udgave så andre kan nyde dem. Jeg personligt har ingen finansiel interesse i dette projekt overhovedet, så dette er ikke blot marketing-snak her.

Hvis du er usikker på dine rettigheder til brugen af denne software, eller andre menneskers ret til at bruge ændringer du laver på dette program &etc;, så læs venligst licensen. Du kan finde den i `COPYING`-filen i &kig;'s kildetræ eller licens-fanebladet i Om Kig-dialogen.

### Hvordan kan jeg bidrage ?

Ethvert bidrag er velkomment. Hvis du synes ikonerne er elendige, eller at manualen trænger til at blive opdateret, eller du har denne virkelig interessante makro som du ønsker at dele med hele verden, så hold dig ikke tilbage med at sende den til mig. Husk venligst at dine bidrag vil blive distribueret under betingelserne i GNU's GPL; du kan finde betingelserne i denne license i `COPYING`-filen i &kig;'s kildetræ, og i Medvirkende og licens kapitlet i denne manual.

&documentation.index;