Diferencia entre revisiones de «Referencia:Jython»
m (Revertidos los cambios de LailaTov (disc.) a la última edición de LilianaSaid) |
|||
(No se muestran 21 ediciones intermedias de 4 usuarios) | |||
Línea 1: | Línea 1: | ||
− | == Ventana Python == | + | {{Referencia}}__NOTOC__== Ventana Python == |
− | Pueden observarse al respecto [http://dev.geogebra.org/trac/wiki/Jython estas presuntas alternativas | + | Pueden observarse al respecto [http://dev.geogebra.org/trac/wiki/Jython estas presuntas alternativas en persistente desarrollo] o en este mismo artículo, la sección correspondiente guiones Python y a [https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf ''Phyton para Todos''] para profundizar en ese lenguaje interpretado. |
=== Vista Python === | === Vista Python === | ||
− | Muy recomendable la guía que - en | + | Muy recomendable la guía que - en inglés- desarrolla ampliamente el tema y ofrece [http://luccisun.webfactional.com/sbc/docs/FundamentalsofPythonFromFirstProgramsthroughDataStructures2009_KA_Lambert.pdf descripciones y ejemplos]. |
+ | |||
=== Guiones Python en GeoGebra 4.2 === | === Guiones Python en GeoGebra 4.2 === | ||
La ventana de Python contiene tres paneles: | La ventana de Python contiene tres paneles: | ||
Línea 8: | Línea 9: | ||
Aquí puede introducir expresiones de Python y ver de inmediato su efecto. Con las teclas {{KeyCode|Alt}} + {{KeyCode|Arriba}} / {{KeyCode|Alt}} + {{KeyCode|Abajo}}}} se puede navegar por la historia de comandos ingresados. | Aquí puede introducir expresiones de Python y ver de inmediato su efecto. Con las teclas {{KeyCode|Alt}} + {{KeyCode|Arriba}} / {{KeyCode|Alt}} + {{KeyCode|Abajo}}}} se puede navegar por la historia de comandos ingresados. | ||
* De Guiones | * De Guiones | ||
− | En que se puede escribir la secuencia de comandos a ser ejecutados al cargar el archivo. GGB. También puede ejecutarse el | + | En que se puede escribir la secuencia de comandos a ser ejecutados al cargar el archivo. GGB. También puede ejecutarse el guion - ''script'' - desde aquí, en cualquier momento. |
* De Eventos. Aquí puede seleccionar un objeto y enlazar cualquier ''script'' de GeoGebra en Python de modo que para... | * De Eventos. Aquí puede seleccionar un objeto y enlazar cualquier ''script'' de GeoGebra en Python de modo que para... | ||
** su ejecución basta un ''clic'' sobre el tema | ** su ejecución basta un ''clic'' sobre el tema | ||
** se acceda a editarlo para cambiar su valor. | ** se acceda a editarlo para cambiar su valor. | ||
===== Ejemplo ===== | ===== Ejemplo ===== | ||
− | En un | + | En un guion - ''script'' -, el objeto asociado al evento pueden auto-referenciarse. Para pegar una demostración al respecto en el panel interactivo, basta con copiarla desde la página de la [http://luccisun.webfactional.com/sbc/docs/FundamentalsofPythonFromFirstProgramsthroughDataStructures2009_KA_Lambert.pdf guía de Python en inglés]. |
geo.A = (1,2) | geo.A = (1,2) | ||
# Crear algunos puntos al azar | # Crear algunos puntos al azar | ||
Línea 22: | Línea 23: | ||
# Enlace de todos a A | # Enlace de todos a A | ||
segments = [Segment(p, geo.A) for p in points] | segments = [Segment(p, geo.A) for p in points] | ||
− | # Definir una función para exponer | + | # Definir una función para exponer solo el segmento más cortoa |
def show_shortest(moved_point): | def show_shortest(moved_point): | ||
for s in segments: s.visible = False | for s in segments: s.visible = False | ||
Línea 32: | Línea 33: | ||
=== Nombres en Python y GeoGebra === | === Nombres en Python y GeoGebra === | ||
− | Dado que tanto GeoGebra como Python operan con objetos que tienen nombres, es importante contar con un ágil acceso desde Python GeoGebra sin confundir los de sendos tipos. | + | Dado que tanto GeoGebra como Python operan con objetos que tienen nombres, es importante contar con un ágil acceso desde Python a GeoGebra sin confundir los de sendos tipos. |
Los objetos GeoGebra se pueden referir (y crear) en Python anteponiendo a su nombre el prefijo '''geo''' o $ . Así, si existiera un punto denominado A, exclusivamente se lo debe referir en Python como $A o geo.A. Todos los demás nombres no son accesibles desde Python. | Los objetos GeoGebra se pueden referir (y crear) en Python anteponiendo a su nombre el prefijo '''geo''' o $ . Así, si existiera un punto denominado A, exclusivamente se lo debe referir en Python como $A o geo.A. Todos los demás nombres no son accesibles desde Python. | ||
− | En tanto lo mencionado | + | En tanto lo mencionado solo permite nombres en formato ASCII, puede ser útil, en otros idiomas, una sintaxis para acceder a nombres que excedan el código ASCII. |
{{Example|1=La siguiente escritura devuelve todo objeto GeoGebra llamado A. | {{Example|1=La siguiente escritura devuelve todo objeto GeoGebra llamado A. | ||
Línea 74: | Línea 75: | ||
=== Atributos comunes a todos los elementos === | === Atributos comunes a todos los elementos === | ||
− | Los siguientes atributos no se aplican | + | Los siguientes atributos no se aplican solo a puntos y vectores sino a todos los de objetos de GeoGebra. |
* visible (booleana); | * visible (booleana); | ||
* color (para definirlo, por ejemplo, se utiliza Color.Red o Color(0,5, 0,9, 0,8) (de forma idéntica a java.awt.Color); | * color (para definirlo, por ejemplo, se utiliza Color.Red o Color(0,5, 0,9, 0,8) (de forma idéntica a java.awt.Color); | ||
Línea 83: | Línea 84: | ||
* caption (sub-título, una cadena); | * caption (sub-título, una cadena); | ||
* trace (booleana que si es verdadera, establecer que se deje ''rastro'' o huella). | * trace (booleana que si es verdadera, establecer que se deje ''rastro'' o huella). | ||
− | Este | + | Este guion o ''script'' crea un punto rojo con una leyenda negra que dice "Dar clic aquí" |
* $P = Point(3, 1) ($P es la referencia al punto P) | * $P = Point(3, 1) ($P es la referencia al punto P) | ||
* $P.color = Color.RED | * $P.color = Color.RED | ||
Línea 104: | Línea 105: | ||
Dos objetos especiales, $xAxis y $yAxis que representan los dos ejes de coordenadas, con los que por el momento es limitado lo que puede llevarse adelante, tienen los siguientes atributos | Dos objetos especiales, $xAxis y $yAxis que representan los dos ejes de coordenadas, con los que por el momento es limitado lo que puede llevarse adelante, tienen los siguientes atributos | ||
- visible : permite modificar la visibilidad de un eje. | - visible : permite modificar la visibilidad de un eje. | ||
− | Este '' | + | Este ''guion'' - script - oculta los dos ejes en la Vista Gráfica |
$xAxis.visible = False | $xAxis.visible = False | ||
Línea 111: | Línea 112: | ||
==== Círculos Elipses Hipérbolas Parábolas ==== | ==== Círculos Elipses Hipérbolas Parábolas ==== | ||
− | * Este | + | * Este guion o ''script'' crea cuatro círculos de... |
** - C1 con centro en (1, 1) que pasa por el punto (3, 2) | ** - C1 con centro en (1, 1) que pasa por el punto (3, 2) | ||
** - C2 que pasa por los puntos (0, 0), (4, 0), (4, 3) | ** - C2 que pasa por los puntos (0, 0), (4, 0), (4, 3) | ||
Línea 135: | Línea 136: | ||
Todos los recorridos (rectos y curvos) tiene como atributos... | Todos los recorridos (rectos y curvos) tiene como atributos... | ||
* Grosor (valor numérico); | * Grosor (valor numérico); | ||
− | * Tipo de Trazo (cadena que puede indicar una de las opciones de trazo pleno o de uno de los punteados como el de | + | * Tipo de Trazo (cadena que puede indicar una de las opciones de trazo pleno o de uno de los punteados como el de guion corto, de guion largo, puntos, punto-raya). |
==== Polígonos y Poligonales ==== | ==== Polígonos y Poligonales ==== | ||
Para crear un polígono con vértices A, B y C se puede utilizar: | Para crear un polígono con vértices A, B y C se puede utilizar: | ||
Línea 154: | Línea 155: | ||
=== Listas === | === Listas === | ||
Las listas de GeoGebra no se deben confundir con las listas de Python. Las listas pueden ser creadas de la siguiente manera: | Las listas de GeoGebra no se deben confundir con las listas de Python. Las listas pueden ser creadas de la siguiente manera: | ||
− | + | my_list = List(1, 2, 3) crea una lista GeoGebra ; | |
− | + | python_list = [1, 2, 3] crea una lista Python. | |
− | La notación indicial se puede utilizar para obtener o eliminar un elemento en una posición dada: | + | La notación indicial se puede utilizar para obtener o eliminar un elemento en una posición dada:<hr> |
− | + | print my_list[1] muestra el segundo elemento (el primero tiene índice 0); | |
− | + | del my_list [0], elimina el primer elemento.<hr> | |
Puede añadirse un elemento nuevo al final de una lista mediante el método ''append'': | Puede añadirse un elemento nuevo al final de una lista mediante el método ''append'': | ||
my_list.append(42) | my_list.append(42) | ||
Es posible establecer un bucle o lazo sobre los elementos de una lista: | Es posible establecer un bucle o lazo sobre los elementos de una lista: | ||
− | + | for item in my_list | |
− | + | print item + 10 | |
Se puede convertir una lista GeoGebra en una de Python : | Se puede convertir una lista GeoGebra en una de Python : | ||
python_list = list(my_list) | python_list = list(my_list) | ||
Línea 180: | Línea 181: | ||
Se le puede cambiar el punto de origen con la siguiente declaración: | Se le puede cambiar el punto de origen con la siguiente declaración: | ||
t.orgin = (3, 1) | t.orgin = (3, 1) | ||
− | Pero a diferencia del anterior, en este caso, no se actualizan las coordenadas sino que se crea un | + | Pero a diferencia del anterior, en este caso, no se actualizan las coordenadas sino que se crea un Punto. |
====Origen Dinámico==== | ====Origen Dinámico==== | ||
Para situar el origen del texto ''t'' en el punto '''A''' -de modo que se desplazará cuando '''A''' se mueva-, basta con anotar: | Para situar el origen del texto ''t'' en el punto '''A''' -de modo que se desplazará cuando '''A''' se mueva-, basta con anotar: | ||
t.origin = $ $A | t.origin = $ $A | ||
+ | ===Más sobre LaTeX=== | ||
+ | Para mayores detalles sobre el trabajo con LaTeX conviene consultar | ||
+ | * el correspondiente mensaje del [https://help.geogebra.org/ foro] y el [http://www.tug.org Grupo de usuarias y usuarios de LaTeX] | ||
+ | * la [[Tutorial:Detalles Adicionales de GeoGebra#Sobre LaTeX|introducción a su sintaxis]] | ||
+ | * la sección que ilustra [[Tutorial:Sobre_LaTeX_-medidas_de_fuentes_-_cajas_de_color_y_matemática_-#Tipografía y Colores|cómo seleccionar tipografía y colores]] | ||
+ | * el manejo de tablas y cuadros | ||
+ | * las fórmulas más usuales | ||
+ | * los documentos y textos para profundizar en el tema. | ||
+ | **El [[Tutorial:Sobre_LaTeX_-medidas_de_fuentes_-_cajas_de_color_y_matemática_-|Tutorial sobre LaTeX en GG]] | ||
+ | **El [http://tug.ctan.org/info/short-math-guide/short-math-guide.pdf Mini-Tutorial de LaTeX (Short Math Guide for LATEX)] y el anexo, [https://www.tug.org/TUGboat/tb18-3/tb56down.pdf del mismo autor ] o, en español, de [http://web.fi.uba.ar/~ssantisi/works/ecuaciones_en_latex/ Ecuaciones en LATEX] | ||
+ | **El [[Tutorial:Sobre_LaTeX_-medidas_de_fuentes_-_cajas_de_color_y_matemática_-#Código LaTeX para las fórmulas más comunes|Código-LaTeX para las fórmulas más comunes]] y la sección que explica cómo [[Comentarios:Opciones_(cuadro_de_diálogo)|Exportar archivos GeoGebra a documentos LaTeX]] | ||
+ | <hr> | ||
+ | {{Notes|1=<br><br> | ||
+ | Si bien los comandos más frecuentes de '''''LaTeX''''' en los contextos y textos de matemáticas operan adecuadamente en GeoGebra, para incluir un sub-conjunto más avanzado, en conveniente recurrir a prestaciones externas, adicionales. | ||
+ | }} | ||
==Las Funciones en Ecuaciones e Inecuaciones== | ==Las Funciones en Ecuaciones e Inecuaciones== | ||
Línea 207: | Línea 223: | ||
==Tortugas== | ==Tortugas== | ||
− | Las tortugas son objetos | + | Las tortugas son objetos a desplazar para dibujar ''geométricamente'' en la ventana activa , tal como se puede apreciar en el lenguaje '''Logo'''. |
{{Example|1=Para crear una nueva tortuga, basta con indicar: | {{Example|1=Para crear una nueva tortuga, basta con indicar: | ||
t = Turtle () | t = Turtle () | ||
Línea 229: | Línea 245: | ||
* speed: permite conocer o establecer la velocidad de animación de la tortuga - es un número decimal entre 0 y 1-. 0 significa velocidad instantánea, 0,01 es la más lenta y así, en escala decreciente de velocidad (el valor por omisión es 0,1) | * speed: permite conocer o establecer la velocidad de animación de la tortuga - es un número decimal entre 0 y 1-. 0 significa velocidad instantánea, 0,01 es la más lenta y así, en escala decreciente de velocidad (el valor por omisión es 0,1) | ||
− | + | Operan con los siguientes métodos: | |
clear (): restablece la posición y el ángulo de la tortuga y se borra el dibujo. | clear (): restablece la posición y el ángulo de la tortuga y se borra el dibujo. | ||
Línea 236: | Línea 252: | ||
*turn_right(angle): para ''ordenarle'' girar a la derecha el número de grados del ángulo indicado; | *turn_right(angle): para ''ordenarle'' girar a la derecha el número de grados del ángulo indicado; | ||
*clear(): reinicializa, limpia todo trazo o diseño y ubica al la tortuga en la posición y orientación de partida para realizar trazados. | *clear(): reinicializa, limpia todo trazo o diseño y ubica al la tortuga en la posición y orientación de partida para realizar trazados. | ||
+ | |||
+ | __NOTOC__{{betamanual|version=5.0}}{{command|turtle|category| Comandos_de_Tortuga}} | ||
+ | ===Comandos de Tortuga=== | ||
+ | * [[Manual:Comandos de Tortuga|Tortugas]] | ||
+ | * [[Manual:Comando Tortuga|Tortuga]] | ||
+ | * [[Manual:Comando TortugaAvanza|TortugaAvanza]] | ||
+ | * [[Manual:Comando TortugaRetrocede|TortugaRetrocede]] | ||
+ | *[[Manual:Comando TortugaAbajo|TortugaAbajo]] | ||
+ | *[[Manual:Comando TortugaArriba|TortugaArriba]] | ||
+ | * [[Manual:Comando TortugaDerecha|TortugaDerecha]] | ||
+ | * [[Manual:Comando TortugaIzquierda|TortugaIzquierda]] | ||
+ | {{GGb5|<div> | ||
+ | ;Listado de [[:Categoría:Comandos|Comandos]] de [[Manual:Comando Tortuga|Tortuga]]<br> | ||
+ | Esta categoría de [[:Categoría:Comandos|comandos]] incluye a los siguientes:<br><br>'''[[Manual:Comando Tortuga|Tortuga]]''' | ||
+ | *'''Desplazamientos''': | ||
+ | **[[Manual:Comando TortugaAvanza|TortugaAvanza]] | ||
+ | **[[Manual:Comando TortugaRetrocede|TortugaRetrocede]] | ||
+ | *'''Giro''': | ||
+ | **[[Manual:Comando TortugaDerecha|TortugaDerecha]] | ||
+ | **[[Manual:Comando TortugaIzquierda|TortugaIzquierda]] | ||
+ | *'''Trazos''': | ||
+ | **[[Manual:Comando TortugaAbajo|TortugaAbajo]] | ||
+ | **[[Manual:Comando TortugaArriba|TortugaArriba]]</div>}} | ||
+ | <small> | ||
+ | {{Note|1=La convención tradicional emplea la metáfora de la ''pluma'' o el ''lápiz'' asociado a la '''''tortuga''''' activa en estado tal que al desplazarla deja trazo. Las indicaciones serían equivalentes a ''conpluma'' o ''bajapluma'' para reponer su trazado cuando previamente se hubiera establecido ''sinpluma'' o ''subepluma''.}}</small> | ||
+ | |||
+ | {{OJo|1=Respecto de las referencias, hay que tener en cuenta que si una primera tortuga hubiera sido creada, sería la denominada '''''tortuga1''''' y de allí en adelante, la asignación de nombres continuaría.<br>Cada '''''tortuga''''' aparece en el origen de coordenadas con una orientación de 0° y ''con pluma'' o ''lápiz'' hacia ''abajo'' de modo que al desplazarla deja rastro.}} | ||
+ | |||
+ | {{Idea|1=Es posible emplear el comando [[Comando Coordenadas|Coordenadas]].}} | ||
+ | {{Example|1=<br>'''<code>[[Comando Coordenadas|Coordenadas]]'''('''tortuga1, 2, 3''')'''</code>''' ubica a la ''tortuga1'' en el punto (''2,3'').<br/> Su rumbo inicial no puede modificarse. El desplazamiento provoca el consecuente trazo a menos que se hubiera indicado antes [[Manual:Comando TortugaArriba|TortugaArriba]] sin reponer luego el estado usual vía comando '''TortugaAbajo'''.}} | ||
==Intersecciones== | ==Intersecciones== | ||
− | Intersect(x, y) funciona por ahora, | + | Intersect(x, y) funciona por ahora, solo cuando se trata de trazos de rectas o cónicas. También se puede utilizar para una lista de pares de números, para encontrar los puntos de intersección. |
l = Line((0, 1), (2, 2)) # una recta | l = Line((0, 1), (2, 2)) # una recta | ||
c = Circle((0, 0), 3) # una circunferencia | c = Circle((0, 0), 3) # una circunferencia | ||
Línea 244: | Línea 290: | ||
Para controlar si existe una intersección `p`, puede emplearse `not p.infinite` (o `p.infinite` para probar si la intersección no existe). Vale tener en cuenta que `p.defined` no funciona porque GeoGebra se basa en la geometría proyectiva, en la que dos rectas siempre definen un punto de intersección. | Para controlar si existe una intersección `p`, puede emplearse `not p.infinite` (o `p.infinite` para probar si la intersección no existe). Vale tener en cuenta que `p.defined` no funciona porque GeoGebra se basa en la geometría proyectiva, en la que dos rectas siempre definen un punto de intersección. | ||
− | |||
== Acceso a Objetos Seleccionados== | == Acceso a Objetos Seleccionados== | ||
La selección de objetos permite el acceso a la selección actual: | La selección de objetos permite el acceso a la selección actual: | ||
Línea 255: | Línea 300: | ||
* selection.lines; | * selection.lines; | ||
* selection.segments. | * selection.segments. | ||
− | |||
== Gestión de Eventos == | == Gestión de Eventos == | ||
− | Se puede apelar a la sección de Eventos en la Ventana de Python para seleccionar un objeto y un evento y, a continuación escribir una secuencia de comandos - un | + | Se puede apelar a la sección de Eventos en la Ventana de Python para seleccionar un objeto y un evento y, a continuación escribir una secuencia de comandos - un guion o ''script'' - en el área del editor de texto. En estos casos, el destino del objeto puede hacer referencia a sí mismo. |
Por ejemplo, se puede escribir esta secuencia de comandos en el campo de ''Actualizaciòn'' de un punto: | Por ejemplo, se puede escribir esta secuencia de comandos en el campo de ''Actualizaciòn'' de un punto: | ||
if self.x < 0: | if self.x < 0: | ||
Línea 264: | Línea 308: | ||
self.caption = "positive x" | self.caption = "positive x" | ||
Cuando el rótulo que se elige exponer del punto es el correspondiente al sub-título, se apreciará que se registra la leyenda de los cambios del punto a medida que se lo desplaza de a ambos lados de los ejes de ordenadas. | Cuando el rótulo que se elige exponer del punto es el correspondiente al sub-título, se apreciará que se registra la leyenda de los cambios del punto a medida que se lo desplaza de a ambos lados de los ejes de ordenadas. | ||
− | Desde los guiones (''scripts'') de eventos se tiene acceso a todas las variables definidas en el campo de ''guiones''' (''' ''Script'' ''' en Python) . Sin embargo, si se desea cambiar el valor de una variable, debe ser declarada como global - si no se crea como variable local dentro de la secuencia de comandos (''script'' o | + | Desde los guiones (''scripts'') de eventos se tiene acceso a todas las variables definidas en el campo de ''guiones''' (''' ''Script'' ''' en Python) . Sin embargo, si se desea cambiar el valor de una variable, debe ser declarada como global - si no se crea como variable local dentro de la secuencia de comandos (''script'' o guion) de eventos. |
global score | global score | ||
score += 1 | score += 1 | ||
Línea 277: | Línea 321: | ||
pt.color = Color.BLUE | pt.color = Color.BLUE | ||
geo.A.onclick = paint_blue | geo.A.onclick = paint_blue | ||
− | |||
=== Métodos Especiales === | === Métodos Especiales === | ||
− | |||
* answer = input(<question>) abre una caja de diálogo vacía y devuelve la cadena previa establece el rango de la respuesta; | * answer = input(<question>) abre una caja de diálogo vacía y devuelve la cadena previa establece el rango de la respuesta; | ||
* - answer = input(<question>) abre una caja de diálogo | * - answer = input(<question>) abre una caja de diálogo | ||
Línea 291: | Línea 333: | ||
** - r = 4 | ** - r = 4 | ||
** c: (x - 3)² + (y - 2)² = 16 | ** c: (x - 3)² + (y - 2)² = 16 | ||
+ | ==Módulo Matemático== | ||
+ | Desde el correspondiente módulo de Python (y/o desde sus [https://data-flair.training/blogs/python-libraries/ librerías]), en este caso el de matemática , como ''math.fabs()'', se pueden realizar numerosas operaciones. | ||
+ | <small>como la de math.sqrt(2), o las de math import fabs, math.fabs(-2),math.fabs(5)</small>. | ||
=== Acceso a la API de GeoGebra desde Python === | === Acceso a la API de GeoGebra desde Python === | ||
Para acceder a GgbAPI, basta con anteponer el prefijo de llamada a ggbApplet, (es decir, es la misma sintaxis que JavaScript) | Para acceder a GgbAPI, basta con anteponer el prefijo de llamada a ggbApplet, (es decir, es la misma sintaxis que JavaScript) | ||
* ggbApplet.evalCommand ("x ^ 2 + y ^ 2 = 4") | * ggbApplet.evalCommand ("x ^ 2 + y ^ 2 = 4") | ||
* ggbApplet.startAnimation () | * ggbApplet.startAnimation () | ||
− | |||
[[Categoría:Referencia]] | [[Categoría:Referencia]] |
Revisión actual del 21:43 12 ago 2020
Ventana Python
Pueden observarse al respecto estas presuntas alternativas en persistente desarrollo o en este mismo artículo, la sección correspondiente guiones Python y a Phyton para Todos para profundizar en ese lenguaje interpretado.
Vista Python
Muy recomendable la guía que - en inglés- desarrolla ampliamente el tema y ofrece descripciones y ejemplos.
Guiones Python en GeoGebra 4.2
La ventana de Python contiene tres paneles:
- Interactivo
Aquí puede introducir expresiones de Python y ver de inmediato su efecto. Con las teclas Alt + Arriba / Alt + Abajo}} se puede navegar por la historia de comandos ingresados.
- De Guiones
En que se puede escribir la secuencia de comandos a ser ejecutados al cargar el archivo. GGB. También puede ejecutarse el guion - script - desde aquí, en cualquier momento.
- De Eventos. Aquí puede seleccionar un objeto y enlazar cualquier script de GeoGebra en Python de modo que para...
- su ejecución basta un clic sobre el tema
- se acceda a editarlo para cambiar su valor.
Ejemplo
En un guion - script -, el objeto asociado al evento pueden auto-referenciarse. Para pegar una demostración al respecto en el panel interactivo, basta con copiarla desde la página de la guía de Python en inglés.
geo.A = (1,2) # Crear algunos puntos al azar import random xcoords = [random.uniform(-2, 5) for i in range(8)] ycoords = [random.uniform(-2, 5) for i in range(8)] points = [Point(x, y) for x, y in zip(xcoords, ycoords)] # Enlace de todos a A segments = [Segment(p, geo.A) for p in points] # Definir una función para exponer solo el segmento más cortoa def show_shortest(moved_point): for s in segments: s.visible = False shortest = min(segments, key=float) shortest.visible = True # La llamada cada vez que A es modificada geo.A.onupdate = show_shortest # Ahora, ¡a desplazar A en la Vista Gráfica!
Nombres en Python y GeoGebra
Dado que tanto GeoGebra como Python operan con objetos que tienen nombres, es importante contar con un ágil acceso desde Python a GeoGebra sin confundir los de sendos tipos. Los objetos GeoGebra se pueden referir (y crear) en Python anteponiendo a su nombre el prefijo geo o $ . Así, si existiera un punto denominado A, exclusivamente se lo debe referir en Python como $A o geo.A. Todos los demás nombres no son accesibles desde Python. En tanto lo mencionado solo permite nombres en formato ASCII, puede ser útil, en otros idiomas, una sintaxis para acceder a nombres que excedan el código ASCII. {{Example|1=La siguiente escritura devuelve todo objeto GeoGebra llamado A.
$ A geo.A $ ['A'] También hay una sintaxis para modificar las celdas de una hoja de cálculo: $ ['B', 2] = 12 # Asigna el valor 12 a B2 $ [3, 1] = 42 # Asigna el valor 42 a C1 (A = 1, B = 2, ...) $ ["A", 1] = (2, 2) # Asignar el punto (2, 2) a A1 $ ["A", 1]. Color = # Color.RED # Cambia el color del punto.
Puntos y Vectores
- Se pueden crear puntos y vectores por sus coordenadas
$A = Point(1, 2) $B = Point(-2, 3) $u = Vector(1, -1)
- Incluso, crear un punto a partir de un vector...
- $C = Point($u)
Viceversa, un vector a partir de un punto...
- $r_A = Vector($A)
O con dos puntos...
- $v = Vector($A, $B)
Entre Puntos y Vectores
Si A es un punto o un vector...
- $A.x da por resultado su abscisa ($A.x)
- $A.y su ordenada ($A.y)
- $A.coords su par de coordenadas ($A.coords)
Resultados Dinámicos
El resultado no es un número sino como una expresión cuyo valor se actualiza dinámicamente cuando el punto o el vector se desplazan.
- Para obtener el valor actual, se debe apelar a A.x.value y a A.y.value. - valores de Ax y de Ay respectivamente-, atributos que también permiten asignar coordenadas a un punto y/o a un vector
- $A.x = 3 ($A.x es la abscisa)
- $B.coords = (-1, 2) ($B.coords son las coordenadas)
- ... definen la abscisa de A como 3 y las coordenadas de B como (-1, 2) y para establecer puntos derivados de los precedentes. Así...
- $C = Point(2*$A.x, 1+$B.y) ($A.x es la abscisa de A)
- ... creando un punto C en que la abscisa es el doble del de A y la ordenada, una unidad por encima de la de B.
Atributos comunes a todos los elementos
Los siguientes atributos no se aplican solo a puntos y vectores sino a todos los de objetos de GeoGebra.
- visible (booleana);
- color (para definirlo, por ejemplo, se utiliza Color.Red o Color(0,5, 0,9, 0,8) (de forma idéntica a java.awt.Color);
- label (etiqueta, una cadena);
- label_color;
- label_visible (booleana);
- label_mode puede ser uno de las opciones, nombre, nombre y valor, valor, subtítulo
- caption (sub-título, una cadena);
- trace (booleana que si es verdadera, establecer que se deje rastro o huella).
Este guion o script crea un punto rojo con una leyenda negra que dice "Dar clic aquí"
- $P = Point(3, 1) ($P es la referencia al punto P)
- $P.color = Color.RED
- $P.label_color = Color.BLACK
- $P.label_mode = "caption"
- $P.caption = "Dar clic aquí"
Los atributos pueden ser asignados directamente en la creación del objeto. La siguiente escritura tiene el mismo efecto que la anterior:
- $P = Point(3, 1, color=Color.RED, label_color=Color.BLACK, label_mode='caption', caption="Dar clic aquí") (nuevamente, $P refiere al punto P)
Trayectos
Las líneas y los segmentos
Este script traza una recta que pasa por los puntos A y B
- $l = Line($A, $B) (A y B se indican con el prefijo $)
Este, una recta, l1, que pasa por A y tiene la dirección del vector u
- $l_1 = Line($A, $u) (A y u se indican con el prefijo $)
Pueden crearse también, semirrectas y segmentos
- $r = Ray((1, 1), (2, 0)) (r se indica con el prefijo $)
- $s = Segment((-3, 0), (2, 1)) (s se indica con el prefijo $)
Los segmentos tienen dos atributos, el nombre del punto inicial y el del final. Las rectas, segmentos y semirrectas tienen como atributo el nombre del vector que les determina la dirección.
Ejes
Dos objetos especiales, $xAxis y $yAxis que representan los dos ejes de coordenadas, con los que por el momento es limitado lo que puede llevarse adelante, tienen los siguientes atributos - visible : permite modificar la visibilidad de un eje. Este guion - script - oculta los dos ejes en la Vista Gráfica
$xAxis.visible = False
$yAxis.visible = False
Círculos Elipses Hipérbolas Parábolas
- Este guion o script crea cuatro círculos de...
- - C1 con centro en (1, 1) que pasa por el punto (3, 2)
- - C2 que pasa por los puntos (0, 0), (4, 0), (4, 3)
- - C3 con centro en A y radio BC
- - C4 con centro en (-2, 0) y radio 3.
- $C_1 = Circle((1, 1), (3, 2)) (C_1 se indica con el prefijo $)
- $C_2 = Circle((0, 0), (4, 0), (4, 3)) (C_2 se indica con el prefijo $)
- $C_3 = Circle($A, Segment($B, $C))
- $C_4 = Circle((-2, 0), 3) (C_4 se indica con el prefijo $)
- Este script crea dos elipses, dos hipérbolas y una parábola
- E1 de focos (-2, 0), (2, 0) y longitud del semi-eje mayor igual a 3
- E2 de focos (1, 1), (3, 1) que pasa por el punto (2, 2) ;
- H1 de focos (-2, 0), (2, 0) y longitud del semi-eje mayor igual a 3;
- H2 de focos (1, 1), (3, 1) que pasa por el punto (2, 2) ;
- P de foco (0, 0) y recta directriz (AB).
- $E_1 = Ellipse((-2, 0), (2, 0), 3) (E_1 se indica con el prefijo $)
- $E_2 = Ellipse((1, 1), (3, 1), (2, 2)) (E_2 se indica con el prefijo $)
- $H_1 = Hyperbola((-2, 0), (2, 0), 3) (H_1 se indica con el prefijo $)
- $H_2 = Hyperbola((1, 1), (3, 1), (2, 2)) (H_2 se indica con el prefijo $)
- $P = Parabola((0, 0), Line($A, $B)) (P se indica con el prefijo $)
Atributos de Recorridos
Todos los recorridos (rectos y curvos) tiene como atributos...
- Grosor (valor numérico);
- Tipo de Trazo (cadena que puede indicar una de las opciones de trazo pleno o de uno de los punteados como el de guion corto, de guion largo, puntos, punto-raya).
Polígonos y Poligonales
Para crear un polígono con vértices A, B y C se puede utilizar:
$ABC = Polygon($A, $B, $C)
o
$ABC = Polygon([$A, $B, $C])
Esta última escritura es más útil si se desea crear un polígono a partir de una lista arbitraria de puntos. Los polígonos tienen atributos:
- boundary - perimetral: el perímetro del polígono como una poligonal;
- points - puntos: una lista de Python de todos los vértices del polígono (que también puede obtenerse a través de la lista (poli));
- area o value - el área o valor: el área del polígono;
- edges - lados: una lista Python de todos los lados del polígono;
- directed_area: el área con un signo (+ a la izquierda - a derecha);
- len(poly) longitud del polígono, es decir el número de vértices.
El índice i de un vértice se puede obtener a través de poli [I]. Esto mismo vale para las poligonales excepto los atributos de los lados o del área o la directed_area. El atributo de su valor, devuelve la longitud total.
Listas - Textos - Funciones
Listas
Las listas de GeoGebra no se deben confundir con las listas de Python. Las listas pueden ser creadas de la siguiente manera: my_list = List(1, 2, 3) crea una lista GeoGebra ; python_list = [1, 2, 3] crea una lista Python.
La notación indicial se puede utilizar para obtener o eliminar un elemento en una posición dada:
print my_list[1] muestra el segundo elemento (el primero tiene índice 0);
del my_list [0], elimina el primer elemento.
Puede añadirse un elemento nuevo al final de una lista mediante el método append:
my_list.append(42)
Es posible establecer un bucle o lazo sobre los elementos de una lista: for item in my_list print item + 10 Se puede convertir una lista GeoGebra en una de Python :
python_list = list(my_list)
Se pueden eliminar todos los elementos de una lista con el método de GeoGebra clear : my_list.clear()
Textos
Puede crearse un texto con la siguiente sintaxis: t = Text("¡Muy buenos días!") Los textos tienen los siguientes atributos:
- origin - origen (un punto). Se puede conocer/leer o asignarse;
- text - texto (la cadena del texto). Se puede leer o asignados;
- latex (valor booleano): true si el texto debe aparecer en LaTeX y false en caso contrario.
Esta secuencia de comandos sitúa el origen del texto t en (2, 2) y establece "Abracadabra" como el texto a exponer: t.orgin.coords = (2, 2) t.text = "Abracadabra" Se le puede cambiar el punto de origen con la siguiente declaración: t.orgin = (3, 1) Pero a diferencia del anterior, en este caso, no se actualizan las coordenadas sino que se crea un Punto.
Origen Dinámico
Para situar el origen del texto t en el punto A -de modo que se desplazará cuando A se mueva-, basta con anotar: t.origin = $ $A
Más sobre LaTeX
Para mayores detalles sobre el trabajo con LaTeX conviene consultar
- el correspondiente mensaje del foro y el Grupo de usuarias y usuarios de LaTeX
- la introducción a su sintaxis
- la sección que ilustra cómo seleccionar tipografía y colores
- el manejo de tablas y cuadros
- las fórmulas más usuales
- los documentos y textos para profundizar en el tema.
- El Tutorial sobre LaTeX en GG
- El Mini-Tutorial de LaTeX (Short Math Guide for LATEX) y el anexo, del mismo autor o, en español, de Ecuaciones en LATEX
- El Código-LaTeX para las fórmulas más comunes y la sección que explica cómo Exportar archivos GeoGebra a documentos LaTeX
Si bien los comandos más frecuentes de LaTeX en los contextos y textos de matemáticas operan adecuadamente en GeoGebra, para incluir un sub-conjunto más avanzado, en conveniente recurrir a prestaciones externas, adicionales.
Las Funciones en Ecuaciones e Inecuaciones
Funciones
Las funciones se pueden definir fácilmente en Python:
def f(x): return sin(x)/x
$f = Function(f)
También puede tratarse de funciones de dos variables:
def f(x, y): return x**2+y**2 - 5
Se caracterizan por la curva implícito como atributo:
$f = Function(f)
$c = f.implicitcurve
Las funciones pueden establecerse a partir de inecuaciones de desigualdades:
def f(x, y): return x**2 > x + y
geo.f = Function(f)
Tortugas
Las tortugas son objetos a desplazar para dibujar geométricamente en la ventana activa , tal como se puede apreciar en el lenguaje Logo.
Las tortugas pueden desplazarse y, lo que es mejor aún, pueden animarse mientras se controla y monitorea su movimiento. Se les puede ajustar la velocidad (como se explica más adelante).
* t.pen_color = Color.RED * for i in range(5): ** t.forward(2) ** t.turn_left(72)______
Se puede apreciar el movimiento y los giros de una tortuga u optar por la operación instantánea de la tortuga, indicando: t.speed = 0
Las tortugas, en tanto objetos funcionales, tienen los siguientes atributos:
- pen_color: permite conocer o establecer el color del lápiz con que dibuja su rastro la tortuga;
- position: permite conocer o establecer la posición actual de la tortuga;
- angle: permite conocer o establecer la dirección actual de la tortuga;
- pen_thickness: permite conocer o establecer el ancho del trazo del lápiz de la tortuga;
- running: permite - cuando se le asigna valor True - animar a la tortuga y detener su movimiento - cuando se le asigna valor False -;
- speed: permite conocer o establecer la velocidad de animación de la tortuga - es un número decimal entre 0 y 1-. 0 significa velocidad instantánea, 0,01 es la más lenta y así, en escala decreciente de velocidad (el valor por omisión es 0,1)
Operan con los siguientes métodos:
clear (): restablece la posición y el ángulo de la tortuga y se borra el dibujo.
- forward(distancia): para ordenarle avanzar las unidades de distancia indicadas. Lo que, a su vez, provoca el trazado de un segmento si la pluma del lápiz de la tortuga está activo (hacia abajo);
- turn_left(ángulo): para ordenarle girar a la izquierda el número de grados del ángulo indicado;
- turn_right(angle): para ordenarle girar a la derecha el número de grados del ángulo indicado;
- clear(): reinicializa, limpia todo trazo o diseño y ubica al la tortuga en la posición y orientación de partida para realizar trazados.
Comandos de Tortuga
- Tortugas
- Tortuga
- TortugaAvanza
- TortugaRetrocede
- TortugaAbajo
- TortugaArriba
- TortugaDerecha
- TortugaIzquierda
Cada tortuga aparece en el origen de coordenadas con una orientación de 0° y con pluma o lápiz hacia abajo de modo que al desplazarla deja rastro.
Coordenadas(tortuga1, 2, 3)
ubica a la tortuga1 en el punto (2,3).Su rumbo inicial no puede modificarse. El desplazamiento provoca el consecuente trazo a menos que se hubiera indicado antes TortugaArriba sin reponer luego el estado usual vía comando TortugaAbajo.
Intersecciones
Intersect(x, y) funciona por ahora, solo cuando se trata de trazos de rectas o cónicas. También se puede utilizar para una lista de pares de números, para encontrar los puntos de intersección.
l = Line((0, 1), (2, 2)) # una recta c = Circle((0, 0), 3) # una circunferencia p, q = Intersect(l, c)
Para controlar si existe una intersección `p`, puede emplearse `not p.infinite` (o `p.infinite` para probar si la intersección no existe). Vale tener en cuenta que `p.defined` no funciona porque GeoGebra se basa en la geometría proyectiva, en la que dos rectas siempre definen un punto de intersección.
Acceso a Objetos Seleccionados
La selección de objetos permite el acceso a la selección actual: - selection.all devuelve la lista de todos los objetos seleccionados; - selection.filter (<tipo>) devuelve la lista de todos los objetos de cada tipo (<tipo>) indicado.
Cuando sea apropiado, también se pueden utilizar la siguiente sintaxis:
- selection.points;
- selection.vectors;
- selection.lines;
- selection.segments.
Gestión de Eventos
Se puede apelar a la sección de Eventos en la Ventana de Python para seleccionar un objeto y un evento y, a continuación escribir una secuencia de comandos - un guion o script - en el área del editor de texto. En estos casos, el destino del objeto puede hacer referencia a sí mismo. Por ejemplo, se puede escribir esta secuencia de comandos en el campo de Actualizaciòn de un punto:
if self.x < 0: self.caption = "negative x" else: self.caption = "positive x"
Cuando el rótulo que se elige exponer del punto es el correspondiente al sub-título, se apreciará que se registra la leyenda de los cambios del punto a medida que se lo desplaza de a ambos lados de los ejes de ordenadas. Desde los guiones (scripts) de eventos se tiene acceso a todas las variables definidas en el campo de guiones (' Script en Python) . Sin embargo, si se desea cambiar el valor de una variable, debe ser declarada como global - si no se crea como variable local dentro de la secuencia de comandos (script o guion) de eventos.
global score score += 1
También se puede agregar directamente controladores de eventos en la definición de los siguientes atributos de los objetos:
- onupdate ;
- onadd ;
- onremove ;
- onclick ;
- onrename.
Los atributos pueden ser definidos por una función de un argumento (que es el objetivo del evento):
def paint_blue(pt): pt.color = Color.BLUE geo.A.onclick = paint_blue
Métodos Especiales
- answer = input(<question>) abre una caja de diálogo vacía y devuelve la cadena previa establece el rango de la respuesta;
- - answer = input(<question>) abre una caja de diálogo
- - answer = input(<question>, <default answer>) similar a la anterior, excepto que la caja de diálogo muestra inicialmente la respuesta como salida por omisión;
- alert(<texte>) muestra una ventana de mensaje que contiene el texto;
- debug(<texte>) expone / depura el texto escrito, en la Consola de Java;
- command(<texte>) evalúa un comando de GeoGebra y devuelve una lista de objetos.
- - command("3x+2y=12") crea la recta: 2x + 3y = 12
- - command('Circle', (x, y), r) crea la circunferencia con centro en el punto (3, 2), de radio 4
- - x, y = 3, 2
- - r = 4
- c: (x - 3)² + (y - 2)² = 16
Módulo Matemático
Desde el correspondiente módulo de Python (y/o desde sus librerías), en este caso el de matemática , como math.fabs(), se pueden realizar numerosas operaciones. como la de math.sqrt(2), o las de math import fabs, math.fabs(-2),math.fabs(5).
Acceso a la API de GeoGebra desde Python
Para acceder a GgbAPI, basta con anteponer el prefijo de llamada a ggbApplet, (es decir, es la misma sintaxis que JavaScript)
- ggbApplet.evalCommand ("x ^ 2 + y ^ 2 = 4")
- ggbApplet.startAnimation ()