1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
|
<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN"
"dtd/kdex.dtd" [
<!ENTITY kseg "<application>KSeg</application>">
<!ENTITY cabri "<application>Cabri</application>">
<!ENTITY drgeo "<application>Dr.Geo</application>">
<!ENTITY package "tdeedu">
<!ENTITY kappname "&kig;">
<!ENTITY % addindex "IGNORE">
<!ENTITY % Swedish "INCLUDE">
<!-- change language only here -->
]>
<book lang="&language;">
<bookinfo>
<title>Handbok &kig;</title>
<authorgroup>
<author><firstname>Dominique</firstname> <surname>Devriese</surname> <affiliation> <address><email>[email protected]</email></address>
</affiliation>
</author>
<othercredit role="translator"><firstname>Stefan</firstname><surname>Asserhäll</surname><affiliation><address><email>[email protected]</email></address></affiliation><contrib>Översättare</contrib></othercredit>
</authorgroup>
<copyright>
<year>2002</year><year>2003</year><year>2004</year> <holder>Dominique Devriese</holder>
</copyright>
<legalnotice>&FDLNotice;</legalnotice>
<date>2005-08-20</date> <releaseinfo>0.10.5</releaseinfo>
<abstract>
<para>&kig; är ett &kde;-program för interaktiv geometri. </para>
</abstract>
<keywordset>
<keyword>KDE</keyword>
<keyword>KDE utbildning</keyword>
<keyword>Kig</keyword>
<keyword>Interaktiv geometri</keyword>
<keyword>Kgeo</keyword>
<keyword>Cabri</keyword>
<keyword>Dr. Geo</keyword>
<keyword>Kseg</keyword>
</keywordset>
</bookinfo>
<chapter id="introduction">
<title>Inledning</title>
<para>&kig; är ett program för interaktiv geometri. Det är avsett att tjäna två syften: </para>
<itemizedlist>
<listitem><para>Låta studenter utforska matematiska figurer och koncept med datorn. </para></listitem>
<listitem><para>Fungera som ett verktyg för att rita matematiska figurer och infoga dem i andra dokument, med resultatet direkt synligt.</para></listitem>
</itemizedlist>
<para>Du kan rapportera problem med &kig; med det interna felrapporteringsverktyget (<menuchoice><guimenu>Hjälp</guimenu><guimenuitem>Rapportera fel</guimenuitem></menuchoice>), eller kontakta mig på <email>[email protected]</email>. </para>
<para>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å <email>[email protected]</email>, så att jag kan lägga till det i distributionen (om du gör det, licensieras det med &kig;s licens, <ulink url="http://www.gnu.org/licenses/licenses.html#GPL">GPL</ulink>, så att andra kan använda och ändra det fritt). </para>
</chapter>
<chapter id="using-kig-basic">
<title>Grundläggande användning</title>
<section id="constructing-objects">
<title>Konstruera objekt</title>
<section id="constructing-points">
<title>Konstruera punkter</title>
<para>Du kan skapa punkter på flera olika sätt:</para>
<itemizedlist>
<listitem>
<para>Välj <menuchoice><guimenu>Objekt</guimenu> <guisubmenu>Punkter</guisubmenu> <guimenuitem>Punkter</guimenuitem></menuchoice> 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.</para> <note><para>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.</para></note>
</listitem>
<listitem>
<para>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 <mousebutton>mitten</mousebutton>knapp, utan att behöva gå till en meny eller knapp. </para>
</listitem>
<listitem>
<para>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 <xref linkend="constructing-other-objects"/>. </para>
</listitem>
</itemizedlist>
<screenshot>
<screeninfo>En punkt har konstruerats</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_a_point.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>En punkt har konstruerats</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="constructing-other-objects">
<title>Konstruera andra objekt</title>
<para>Att skapa andra objekt än punkter görs oftast genom att välja lämpligt alternativ i menyn <guimenu>Objekt</guimenu>, eller genom att klicka på en av knapparna i verktygsraden. </para>
<screenshot>
<screeninfo>Konstruera en cirkel</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Konstruera en cirkel</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>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. </para>
<para>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 <mousebutton>vänster</mousebutton> musknapp. </para>
<para>Du kan alltid avbryta konstruktionen av det nya objektet genom att trycka på knappen <keycap>Esc</keycap>, eller genom att klicka på stoppknappen (den röda åttakantiga symbolen med ett kryss) i verktygsraden. </para>
<screenshot>
<screeninfo>Konstruera en cirkel</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle_2.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Konstruera en cirkel</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
</section>
<section id="selecting-objects">
<title>Markera objekt</title>
<para>Att markera objekt kan göras på två sätt: </para>
<itemizedlist>
<listitem>
<para>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. </para>
</listitem>
<listitem>
<para>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. </para>
</listitem>
</itemizedlist>
<para>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. </para>
<screenshot>
<screeninfo>Markera objekt</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="selecting_objects.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Markera objekt</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="moving-objects">
<title>Flytta objekt</title>
<para>För att flytta objekt, måste du först <link linkend="selecting-objects">markera</link> dem. </para>
<para>När objekten som du vill flytta är markerade, kan du börja flytta dem genom att <mousebutton>vänster</mousebutton>klicka och dra vilket som helst av dem. När du är klar, släpp helt enkelt upp vänster musknappen. </para>
<note><para>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. </para></note> <note><para>Om du <mousebutton>höger</mousebutton>klickar på ett av de markerade objekten, och väljer <menuchoice><guimenuitem>Flytta</guimenuitem></menuchoice>, flyttas objektet när musen rörs. När objektet har flyttats till önskad position, avslutas förflyttningen med ytterligare ett klick med <mousebutton>vänster</mousebutton> musknapp.</para></note>
</section>
<section id="deleting-objects">
<title>Ta bort objekt</title>
<para>Att ta bort objekt görs genom att först <link linkend="selecting-objects">markera</link> dem, och därefter göra något av det följande: <itemizedlist>
<listitem>
<para>Trycka på tangenten <keycap>Delete</keycap>. </para>
</listitem>
<listitem>
<para>Trycka på knappen för att ta bort i verktygsraden. </para>
</listitem>
<listitem>
<para><mousebutton>Höger</mousebutton>klicka på ett av objekten, och välja <guimenuitem>Ta bort</guimenuitem> i den <link linkend="objects-context-menus">sammanhangsberoende menyn</link> som visas. </para>
</listitem>
</itemizedlist>
</para>
</section>
<section id="showing-hiding-objects">
<title>Visa och dölja objekt</title>
<para>I &kig; kan objekt döljas. Det görs genom att markera objekten, <mousebutton>höger</mousebutton>klicka på ett av dem, och välja <guimenuitem>Dölj</guimenuitem> i den <link linkend="objects-context-menus">sammanhangsberoende menyn</link> som visas. </para>
<para>För att visa objekt igen, använd <menuchoice><guimenu>Redigera</guimenu> <guimenuitem>Visa allt</guimenuitem></menuchoice>. Det visar alla objekt som för närvarande är dolda. </para>
<section id="night-vision">
<title>Nattsyn</title>
<para>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. </para>
<para>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. </para>
<para>För att ändra nattsynsläget, använd <menuchoice><guimenu>Inställningar</guimenu> <guimenuitem>Använd infraröda glasögon</guimenuitem></menuchoice>. </para>
</section>
</section>
<section id="undo-redo">
<title>Ångra/gör om</title>
<para>I &kig; kan du ångra nästan alla ändringar du gör i dokumentet. Använd bara knapparna <guiicon>ånga</guiicon>/<guiicon>gör</guiicon> om i verktygsraden, eller motsvarande snabbtangenter. </para>
</section>
<section id="full-screen-mode">
<title>Fullskärmsläge</title>
<para>&kig; har också ett fullskärmsläge. Klicka på motsvarande knapp i verktygsraden för att använda det, eller välj <menuchoice><guimenu>Inställningar</guimenu><guimenuitem>Fullskärmsläge</guimenuitem></menuchoice>. </para>
<para>För att lämna fullskärmsläge, <mousebutton>höger</mousebutton>klicka på skärmen på en plats där det inte finns något objekt, och välj <menuchoice><guimenuitem>Avsluta fullskärmsläge</guimenuitem></menuchoice>, eller tryck på knappen <keycap>Esc</keycap>. </para>
</section>
</chapter>
<chapter id="kig-object-types">
<title>Objekttyper i &kig;</title>
<para>&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 <guimenu>Objekt</guimenu> i menyraden. Som med alla &kde;-program, är förstås det som visas i verktygsraderna anpassningsbart. Prova alternativet <menuchoice><guimenu>Inställningar</guimenu> <guimenuitem>Anpassa verktygsrader...</guimenuitem></menuchoice> om du vill göra det. </para>
</chapter>
<chapter id="using-advanced">
<title>Avancerad användning</title>
<section id="objects-context-menus">
<title>Sammanhangsberoende menyer</title>
<para>&kig; har sammanhangsberoende menyer för objekt. Försök att <mousebutton>höger</mousebutton>klicka 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å. </para>
</section>
<section id="document-context-menus">
<title>Sammanhangsberoende dokumentmenyer</title>
<para>Genom att <mousebutton>höger</mousebutton>klicka 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. </para>
</section>
<section id="defining-macros">
<title>Definiera makron</title>
<para>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. </para>
<para>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 <quote>Skapa en cirkel med centrum och punkt</quote> (genom att använda en av de tre punkterna för kommandot). Följande bild bör klargöra det hela. </para>
<screenshot>
<screeninfo>Prova att köra makron</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="test_run_macro.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Prova att köra makron</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Därefter kommer definitionen av makrot. Välj <guimenuitem>Nytt makro</guimenuitem> i menyn <guimenu>Typer</guimenu>, 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 <guibutton>Nästa</guibutton> för att fortsätta. Markera därefter till sist slutobjekten (bara cirkeln i vårt exempel). </para>
<screenshot>
<screeninfo>Makroguiden</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macro_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Makroguiden</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Efter föregående steg är färdiga, klicka på knappen <guibutton>Nästa</guibutton> för att fortsätta. Skriv in ett namn, och en valfri beskrivning för den nya typen, och klicka på knappen <guibutton>Slutför</guibutton>. Den nya makrotypen är nu klar. </para>
<para>För att använda den nya makrotypen, klicka på dess knapp i verktygsraden eller använd menyn <guimenu>Objekt</guimenu>. Du kan skapa ett makroobjekt precis som vilket annat objekt som helst. </para>
<screenshot>
<screeninfo>Använda den nya typen</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macros_at_work.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Använda den nya typen</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="working-with-types">
<title>Arbeta med typer</title>
<para>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 <menuchoice><guimenu>Typer</guimenu> <guimenuitem>Hantera typer...</guimenuitem></menuchoice>, 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. </para>
<screenshot>
<screeninfo>Dialogruta för att redigera typer</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="edit_types_dialog.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Dialogrutan för att redigera typer</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="text-labels">
<title>Textetiketter</title>
<para>&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 <quote>egenskaper</quote>). </para>
<para>För att börja skapa en textetikett, tryck helt enkelt på knappen <guibutton>Textetikett</guibutton> i &kig;s verktygsrad, eller välj <menuchoice><guimenu>Objekt</guimenu> <guisubmenu>Övrigt</guisubmenu> <guimenuitem>Textetikett</guimenuitem></menuchoice> i menyraden. </para>
<para>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 <quote>ansluta</quote> etiketten till ett objekt. </para>
<screenshot>
<screeninfo>Ansluta en etikett till en cirkel...</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_attaching.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Ansluta en etikett till en cirkel...</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>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å <guibutton>Slutför</guibutton>. Etiketten ska nu synas i dokumentet. </para>
<screenshot>
<screeninfo>Dialogruta för textetikett</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Dialogruta för textetikett</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>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 <quote>Det här segmentet är %1 enheter långt.</quote>, där <token>%1</token> skulle dynamiskt ersättas av längden av ett särskilt segment). </para>
<para>För att göra det, skriv in en text med ett antal platsmarkörer (<token>%1</token>, <token>%2</token> etc.). Tryck därefter på knappen <guibutton>Nästa</guibutton> för att fortsätta. Om du vill ändra texten eller variablerna senare, kan du alltid gå tillbaka med knappen <guibutton>Tillbaka</guibutton>. </para>
<para>Guiden visar nu texten som du skrev in med alla platsmarkörerna ersatta med något i stil med <guilabel>argument 1</guilabel>. 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å <guilabel>argument 1</guilabel>, klicka på rätt segment i &kig;s huvudfönster, och välja egenskapen <guilabel>Längd</guilabel>. 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 <guibutton>Slutför</guibutton>, för att avsluta konstruktionen av textetiketten. </para>
<screenshot>
<screeninfo>Välja en egenskap för en varierbar del</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="text_label_wizard__select_property.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Välja en egenskap för en varierbar del</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="locuses">
<title>Lokus</title>
<para>&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 <quote>ett lokus av ekvidistanta punkter från en given punkt är en cirkel</quote>. Härefter visas ett exempel på hur man använder lokus i &kig;. </para>
<para>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 <mousebutton>mitten</mousebutton>knapp. 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. </para>
<screenshot>
<screeninfo>En enkel konstruktion som använder ett lokus</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="simple_locus_construction.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>En enkel konstruktion som använder ett lokus</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>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. </para>
<para>I själva verket är det mycket enkelt att konstruera ett lokus för en punkt. Klicka på knappen <guiicon>Lokus</guiicon> i verktygsraden, eller välj <menuchoice><guimenu>Objekt</guimenu> <guisubmenu>Övrigt</guisubmenu> <guimenuitem>Lokus</guimenuitem></menuchoice> i menyraden. Välj därefter den begränsade punkten som flyttbar punkt (texten <guilabel>Flyttbar punkt</guilabel> visas när du flyttar musen över den), och den andra som beroende punkt. Lokus för den beroende punkten ritas då upp. </para>
</section>
</chapter>
<chapter id="scripting">
<title>Skript</title>
<para>&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 (<acronym>GNOME</acronym>-programmet &drgeo;). </para>
<para>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. </para>
<para>Antag att du inte var medveten om &kig;s inbyggda <quote>mittpunktstyp</quote>, och du ville visa mittpunkten för två givna punkter. Då skulle du klicka på knappen <guibutton>Python-skript</guibutton> i verktygsraden, eller välja <menuchoice><guimenu>Objekt</guimenu> <guisubmenu>Övrigt</guisubmenu> <guimenuitem>Pythonskript</guimenuitem> </menuchoice> i menyraden. Då visas en guide för dig som låter dig gå vidare. </para>
<screenshot>
<screeninfo>Skriptobjektguiden</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Skriptobjektguiden</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>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å <guibutton>Nästa</guibutton> för att gå vidare. </para>
<para>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 <function>calc</function>. 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. </para>
<para>Python-funktionen som vi vill definiera heter <quote>calc</quote>, 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 <parameter>arg1</parameter> och <parameter>arg2</parameter>, men du kan ändra namnen till något meningsfullare om du vill. </para>
<para>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 <function>Point.coordinate()</function> för att definiera de två givna punkternas koordinater. </para>
<para>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:</para>
<programlisting>def calc( a, b ):
m = ( a.coordinate() + b.coordinate() ) / 2;
return Point( m )
</programlisting>
<screenshot>
<screeninfo>Skriva in koden</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard_entering_code.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Skriva in koden för mittpunkten i Skriptobjektguiden.</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Om du nu klickar på knappen <guibutton>Slutför</guibutton>, 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. </para>
<screenshot>
<screeninfo>Konstruerade ett skriptobjekt</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_script_object.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Det nykonstruerade skriptobjektet </phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Alla objekt i Kig kan användas i Python-kod. Som vi såg ovan, har punkter klassen <classname>Point</classname>, och du kan till exempel använda metoden <function>Point.coordinate()</function>. Du kan också returnera alla sorters objekt, inte bara <classname>Point</classname>. Många fler klasser och metoder är tillgängliga i Kigs Python-kod, och en mer fullständig referens om dem tillhandahålls <ulink url="http://edu.kde.org/kig/manual/scripting-api/index.html">på &kig;s webbsida</ulink>. </para>
</chapter>
<chapter id="kig-features">
<title>Funktioner i &kig;</title>
<itemizedlist>
<listitem>
<para>&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. </para>
<para>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å <email>[email protected]</email>. </para>
</listitem>
<listitem>
<para>&kig; är ett Kpart-program, vilket betyder att du kan bädda in det i andra &kde;-program. Om du öppnar en <literal role="extension">kig</literal>-fil i &konqueror;, kan den direkt visas i &konqueror;s fönster utan att behöva starta ett yttre program. </para>
</listitem>
<listitem>
<para>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. </para>
</listitem>
<listitem>
<para>&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 <guilabel>Hantera typer</guilabel> (se <xref linkend="working-with-types"/>). Du kan exportera dem till filer, importera dem från filer, redigera och ta bort dem. </para>
</listitem>
<listitem>
<para>&kig; sparar data med ett enkelt &XML;-format. </para>
</listitem>
<listitem>
<para>&kig; stöder skapande av lokus. </para>
</listitem>
<listitem>
<para>&kig; låter dig exportera en &kig;-fil till några intressanta format, som bilder, <application>Xfig</application>-filer och <application>Latex</application>-filer och <application>SVG</application>-vektorbilder. Det är ganska användbart, eftersom inte alla program ännu stöder &kig;s filformat. </para>
</listitem>
<listitem>
<para>&kig; har ett mycket flexibelt transformeringssystem. </para>
</listitem>
<listitem>
<para>&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. </para>
</listitem>
</itemizedlist>
</chapter>
<chapter id="faq">
<title>Vanliga frågor</title>
&reporting.bugs; &updating.documentation; <para></para>
</chapter>
<chapter id="credits">
<title>Tack till och licens</title>
<para>&kig; </para>
<para>&kig; copyright 2002-2004 Dominique Devriese <email>[email protected]</email> </para>
<para>Dokumentation copyright 2002-2004 Dominique Devriese <email>[email protected]</email>. </para>
<para>Dokumentation copyright 2004-2005 Pino Toscano <email>[email protected]</email>. </para>
<para>Granskad av &Philip.Rodrigues; &Philip.Rodrigues.mail;. </para>
<para>Stefan Asserhäll <email>[email protected]</email></para> &underFDL; &underGPL; </chapter>
<appendix id="installation">
<title>Installation</title>
<sect1 id="getting-kig">
<title>Hur man skaffar &kig;</title>
&install.intro.documentation; </sect1>
<sect1 id="compilation">
<title>Kompilering och installation</title>
&install.compile.documentation; </sect1>
</appendix>
<appendix id="contributing">
<title>Bidrag</title>
<section id="kig-is-free">
<title>Fri programvara</title>
<para>&kig; är <ulink url="http://www.gnu.org/philosophy/philosophy.html#AboutFreeSoftware">fri programvara</ulink>. 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. </para>
</section>
<section id="contribute-to-kig">
<title>Bidrag</title>
<para>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å <email>[email protected]</email>, 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. </para>
<para>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 <filename>COPYING</filename> i &kig;s källkod, eller under fliken <guilabel>Licens</guilabel> i dialogrutan <guilabel>Om Kig</guilabel>. </para>
</section>
<section id="howto-contribute">
<title>Hur kan jag bidra?</title>
<para>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; <acronym>GPL</acronym>. Du hittar licensvillkoren i filen <filename>COPYING</filename> i &kig;s källkod, och i kapitlet <link linkend="credits">Tack till och licenser</link> i den här handboken. </para>
</section>
</appendix>
&documentation.index;
</book>
|