<listitem><para>At tillade elever at udforske matematiske figurer og begreber interaktivt ved brug af en computer. </para></listitem>
<listitem><para>At tjene som et <acronym>WYSIWYG</acronym>-værktøj til at tegne matematiske figurer og inkludere dem i andre dokumenter.</para></listitem>
<para>Du kan rapportere problemer i &kig; ved brug af det interne fejlrapport-værktøj (<menuchoice><guimenu>Hjælp</guimenu><guimenuitem>Rapportér fejl...</guimenuitem></menuchoice>), eller blot ved at kontakte mig på <email>toscano.pino@tiscali.it</email>. </para>
<para>Da &kig; understøtter makroer og konstruktionen af 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, så send den venligst til mig på <email>toscano.pino@tiscali.it</email>, så jeg kan inkludere den i distributionen (hvis du gør det vil den komme under samme licens som &kig;'s license, nemlig <ulink url="http://www.gnu.org/licenses/licenses.html#GPL">GPL</ulink>, så andre kan bruge den frit og adaptere den). </para>
<para>Vælg <menuchoice><guimenu>Objekter</guimenu> <guisubmenu>Punkter</guisubmenu><guimenuitem>Punkt</guimenuitem></menuchoice> 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.</para> <note><para>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 punkter til at konstruere objektet.</para></note>
<para>Da du ofte har brug for at konstruere punkter, vil et simpelt klik et eller andet sted på skærmen med den <mousebutton>midterste</mousebutton> museknap konstruere et punkt for dig, uden at gå til en menu eller knap. </para>
<para>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 <xref linkend="constructing-other-objects"/>. </para>
<para>Konstruction af andre objekter end punkter gøres sædvanligvis ved at vælge en passende indgang i <guimenu>Objekter</guimenu>-menuen, eller ved at klikke på en af værktøjslinjens knapper. </para>
<para>Dette vil starte konstruktionen af den valgte objekttype. Alle disse typer kræver argumenter. For eksempel, hvis du valgte at konstruere en cirkel ved centrum og punkt, vil du skulle give det to punkter: et for centrum, og et for punktet på cirklen. </para>
<para>Disse argumenter er også objekter, som også kan vælges blot ved at klikke på dem. Når du bevæger dig over et argument som du ønsker at bruge til at konstruere et 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 <mousebutton>venstre</mousebutton> museknap. </para>
<para>Du kan altid annullere konstruktionen af det nye objekt ved at trykke på &Esc;-tasten eller ved at klikke på <guiicon>Stop</guiicon>-knappen (rød oktagon med et <quote>X</quote>) på værktøjslinjen. </para>
<para>Et objekt bliver valgt ved simpelthen at klikke på det, hvilket rydder det nuværende valg. Hvis du ikke ønsker at vælge flere objekter samtidigt, så hold &Ctrl;-tasten nede mens du klikker på et objekt. </para>
<para>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 tillade dig at beholde den nuværende markering. </para>
<para>Når du har mere end et objekt under musen, kan du nemt vælge hvilket objekt som skal markeres eller tilføjes i den nuværende markering. Klik med venstre museknap mens du holder &Shift;-tasten nede, for at få en sammenhængsafhængig menu med alle objekter under musen. Derefter kan du vælge objektet du vil have. Som tidligere nævnt, påvirker opførslen af &Ctrl;-tasten markeringen. </para>
<para>For at flytte objekter må du først <link linkend="selecting-objects">vælge</link> dem. </para>
<para>Når de objekter du ønsker at flytte er blevet valgt, kan du begynde at flytte dem ved at <mousebutton>venstre</mousebutton>-klikke og trække en af dem. Når du er færdig så giv blot slip på &LMB;. </para>
<note><para>For visse typer objekter (især når de er defineret ved komplicerede lokuser), kan det være langsom at flytte dem hvis computeren er langsom. Dette er uheldigt, men uundgåelig givet de involverede beregninger. </para></note> <note><para>Hvis du <mousebutton>højre</mousebutton>klikker på et af de markerede objekter, og vælger <guimenuitem>Flyt</guimenuitem>, vil flytning af musen flytte objektet. Når objektet er flyttet til den ønskede position, vil et <mousebutton>venstre</mousebutton>klik standse flytningen af objektet.</para></note>
<para><mousebutton>Højre</mousebutton>-klik på et af objekterne, og vælg <guimenuitem>Slet</guimenuitem> i den <link linkend="objects-context-menus">sammenhængsmenu</link> der kommer frem. </para>
<para>I &kig;, kan objekter være skjulte. Dette gøres ved at vælge objekterne, klikke med &RMB; et af dem, og vælge <guimenuitem>Skjul</guimenuitem> i <link linkend="objects-context-menus">sammenhængsmenuen</link> der kommer frem. </para>
<para>For ikke længere at skjule objekterne bruges <menuchoice><guimenu>Redigér</guimenu><guimenuitem>Skjul intet</guimenuitem></menuchoice>. Dette vil gøre at ingen objekter længere vil være skjult. </para>
<para>Nattesyn er en særlig måde at arbejde med skjulte objekt. Når du vil flytte eller ændre noget i et eller flere objekter uden at vis alle skjulte objekter du har, kan nattesynstilstand være til nytte for dig. </para>
<para>Egentlig lader det dig se de skjulte objekter som om de var synlige, så du kan behandle dem som du ville normalt. I nattesynstilstand er de skjulte objekter synlige med en grå farve. </para>
<para>For at ændre nattesynstilstand, bruges <menuchoice><guimenu>Opsætning</guimenu> <guimenuitem>brug infrarøde briller</guimenuitem></menuchoice>. </para>
<para>I &kig;, kan du fortryde næsten enhver ændring du laver på dokumentet. Brug blot <guiicon>fortryd</guiicon>/<guiicon>annullér fortryd</guiicon> knapperne i værktøjslinjen er passende genveje. </para>
<para>&kig; har også en fuldskærmstilstand. For at bruge den klikkes på en passende knap i værktøjslinjen eller <menuchoice><guimenu>Opsætning</guimenu><guimenuitem>Fuldskærm</guimenuitem></menuchoice> vælges. </para>
<para>For at forlade fuldskærmstilstand klikkes med &RMB;på skærmen et sted hvor der ikke er noget objekt til stede og <guimenuitem>Gå ud af fuldskærmstilstand</guimenuitem> vælges, eller der trykkes på &Esc;-tasten. </para>
<para>&kig; understøtter et temmelig stort antal objekttyper. Bemærk venligst at ikke alle de tilgængelige objekttyper er vist i værktøjslinjerne: der er nogle objekter som du kun kan konstruere via <guimenu>Objekter</guimenu>-menuen i menulinjen. Naturligvis er, som med alle &kde;'s programmer, indholdet af værktøjslinjerne indstilleligt. Prøv <menuchoice><guimenu>Opsætning</guimenu> <guimenuitem>Indstil værktøjslinjer...</guimenuitem></menuchoice> hvis du ønsker at gøre dette. </para>
<para>&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å. </para>
<para><mousebutton>Højre</mousebutton>-klik 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. </para>
<para>En af de mere avancerede egenskaber i &kig; er dets støtte for makroer. Dette tillader dig at definere nye typer af objekter ud fra dem der allerede er defineret. </para>
<para>For eksempel: Lad os antage du ønsker at lave en makro til at konstruere en cirkel ud fra tre punkter på den> Du vil så indgive tre punkter, derpå konstruere nogle vinkelrette linjer og midtpunkter indtil du finder centrum. Nu kan du bruge den eksisterende kommando <quote>Konstruér en cirkel ved centrum og et punkt</quote> (ved brug af et af de tre punkter som punktet for denne kommando).Følgende billede skulle gøre dette en smulemere klart. </para>
<para>Dernæst kommer at definere makroen. Vælg <guimenuitem>Ny makro</guimenuitem> fra <guimenu>Type</guimenu>-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å <guibutton>Næste</guibutton>-knappen for at fortsætte. Endelig vælges de sidste objekter (kun cirklen i vort eksempel). </para>
<para>Efter de tidligere skridt er færdige, klik på <guibutton>Næste</guibutton>-knappen for at fortsætte. Indtast et navn og hvis du vil en beskrivelse for din nye type, og klik på <guibutton>Færdig</guibutton>-knappen. Din makrotype er nu færdig. </para>
<para>For at bruge den nye makrotype, klik på dens knap på værktøjslinjen eller brug <guimenu>Objekter</guimenu>-menuen. Konstruktion af et makro-objekt er helt ligesom at konstruere et vilkårligt andet objekt. </para>
<para>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 <menuchoice><guimenu>Typer</guimenu><guimenuitem>Håndtér typer...</guimenuitem></menuchoice> fra 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. </para>
<para>&kig; tillader dig at tilføje tekst-etiketter til en konstruktion. Det er meget nyttigt til at tilføje navne, forklaringer eller anden tekst i konstruktioner. &kig; kan også vise variabel information om objekter (også kendt som <quote>egeneskaber</quote>). </para>
<para>For at starte konstruktionen af en tekst-etikette, tryk blot på <guibutton>Tekst-etikette</guibutton>-knappen i &kig;'s værktøjslinje eller vælg <menuchoice><guimenu>Objekter</guimenu><guisubmenu>Andet </guisubmenu><guimenuitem>Tekst-etikette</guimenuitem> </menuchoice> i menulinjen. </para>
<para>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 <quote>knytte</quote> etiketten til et objekt. </para>
<para>Efter du har valgt hvor etiketten skal være, kommer tekst-etikette dialogen frem. Her kan du skrive den tekst du ønsker skal vises i den nye etikette, og klikke på <guibutton>Færdig</guibutton>. Etiketten skulle nu være tilstede i dit dokument. </para>
<para>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 med teksten <quote>Dette linjestykke er %1 enheder langt...</quote> hvor <token>%1</token> bliver erstattet dynamisk med længden af et bestemt linjestykke). </para>
<para>For at gøre dette indtastes en tekst med et antal pladsholdere ( <token>%1</token>, <token>%2</token> &etc;) i sig. Tryk så på <guibutton>Næste</guibutton>-knappen for at fortsætte. Hvis du ønsker at ændre teksten eller variablerne senere kan du gå tilbage ved brug af <guibutton>Tilbage</guibutton>-knappen. </para>
<para>Guiden viser nu teksten du skrev med alle pladsholdere erstattet med noget i retning af <guilabel>argument 1</guilabel>. Valg af egenskaben forbundet med et bestemt argument gøres ved først at klikke på argumentet det drejer sig om. Derpå klikkes på objektet du behøver som har denne egenskab, og så vælges selve egenskaben i popop-menuen der kommer frem. For eksempel, i eksemplet ovenfor, ville du klikke på <guilabel>argument 1</guilabel>, klikke på det rigtige linjestykke i &kig;'s hovedvindue og så vælge egenskaben <guilabel>Længde</guilabel>. 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å <guibutton>Færdig</guibutton>-knappen for at færdiggøre konstruktionen af tekstetiketten. </para>
<para>&kig; understøtter brugen af lokuser. Et lokus er matematisk defineret som mængden af alle punkter eller linjer der tilfredsstiller eller er bestemt af bestemte betingelser; som i <quote>lokus af punkter med samme afstand fra et givet punkt er en cirkel</quote>. Lad os kigge på et eksempel på hvordan lokusser bruges i &kig;. </para>
<para>Betragt følgende geometriske konstruktion: Vi tegner en cirkel, og et punkt der kun kan bevæge sig langs 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. </para>
<para>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 ville holde 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. Stien det andet punkt gennemløber mens det første bevæger sig gennem cirklen er dets lokus. </para>
<para>Rent faktisk at konstruere et lokus for et punkt er meget nemt. Klik på <guiicon>lokus</guiicon>knappen i værktøjslinjen eller vælg <menuchoice><guimenu>Objekter</guimenu> <guisubmenu>Andet</guisubmenu> <guimenuitem>Lokus</guimenuitem> </menuchoice> fra menulinjen. Vælg så det begrænsede punkt som det bevægende punkt (tekst <guilabel>Bevægende punkt</guilabel> vil komme frem når du har musen over det), og det andet punkt som det afhængige punkt. Så vil lokus for det afhængige punkt blive tegnet. </para>
<para>&kig; tillader dig 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 en lignende funktionalitet (<acronym>GNOME</acronym>-programmet &drgeo; ). </para>
<para>Python scripter i &kig; tillader dig basalt set at have din egen måde at lave 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. </para>
<para>Antag du ikke kendte til &kig;'s indbyggede type <quote>Midterpunkt</quote>, og du ønskede at vise midtpunktet for to givne punkter. Du ville så klikke på <guibutton>Python-script</guibutton> knappen i værktøjslinjen eller vælg <menuchoice><guimenu>Objekter</guimenu><guisubmenu>Andet</guisubmenu> <guimenuitem>Script objekt</guimenuitem></menuchoice> fra menulinjen. Du bliver så præsenteret for en guide der lader dig fortsætte. </para>
<para>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å <guibutton>Næste</guibutton> for at fortsætte. </para>
<para>Nu bliver du præsenteret for en tekst-redigeringsfelt 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 <function>calc</function>. Det er derfor nødvendigt at adlyde Python-reglerne for at definere funktioner. For eksempel skal hver linje i funktionen starte med en <keysym>Tab</keysym>. Den første linje der ikke starter med en <keysym>Tab</keysym> afslutter definitionen af funktionen. </para>
<para>Python-funktionen vi ønsker at definere hedder <function>calc</function>, og i vores tilfælde accepterer den to argumenter. Disse er de objekter du har valgt som argumenter på den forrige skærm. Du vil have brug for så mange argumenter som du har valgt der. De hedder <parameter>arg1</parameter> og <parameter>arg2</parameter>, men du kan ændre deres navne til noget mere betydningsfuldt hvis du vil. </para>
<para>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 defineres. I vores tilfælde er det et <classname>Punkt</classname>-objekt. De to argumenter er også <classname>Punkt</classname>-objekter, og vi kan bruge <function>Point.coordinate()</function> funktionen til at definere koordinaterne for de to givne punkter. </para>
<para>Den nødvendig beregning i vores eksempel er meget enkel, vi lægger simpelthen de to sæt koordinater sammen, og dividerer resultatet med to. Vi konstruerer så et nyt punkt ved brug af resultatet. Den Python-kode der bruges er:</para>
<para>Hvis du nu klikker på <guibutton>Færdig</guibutton>-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. Meget mere interessante objekter kan bygges på denne måde: du opfordres til at forsøge dig frem. </para>
<para>Alle objekter i &kig; kan bruges i Python-koden. Som vi har set ovenfor er punkter af <classname>Punkt</classname>-klasse, og du kan bruge ⪚ <function>Point.coordinate()</function> metoden. Du kan også returnere alle andre slags objekter, ikke kun <classname>Punkter</classname>. Mange flere klasser og metoder er tilgængelige i &kig;'s Python-kode, og en mere fuldstændig reference findes <ulink url="http://edu.kde.org/kig/manual/scripting-api/index.html">på &kig;'s hjemmeside</ulink>. </para>
<para>&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. </para>
<para>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å <email>toscano.pino@tiscali.it</email>. </para>
<para>&kig; er et KPart-program, hvilket betyder at du kan indlejre det i andre &kde;-programmer. Hvis du åbner en <literal role="extension">.kig</literal>-fil i &konqueror;, kan den åbnes direkte i &konqueror;-skærmen uden at behøve at starte et eksternt program. </para>
<para>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. </para>
<para>&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 og indlæst ved opstart, så de går ikke tabt ved afslutning. Du kan håndtere disse objekter i dialogen <guilabel>Håndtér typer</guilabel> (se <xref linkend="working-with-types"/>. Du kan eksportere dem til filer, importere dem fra filer, og slette dem. </para>
<para>&kig; tillader dig at eksportere en &kig;-fil til nogle interessante formater, såsom billeder og <application>XFig</application>- og <application>LaTeX</application>-filer, og <acronym>SVG</acronym> vektorbilleder . Dette er ret nyttigt da ikke alle programmer understøtter &kig;'s filformat endnu. </para>
<para>&kig; prøver på at være kompatibel med sine konkurrenter. Det er derfor den understøtter &kgeo;'s filformat, &kseg;'s filformat og delvis støtter &drgeo;- og &cabri;-formaterne, med støtte for andre formater også planlagt. </para>
<para>&kig; er <ulink url="http://www.gnu.org/philosophy/philosophy.html#AboutFreeSoftware"> Free Software</ulink>. 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. </para>
<para>I dette kapitel vil jeg 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å <email>toscano.pino@tiscali.it</email>, så jeg kan inkludere dem i den næste udgave så andre kan nyde dem. Bemærk venligst at jeg personligt ikke har nogen finansiel interesse i dette projekt overhovedet. </para>
<para>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 <filename>COPYING</filename>-filen i &kig;'s kildetræ eller <guilabel>license</guilabel>-fanebladet i <guilabel>Om Kig</guilabel>-dialogen. </para>
<para>Ethvert bidrag er velkomment. Hvis du ikke kan lide ikonerne, 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 <acronym>GPL</acronym> du kan finde betingelserne i denne license i <filename>COPYING</filename>-filen i &kig;'s kildetræ, og i <link linkend="credits">Medvirkende og licens</link> kapitlet i denne manual. </para>