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 % Spanish "INCLUDE">
<!-- change language only here -->
]>
<book lang="&language;">
<bookinfo>
<title>El manual de &kig;</title>
<authorgroup>
<author><firstname>Dominique</firstname> <surname>Devriese</surname> <affiliation> <address><email>[email protected]</email></address>
</affiliation>
</author>
<othercredit role="translator"> <firstname>Miguel</firstname> <surname>Revilla Rodríguez</surname> <affiliation><address><email>[email protected]</email></address></affiliation> <contrib>Traductor</contrib> </othercredit><othercredit role="translator"> <firstname>Santiago</firstname> <surname>Fernández Sancho</surname> <affiliation><address><email>[email protected]</email></address></affiliation> <contrib>Traductor</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; es una aplicación de geometría interactiva. </para>
</abstract>
<keywordset>
<keyword>KDE</keyword>
<keyword>KDE-Edu</keyword>
<keyword>Kig</keyword>
<keyword>Geometría interactiva</keyword>
<keyword>KGeo</keyword>
<keyword>Cabri</keyword>
<keyword>Dr.Geo</keyword>
<keyword>KSeg</keyword>
</keywordset>
</bookinfo>
<chapter id="introduction">
<title>Introducción</title>
<para>&kig; es una aplicación de geometría interactiva. Intenta servir para dos propósitos: </para>
<itemizedlist>
<listitem><para>Permitir que los estudiantes exploren figuras y conceptos matemáticos por medio del ordenador. </para></listitem>
<listitem><para>Servir como editor visual para dibujar figuras matemáticas e incluirlas en otros documentos.</para></listitem>
</itemizedlist>
<para>Puede informar sobre los problemas que encuentre en &kig; utilizando la herramienta de información de fallos (<menuchoice><guimenu>Ayuda</guimenu><guimenuitem>Informar de fallo</guimenuitem></menuchoice>), o contactar conmigo en <email>[email protected]</email>. </para>
<para>Como &kig; soporta macros y la construcción de locus, es posible definir macros relativamente avanzadas. Si ha creado una macro interesante, que podría resultar útil para otras personas, puede enviármelo por correo a <email>[email protected]</email>, y lo incluiré en la distribución (si lo hace, se licenciará en base a los términos de la licencia de &kig;, la <ulink url="http://www.gnu.org/licenses/licenses.html#GPL">GPL</ulink>, por lo que otros usuarios podrán utilizarlo y adaptarlo libremente). </para>
</chapter>
<chapter id="using-kig-basic">
<title>Uso básico</title>
<section id="constructing-objects">
<title>Construcción de objetos</title>
<section id="constructing-points">
<title>Construcción de puntos</title>
<para>Puede construir puntos de varias formas:</para>
<itemizedlist>
<listitem>
<para>Seleccione <menuchoice><guimenu>Objetos</guimenu> <guisubmenu>Puntos</guisubmenu><guimenuitem>Punto</guimenuitem></menuchoice> o pulse el botón adecuado en la barra de herramientas. Podrá construir un punto pulsando en la posición deseada de la ventana.</para> <note><para>En realidad, esto funciona de la misma forma que la construcción de otros objetos: pulsar en la entrada del menú o botón de la barra de herramientas correspondiente y seleccionar los elementos necesarios para la construcción final del objeto.</para></note>
</listitem>
<listitem>
<para>Como la construcción de puntos es bastante habitual, solo necesitará pulsar en cualquier lugar de la pantalla con el &MMB; para crearlo, sin necesidad de ir al menú o al botón. </para>
</listitem>
<listitem>
<para>Puede construir puntos mientras está construyendo otros objetos en el fondo, seleccionándolos opcionalmente para el objeto que está construyendo. Para obtener más información, consulte <xref linkend="constructing-other-objects"/>. </para>
</listitem>
</itemizedlist>
<screenshot>
<screeninfo>Se ha construido un punto</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_a_point.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Se ha construido un punto</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="constructing-other-objects">
<title>Construcción de otros objetos</title>
<para>Para construir objetos diferentes a los puntos, normalmente hay que seleccionar la entrada apropiada en el menú <guimenu>Objetos</guimenu>, o pulsar en uno de los botones de la barra de herramientas. </para>
<screenshot>
<screeninfo>Construcción de un círculo</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Construcción de un círculo</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Ésto iniciará la construcción de un nuevo objeto del tipo elegido. Todos estos tipos requieren argumentos. Por ejemplo, si selecciona un círculo utilizando el centro y un punto, deberá proporcionar dos puntos: uno para el centro y otro para el punto del círculo. </para>
<para>Estos argumentos también son objetos, que puede seleccionar, solo tiene que pulsar sobre ellos. Cuando mueva el cursor sobre un argumento que desee utilizar para construir un objeto, se mostrará una imagen preliminar con el aspecto final. Para los objetos que requieren puntos como argumentos, puede construir un nuevo punto en la posición actual del cursor pulsando el &LMB;. </para>
<para>Siempre es posible cancelar la construcción de un nuevo objeto pulsando la tecla &Esc; o pulsando el botón <guiicon>Detener</guiicon> (octágono rojo con una «X») sobre la barra de herramientas. </para>
<screenshot>
<screeninfo>Construcción de un círculo.</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructing_a_circle_2.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Construcción de un círculo</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
</section>
<section id="selecting-objects">
<title>Selección de objetos</title>
<para>La selección de objetos puede realizarse de dos maneras: </para>
<itemizedlist>
<listitem>
<para>Un objeto quedará seleccionado si se pulsa sobre él con el ratón, anulando cualquier selección anterior. Si no desea que ocurra esto último, mantenga pulsada la tecla &Ctrl; al realizar la nueva selección. </para>
</listitem>
<listitem>
<para>Es posible seleccionar todos los objetos de una zona pulsando sobre una zona vacía de la pantalla y arrastrando el cursor del ratón para que forme un rectángulo alrededor del área deseada. Salvo que se mantenga pulsada la tecla &Ctrl;, como en el caso anterior también queda anulada cualquier selección previa. </para>
</listitem>
</itemizedlist>
<para>Cuando tenga más de un objeto bajo el ratón, puede decidir con facilidad qué objeto seleccionar o añadir a la selección actual. Pulse con el &LMB;, mientras mantiene pulsada la tecla &Shift;, para que aparezca un menú con todos los objetos bajo el ratón. A continuación podrá seleccionar el objeto que desee. Como se indicó anteriormente, el comportamiento de la tecla &Ctrl; afectará a la selección. </para>
<screenshot>
<screeninfo>Selección de objetos</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="selecting_objects.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Selección de objetos</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="moving-objects">
<title>Mover objetos</title>
<para>Para mover objetos primero hay que <link linkend="selecting-objects">seleccionarlos</link>. </para>
<para>Una vez que haya seleccionado los objetos que desee mover, puede comenzar la operación manteniendo el &LMB; pulsado sobre ellos y arrastrándolos hasta la nueva posición. Cuando termine, basta con que suelte el &LMB;. </para>
<note><para>Para algunos tipos de objetos (especialmente cuando están definidos por locus complicados) puede resultar lento en equipos antiguos. Esto es desgraciadamente, inevitable, dado el número de cálculos necesarios. </para></note> <note><para>Si pulsa sobre uno de los objetos seleccionados con el &RMB;, y selecciona <guimenuitem>Mover</guimenuitem>, al desplazar el ratón moverá el objeto. Cuando el objeto se mueva a la posición deseada, otra pulsación del &LMB; detendrá el movimiento del objeto.</para></note>
</section>
<section id="deleting-objects">
<title>Eliminación de objetos</title>
<para>Para eliminar objetos primero hay que <link linkend="selecting-objects">seleccionarlos</link>, y después realizar una de estas operaciones: <itemizedlist>
<listitem>
<para>Pulsar la tecla <keycap>Suprimir</keycap>. </para>
</listitem>
<listitem>
<para>Pulsar el botón <guiicon>eliminar</guiicon> en la barra de herramientas. </para>
</listitem>
<listitem>
<para>Pulsar con el botón <mousebutton>derecho</mousebutton> del ratón sobre uno de los objetos, y seleccionar <menuchoice><guimenuitem>Eliminar</guimenuitem></menuchoice> en el <link linkend="objects-context-menus">menú contextual</link> que aparece. </para>
</listitem>
</itemizedlist>
</para>
</section>
<section id="showing-hiding-objects">
<title>Mostrar y ocultar objetos</title>
<para>En &kig; es posible ocultar objetos. Esto se hace seleccionando los objetos, pulsando con el botón &RMB; y seleccionando <guimenuitem>Ocultar</guimenuitem> en el <link linkend="objects-context-menus">menú contextual</link> que aparece. </para>
<para>Para volver a mostrar los objetos, utilice <menuchoice><guimenu>Editar</guimenu><guimenuitem>Mostrar todo...</guimenuitem></menuchoice> Ésto mostrará todos los objetos ocultos. </para>
<section id="night-vision">
<title>Visión nocturna</title>
<para>La visión nocturna es una forma particular de trabajar con objetos ocultos. Cuando tenga que mover o cambiar algo en uno o más objetos pero sin mostrar todos los objetos ocultos, la visión nocturna le ayudará. </para>
<para>Básicamente, le permite ver los objetos ocultos como si estuvieran visibles, de forma que pueda manipularlos como lo haría normalmente. En el modo de visión nocturna, los objetos ocultos se harán visibles, pero con un color gris. </para>
<para>Para cambiar el modo de visión nocturna, utilice <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Usar lentes infrarrojos</guimenuitem></menuchoice>. </para>
</section>
</section>
<section id="undo-redo">
<title>Deshacer/Rehacer</title>
<para>En &kig;, puede deshacer casi cualquier cambio que haga en el documento. Solo necesita utilizar los botones <guiicon>deshacer</guiicon>/<guiicon>rehacer</guiicon> en la barra de herramientas, o los accesos rápidos adecuados. </para>
</section>
<section id="full-screen-mode">
<title>Modo de pantalla completa</title>
<para>&kig; también tiene un modo de pantalla completa. Para utilizarlo, pulse el correspondiente botón de la barra de herramientas, o seleccione <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Modo de pantalla completa</guimenuitem></menuchoice>. </para>
<para>Para dejar el modo de pantalla completa, pulse el &RMB; en cualquier lugar de la pantalla en que no haya ningún objeto, y seleccione <guimenuitem>Salir del modo de pantalla completa</guimenuitem>, o pulse la tecla &Esc;. </para>
</section>
</chapter>
<chapter id="kig-object-types">
<title>Tipos de objetos en &kig;</title>
<para>&kig; soporta un gran número de tipos de objetos. Por favor, tenga en cuenta que no todos los tipos de objetos se muestran en las barras de herramientas: existen algunos objetos que solo puede construir a través del menú <guimenu>Objetos</guimenu> de la barra de menú. Por supuesto, como en cualquier aplicación de &kde;, los contenidos de las barras de herramientas son configurables. Pruebe la opción <menuchoice><guimenu>Preferencias</guimenu><guimenuitem>Configurar barras de herramientas...</guimenuitem></menuchoice> si desea realizar ésto. </para>
</chapter>
<chapter id="using-advanced">
<title>Uso avanzado</title>
<section id="objects-context-menus">
<title>Menús contextuales</title>
<para>&kig; tiene menús contextuales para sus objetos. Basta pulsar con el &RMB; sobre uno de ellos para mostrarlo. Existen varias opciones para construir otros objetos, establecer colores, ocultar, mover y eliminar objetos. Algunos objetos tienen sus propias opciones (⪚ es posible redefinir ciertos puntos obligatorios en una línea en la que antes no estaban, &etc;). Estas opciones deberían ser suficientemente intuitivas. </para>
</section>
<section id="document-context-menus">
<title>Menús contextuales del documento</title>
<para>Al pulsar con el botón <mousebutton>derecho</mousebutton> en el documento (&ie;, no sobre un objeto) aparecerá un menú que puede utilizar para comenzar a construir un objeto nuevo, cambiar el sistema de coordenadas utilizado, mostrar objetos ocultos, e incluso aumentar o reducir el documento. </para>
</section>
<section id="defining-macros">
<title>Definición de macros</title>
<para>Una de las características más avanzadas de &kig; es su soporte para macros. Ésto le permite definir nuevos tipos de objetos a partir de otros que ya estén definidos. </para>
<para>Por ejemplo: Suponga que desea realizar un macro para construir un círculo a partir de tres puntos. Debería introducir tres puntos, y a continuación construir algunas perpendiculares y puntos medios para hallar el centro. Ahora podrá utilizar la orden «Circunferencia a partir de tres puntos» (utilizando uno de los puntos como punto para esta orden). La siguiente imagen debería aclarar ésto un poco: </para>
<screenshot>
<screeninfo>Prueba de ejecución de macros</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="test_run_macro.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Prueba de ejecución de macros</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>A continuación deberá definir la macro. Seleccione <guimenuitem>Nuevo macro</guimenuitem> en el menú <guimenu>Tipos</guimenu>, o pulse en el botón de la barra de herramientas. Aparecerá un asistente, indicándole que seleccione los objetos dados. En nuestro ejemplo serán esos tres puntos. Así que seleccione los tres puntos (pulse sobre ellos para seleccionarlos y una segunda vez para quitar la selección) y pulse el botón <guibutton>Siguiente</guibutton> para continuar. Finalmente seleccione los últimos objetos (sólo el círculo en nuestro ejemplo). </para>
<screenshot>
<screeninfo>El asistente para macros</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macro_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>El asistente para macros</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Una vez hecho ésto, pulse el botón <guibutton>Siguiente</guibutton> para continuar. Introduzca un nombre y, opcionalmente, una descripción del nuevo tipo, y pulse el botón <guibutton>Finalizar</guibutton>. Su macro estará terminada. </para>
<para>Para utilizar el nuevo tipo de macro, pulse su botón en la barra de herramientas o selecciónelo en el menú <guimenu>Objetos</guimenu>. Construir un macro objeto es como construir cualquier otro objeto. </para>
<screenshot>
<screeninfo>Uso de su nuevo tipo</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="macros_at_work.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Uso de su nuevo tipo</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="working-with-types">
<title>Trabajo con tipos</title>
<para>Como ha visto en el capítulo anterior, &kig; le permite crear sus propios objetos. &kig; también se asegura de que una vez que haya creado un objeto, se guarde al salir y se cargue en el nuevo inicio del programa. No es necesario que cargue o guarde manualmente las definiciones de macros. Sin embargo, &kig; le permite hacer más cosas con los macros. Si selecciona <menuchoice><guimenu>Tipos</guimenu><guimenuitem>Administrar tipos...</guimenuitem></menuchoice> en el menú, verá un diálogo en el que podrá editar los tipos. Ésto le permite modificar los tipos existentes, eliminar los tipos que no vaya a utilizar más, exportarlos y cargarlos de un archivo. </para>
<screenshot>
<screeninfo>Diálogo de edición de tipos</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="edit_types_dialog.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>El diálogo de edición de tipos</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="text-labels">
<title>Etiquetas de texto</title>
<para>&kig; le permite añadir etiquetas de texto a una construcción. Son muy útiles para mostrar nombres, explicaciones u otro texto en las construcciones. &kig; también puede mostrar información disponible sobre objetos (dicho de otro modo, «propiedades»). </para>
<para>Para construir una etiqueta de texto, basta con que pulse en el botón <guibutton>Etiqueta de texto</guibutton> en la barra de herramientas de &kig; o seleccione <menuchoice><guimenu>Objetos</guimenu><guisubmenu>Otros</guisubmenu><guimenuitem>Etiqueta de texto</guimenuitem> </menuchoice> en la barra de menú. </para>
<para>Lo siguiente que debe hacer es seleccionar una ubicación para la etiqueta de texto. También puede seleccionar una ubicación aleatoria en la pantalla, o decidir «asociar» la etiqueta a un objeto. </para>
<screenshot>
<screeninfo>Asociar una etiqueta a un círculo...</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_attaching.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Asociar una etiqueta a un círculo...</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Después de que haya seleccionado dónde colocar la etiqueta, la etiqueta de texto aparecerá. Aquí, podrá teclear el texto que desee que aparezca en la nueva etiqueta, tras lo cual deberá pulsar <guibutton>Finalizar</guibutton>. Ahora debería ver la etiqueta en su documento. </para>
<screenshot>
<screeninfo>El diálogo de la etiqueta de texto</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="text_label_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>El diálogo de la etiqueta de texto</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>El ejemplo anterior era sencillo, y limitado solo al texto. Sin embargo, también existe soporte para mostrar información variable sobre los objetos en una etiqueta (⪚ puede construir una etiqueta con el texto «Este segmento tiene una longitud de %1 unidades.» donde <token>%1</token> se reemplazará dinámicamente con la longitud del segmento específico). </para>
<para>Para hacerlo, introduzca un texto con un número de ubicadores ( <token>%1</token>, <token>%2</token>, &etc;) integrados. A continuación pulse el botón <guibutton>Siguiente</guibutton> para continuar. Si desea cambiar el texto o las variables posteriormente, puede volver hacia atrás utilizando el botón <guibutton>Atrás</guibutton>. </para>
<para>El asistente mostrará ahora el texto introducido con los ubicadores sustituidos por algo como <guilabel>argumento 1</guilabel>. Para seleccionar la propiedad conectada a un determinado argumento debe pulsar primero sobre el argumento en cuestión. A continuación pulse sobre el objeto que necesite y que tiene esta propiedad, y seleccione la propiedad en el menú que aparezca. En el ejemplo anterior, debería pulsar sobre <guilabel>argumento 1</guilabel>, después sobre el segmento adecuado de la ventana principal de &kig;, y seleccionar la propiedad <guilabel>Longitud</guilabel>. A continuación, puede rellenar el resto de las partes de la variable, o seleccionar otra propiedad de las ya configuradas si desea modificarlas. Cuando esté listo, pulse el botón <guibutton>Finalizar</guibutton> para completar la construcción de la etiqueta de texto. </para>
<screenshot>
<screeninfo>Selección de una propiedad para una variable</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="text_label_wizard__select_property.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Selección de una propiedad para una variable</phrase>
</textobject>
</mediaobject>
</screenshot>
</section>
<section id="locuses">
<title>Locus</title>
<para>&kig; soporta el uso de locus. Un locus se define matemáticamente como el conjunto de todos los puntos o líneas que satisfacen o están determinados por condiciones específicas, como en «el locus de los puntos equidistantes a un punto dado es un círculo». Eche un vistazo a un ejemplo sobre el uso de locus en &kig;: </para>
<para>Considere la siguiente construcción geométrica: Dibujamos un círculo, y un punto que se mueva únicamente a lo largo de su circunferencia (construya este punto situando el cursor en un círculo y pulsando el &MMB;. Si intenta mover el punto resultante, verá que no puede moverse fuera del círculo). A continuación, dibujamos un segmento desde este punto al centro del círculo, y el punto medio de este segmento. </para>
<screenshot>
<screeninfo>Una construcción simple utilizando un locus</screeninfo>
<mediaobject>
<imageobject>
<imagedata
fileref="simple_locus_construction.png"
format="PNG"/>
</imageobject>
<textobject>
<phrase>Una construcción simple utilizando un locus</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Ahora, si se mueve al punto que está contenido en el círculo, verá que el segundo punto se moverá con él. Si mantuviera un lápiz en el segundo punto, y se moviera el primero alrededor del círculo completo, se dibujaría un círculo nuevo, con la mitad de tamaño que el otro. La ruta que el segundo punto seguiría mientras el primero se mueve alrededor del círculo, sería su locus. </para>
<para>En realidad, construir el locus de un punto es muy simple. Pulse el botón <guiicon>locus</guiicon> en la barra de herramientas, o seleccione <menuchoice><guimenu>Objetos</guimenu><guisubmenu>Otros</guisubmenu> <guimenuitem>Locus</guimenuitem> </menuchoice> en la barra de menú. A continuación seleccione el punto contenido como punto en movimiento (aparecerá el texto <guilabel>Punto que se mueve</guilabel> que podrá mover con el cursor), y el otro es el punto dependiente. Entonces se dibujará el locus del punto dependiente. </para>
</section>
</chapter>
<chapter id="scripting">
<title>Script</title>
<para>&kig; permite crear sus propios tipos personalizados en lenguaje Python. Ésta es una característica muy avanzada, y sólo conozco otro programa de geometría interactiva con una funcionalidad similar (el programa &drgeo; de <acronym>GNOME</acronym>). </para>
<para>Los scripts Python en &kig; básicamente le permiten crear sus propios objetos a partir de objetos padre. Por ejemplo, si es profesor de matemáticas, y tiene una extravagante forma de calcular un punto interesante en una cónica, en lugar de liarse con complejas construcciones y macros, puede escribir código en Python para calcular el punto y &kig; se lo mostrará. </para>
<para>Suponga que no sabe que &kig; tiene construído el tipo «Punto medio», y desea mostrar el punto medio de dos puntos dados. Puede pulsar el botón <guibutton>Script de Python</guibutton> en la barra de herramientas, o seleccionar <menuchoice><guimenu>Objetos</guimenu><guisubmenu>Otros</guisubmenu><guimenuitem>Script de Python</guimenuitem></menuchoice> en la barra de menú. Se le presentará un asistente con el que comenzar. </para>
<screenshot>
<screeninfo>El asistente del objeto del script</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>El asistente del objeto del script</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Lo primero que tiene que hacer es seleccionar los argumentos para el objeto del script. En nuestro ejemplo, los dos puntos de los que desea mostrar el punto medio. Selecciónelos en la ventana principal de &kig;, y pulse <guibutton>Siguiente</guibutton> para continuar. </para>
<para>Ahora se mostrará un cuadro de edición de texto en el que podrá introducir el código para su objeto del script. En este lugar estarán situados el código de la plantilla de y algunos comentarios. Es importante estar seguro de que su código es un código Python válido. Aquellos familiarizados con Python sabrán que estamos definiendo una función de Python llamada <function>calc</function>. Es necesario para adherirse a las reglas de Python para la definición de funciones. Por ejemplo, cada línea de la función debería comenzar con un <keysym>Tabulador</keysym>. La primera que no comience con un <keysym>tabulador</keysym> finalizará la definición de la función. </para>
<para>La función de Python que queremos definir se llama <function>calc</function>, y en nuestro caso acepta dos argumentos. Éstos son los objetos seleccionados como argumento en la pantalla anterior. Necesitará tantos argumentos como haya seleccionado. Estos se llamarán <parameter>arg1</parameter> y <parameter>arg2</parameter>, pero puede cambiar sus nombres por otros que tengan un significado. </para>
<para>En la función, puede realizar todos los cálculos que considere necesarios utilizando los dos argumentos si los necesita. Debería devolver el objeto que desee definir. En nuestro caso, este es un objeto <classname>Point</classname> (punto). Los dos argumentos también son objetos <classname>Point</classname>, y podemos utilizar la función <function>Point.coordinate()</function> para definir las coordenadas de los dos puntos dados. </para>
<para>Los cálculos necesarios en nuestro ejemplo son muy simples, añada los dos conjuntos de coordenadas y divida el nuevo conjunto por dos. A continuación construiremos un punto nuevo utilizando el resultado. El código Python necesario es:</para>
<programlisting>def calc( a, b ):
m = ( a.coordinate() + b.coordinate() ) / 2;
return Point( m )
</programlisting>
<screenshot>
<screeninfo>Introducir código</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="script_wizard_entering_code.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>Introducir el código para el punto medio en el asistente del objeto del script.</phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Si pulsa el botón <guibutton>Finalizar</guibutton>, el nuevo objeto aparecerá en el documento de &kig;. Si mueve uno de los puntos, el punto creado se moverá sobre él. Se pueden construir objetos mucho más potentes de esta forma: pruébelos. </para>
<screenshot>
<screeninfo>Construcción de objetos del script</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="constructed_script_object.png" format="PNG"/>
</imageobject>
<textobject>
<phrase>El objeto del script construido nuevamente. </phrase>
</textobject>
</mediaobject>
</screenshot>
<para>Todos los objetos en &kig; pueden utilizarse en el código Python. Como se vió anteriormente, los puntos son de la clase <classname>Punto</classname>, y puede utilizar ⪚ el método <function>Point.coordinate()</function>. También puede devolver cualquier tipo de objeto, no solo uno de la clase <classname>Point</classname>. Existen muchos más métodos y clases disponibles en el código Python de &kig;, y se proporciona una referencia mucho más completa <ulink url="http://edu.kde.org/kig/manual/scripting-api/index.html"> en el sitio web de &kig;</ulink>. </para>
</chapter>
<chapter id="kig-features">
<title>Características de &kig;</title>
<itemizedlist>
<listitem>
<para>&kig; es una aplicación de código abierto. Esto significa que es libre de utilizarse y modificarse de acuerdo a los deseos de cada cual. La distribución de &kig; está sujeta a algunas restricciones, básicamente que todos debemos tener los mismos derechos de utilización de &kig;, incluyendo cualquier modificación que se realice. </para>
<para>Los programas de software libre se desarrollan con un espíritu muy abierto, y sus desarrolladores normalmente responden bien a los comentarios de los usuarios. Por lo tanto, si tiene preguntas, quejas o cualquier comentario sobre &kig;, por favor hágaselo saber al autor en <email>[email protected]</email>. </para>
</listitem>
<listitem>
<para>&kig; es una aplicación KPart, lo que significa que es posible empotrarla en otro programa de &kde;. Si abre un archivo <literal role="extension">.kig</literal> en &konqueror;, es posible que se abra directamente en la pantalla de &konqueror;, en vez de iniciar una aplicación externa. </para>
</listitem>
<listitem>
<para>Trabajar con &kig; debería resultar bastante sencillo. La construcción de objetos es sencilla e interactiva, mostrándose los resultados preliminares, &kig;. El desplazamiento, selección y construcción de todo funcionará como se espera. El soporte de deshacer debería ser muy intuitivo. </para>
</listitem>
<listitem>
<para>&kig; soporta la definición de macros de una manera sencilla. Estos objetos se presentan ante el usuario como objetos normales. Se guardan al salir del programa y se cargan al volver a iniciarlo, de forma que no se pierden al salir. Puede administrar estos objetos en el diálogo del <guilabel>Administrador de tipos</guilabel> (vea <xref linkend="working-with-types"/>). Puede exportarlos a archivos, importarlos desde archivos, editarlos y eliminarlos. </para>
</listitem>
<listitem>
<para>&kig; guarda su información en un formato &XML; completamente legible. </para>
</listitem>
<listitem>
<para>&kig; soporta la construcción de locus. </para>
</listitem>
<listitem>
<para>&kig; le permite exportar un archivo &kig; a algunos formatos interesantes, como imágenes, archivos <application>XFig</application> y <application>LaTeX</application>, e imágenes vectoriales <acronym>SVG</acronym>. Esto resulta bastante útil, ya que no todos los programas soportan, de momento, el formato de &kig;. </para>
</listitem>
<listitem>
<para>&kig; tiene un sistema de transformación muy flexible. </para>
</listitem>
<listitem>
<para>&kig; pretende ser compatible con sus competidores. Por eso soporta el formato de archivo de &kgeo;, el formato de archivo de &kseg;, parcialmente los formatos de &drgeo; y &cabri;, asimismo, se está trabajando en otros formatos. </para>
</listitem>
</itemizedlist>
</chapter>
<chapter id="faq">
<title>Preguntas y respuestas</title>
&reporting.bugs; &updating.documentation; </chapter>
<chapter id="credits">
<title>Créditos y licencia</title>
<para>&kig; </para>
<para>Derechos de autor de &kig;. 2002-2004. Dominique Devriese <email>[email protected]</email>. </para>
<para>Derechos de autor de la documentación. 2002-2004. Dominique Devriese <email>[email protected]</email>. </para>
<para>Derechos de autor de la documentación. 2004-2005. Pino Toscano <email>[email protected]</email>. </para>
<para>Revisado por &Philip.Rodrigues; &Philip.Rodrigues.mail;. </para>
<para>Traducido por Miguel Revilla Rodríguez <email>[email protected]</email> y Santiago Fernández Sancho <email>[email protected]</email>.</para>
&underFDL; &underGPL; </chapter>
<appendix id="installation">
<title>Instalación</title>
<sect1 id="getting-kig">
<title>Cómo obtener &kig;</title>
&install.intro.documentation; </sect1>
<sect1 id="compilation">
<title>Compilación e instalación</title>
&install.compile.documentation; </sect1>
</appendix>
<appendix id="contributing">
<title>Contribuir</title>
<section id="kig-is-free">
<title>Software libre</title>
<para>&kig; es <ulink url="http://www.gnu.org/philosophy/philosophy.html#AboutFreeSoftware">Software libre</ulink>. Eso significa que su código fuente se distribuye libremente y está disponible en Internet, de forma que cualquiera pueda utilizarlo, leerlo, modificarlo y distribuirlo. Yo trabajo en ello como afición, y así he aprendido mucho sobre programación, C++, &kde;/&Qt;, matemáticas, colaboración en software y proyectos de código abierto. </para>
</section>
<section id="contribute-to-kig">
<title>Contribuir</title>
<para>El motivo de este capítulo es aclararle al usuario los derechos que le proporciona la licencia de &kig;. Como en todo el software libre, puede (y se le recomienda) solucionar los problemas que encuentre durante el uso, añadir las opciones que falten, distribuir su programa modificado, y enviármelas a <email>[email protected]</email>, para que pueda incorporarlas a la próxima versión para el disfrute del resto de usuarios. Personalmente no tengo ningún interés económico en este proyecto. </para>
<para>Si tiene dudas sobre sus derechos de uso de este programa, o de los derechos de las personas a utilizar las modificaciones que haga sobre el mismo, &etc; puede leer la licencia. La encontrará en el archivo <filename>COPYING</filename> en el árbol de archivos del código fuente de &kig; o en la pestaña de <guilabel>licencia del diálogo</guilabel> en el diálogo <guilabel>Acerca de Kig</guilabel>. </para>
</section>
<section id="howto-contribute">
<title>¿Cómo contribuir?</title>
<para>Toda ayuda será bienvenida. Si no le gustan los iconos, o piensa que el manual necesita una actualización, o tiene un macro fantástico que desea compartir con el mundo, no dude en ponerse en contacto conmigo. Por favor, tenga en cuenta que toda contribución será distribuida bajo los términos de la licencia &GNU; <acronym>GPL</acronym>, cuyos términos puede encontrar en el el archivo <filename>COPYING</filename> del árbol del código fuente de &kig;, y en el capítulo <link linkend="credits">Créditos y licencias</link> de este manual. </para>
</section>
</appendix>
&documentation.index;
</book>
|