Diferencia entre revisiones de «Referencia:Jython»

De GeoGebra Manual
Saltar a: navegación, buscar
m (Revertidos los cambios de LailaTov (disc.) a la última edición de LilianaSaid)
 
(No se muestran 42 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 aún en desarrollo] o en este mismo artículo la sección correspondiente [[Notas Lanzamiento de GeoGebra 4.2#Vista o Ventana Python|Vista o Ventana Python]] y a [https://launchpadlibrarian.net/18980633/Python%20para%20todos.pdf ''Phyton para Todos''] en caso de desear profundizar en cuestiones propias del lenguaje interpretado.
+
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 ===
 +
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].
  
== Vista o Ventana Python ==
 
Muy recomendable la guía que - en francés - desarrolla el tema y ofrece [http://www.geogebra.org/en/upload/files/AAFrancais/NLambert/Python/DocPythonGGb.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 9: 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 guión - ''script'' - desde aquí,  en cualquier momento.
+
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 guión - ''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://www.geogebra.org/en/upload/files/AAFrancais/NLambert/Python/DocPythonGGb.pdf guía elaborada en francés].  
+
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 23: 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 sólo el segmento más cortoa
+
  # 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 30: Línea 30:
 
  # La llamada cada vez que A es modificada
 
  # La llamada cada vez que A es modificada
 
  geo.A.onupdate = show_shortest
 
  geo.A.onupdate = show_shortest
 
 
  # Ahora, ¡a desplazar A en la Vista Gráfica!
 
  # Ahora, ¡a desplazar A en la Vista Gráfica!
  
==== 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 sólo permite nombres en formato ASCII, puede ser útil, en otros idiomas, una sintaxis para acceder a nombres que excedan el código ASCII.  
+
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 48: Línea 47:
 
$ ["A", 1]. Color = # Color.RED  # Cambia el color del punto.
 
$ ["A", 1]. Color = # Color.RED  # Cambia el color del punto.
  
=====Puntos y Vectores=====
+
===Puntos y Vectores===
* Se pueden crear puntos y vectores por sus coordenadas
+
*Se pueden crear puntos y vectores por sus coordenadas
$A = Point(1, 2)
+
$A = Point(1, 2)
 
$B = Point(-2, 3)
 
$B = Point(-2, 3)
$u = Vector(1, -1)
+
$u = Vector(1, -1)
* Incluso, crear un punto a partir de un vector...
+
*Incluso, crear un punto a partir de un vector...
** $C = Point($u)
+
**$C = Point($u)
 
Viceversa, un vector a partir de un punto...
 
Viceversa, un vector a partir de un punto...
* $r_A = Vector($A)
+
*$r_A = Vector($A)
 
O con dos puntos...
 
O con dos puntos...
 
*$v = Vector($A, $B)
 
*$v = Vector($A, $B)
======Entre Puntos y Vectores======  
+
=====Entre Puntos y Vectores=====  
 
Si A es un punto o un vector...
 
Si A es un punto o un vector...
* $A.x  da por resultado su abscisa  ($A.x)
+
*$A.x  da por resultado su abscisa  ($A.x)
* $A.y  su ordenada ($A.y)
+
*$A.y  su ordenada ($A.y)
* $A.coords  su par de coordenadas ($A.coords)
+
*$A.coords  su par de coordenadas ($A.coords)
 
{{note|Siempre se trata de resultados dinámicos}}
 
{{note|Siempre se trata de resultados dinámicos}}
  
Línea 74: Línea 73:
 
**$C = Point(2*$A.x, 1+$B.y)  ($A.x es la abscisa de A)
 
**$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.
 
*... 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 sólo a puntos y vectores sino a todos los de objetos de GeoGebra.
+
=== 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);
 
* 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 84: 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 guión o ''script'' crea un punto rojo con una leyenda negra que dice "Dar clic aquí"
+
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 92: Línea 92:
 
Los atributos pueden ser asignados directamente en  la creación del objeto. La  siguiente escritura tiene el mismo efecto que la anterior:
 
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)
 
* $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 =====
+
=== Trayectos ===
====== Las líneas y los segmentos ======
+
==== Las líneas y los segmentos ====
 
Este ''script'' traza una recta que pasa por los puntos A y B  
 
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 $)
 
* $l = Line($A, $B)  (A y B se indican con el prefijo $)
Línea 102: Línea 102:
 
* $s = Segment((-3, 0), (2, 1))  (s 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.
 
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 =====
+
==== 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
 
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 ''guión'' - script - oculta los dos ejes en la Vista Gráfica
+
Este ''guion'' - script - oculta los dos ejes en la Vista Gráfica
  
 
$xAxis.visible = False
 
$xAxis.visible = False
Línea 111: Línea 111:
 
$yAxis.visible = False
 
$yAxis.visible = False
  
===== Círculos Elipses Hipérbolas Parábolas =====
+
==== Círculos Elipses Hipérbolas Parábolas ====
* Este  guión o ''script'' crea cuatro círculos de...
+
* 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 132: Línea 132:
 
*** $H_2 = Hyperbola((1, 1), (3, 1), (2, 2)) (H_2 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 $)
 
*** $P = Parabola((0, 0), Line($A, $B)) (P se indica con el prefijo $)
===== Atributos de Recorridos =====
+
 
 +
==== Atributos de Recorridos ====
 
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 guión corto, de guión largo, puntos, punto-raya).
+
* 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).
===== Métodos Especiales =====
+
==== Polígonos y Poligonales ====
* - answer = input(<question>) abre una caja de diálogo vacía y la cadena previa se asocia a la respuesta
+
Para crear un polígono con vértices A, B y C se puede utilizar:
* - answer = input(<question>, <default answer>) similar a la anterior, pero la ventana de la caja de diálogo muestra la respuesta como salida por omisión
+
$ABC = Polygon($A, $B, $C)
* - alert(<text>) muestra una ventana con el mensaje que contiene el texto
+
o
* - debug(<text>) depura el texto escrito en la Consola de Java
+
$ABC = Polygon([$A, $B, $C])
* - command(<text>) evalúa un comando GeoGebra y devuelve una lista de objetos
+
Esta última escritura es más útil si se desea crear un polígono a partir de una lista arbitraria de puntos.
* - command("3x+2y=12") crea la recta: 2x + 3y = 12 
+
Los polígonos tienen atributos:
* - command('Circle', (x, y), r) crea el círculo con centro en el punto (3, 2), de radio 4
+
* boundary  - perimetral: el perímetro del polígono como una poligonal;
** - x, y = 3, 2
+
* 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));
** - r = 4
+
* area o value - el área o valor: el área del polígono;
** c: (x - 3)² + (y - 2)² = 16
+
* 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:<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'':
 +
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 [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.
 +
}}
  
=== Acceso a la API de GeoGebra desde Python ===
+
==Las Funciones en Ecuaciones e Inecuaciones==
Para acceder a GgbAPI, basta con anteponer el prefijo de llamada a ggbApplet, (es decir, es la misma sintaxis que JavaScript)
+
===Funciones===
*  ggbApplet.evalCommand ("x ^ 2 + y ^ 2 = 4")
+
Las funciones se pueden definir fácilmente en Python:<br>
*  ggbApplet.startAnimation ()
+
<hr>
 +
def f(x): return sin(x)/x<br>
 +
$f = Function(f)<br>
 +
<hr>
 +
También puede tratarse de funciones de dos variables:<br>
 +
<hr>
 +
def f(x, y): return x**2+y**2 - 5<br>
 +
<hr>
 +
Se caracterizan por la curva implícito como  atributo:<br>
 +
<hr>
 +
$f = Function(f)<br>
 +
$c = f.implicitcurve<br>
 +
<hr>
 +
Las funciones pueden establecerse a partir de inecuaciones de desigualdades:<br>
 +
def f(x, y): return x**2 > x + y<br>
 +
<hr>
 +
geo.f = Function(f)<br>
  
 +
==Tortugas==
 +
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:
 +
t = Turtle ()
 +
}}
 +
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).
 +
{{Example|1=Un ejemplo sencillo para dibujar un pentágono regular con una tortuga se anota a continuación:
 +
  * 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'''
  
=Tortues=
+
Las tortugas, en tanto objetos funcionales, tienen los siguientes atributos:
Les tortues sont des objets qui peuvent être déplacés et dessiner des formes dans la fenêtre euclidienne (voir le langage logo) Pour créer uje nouvelle tortue, il suffit de valider :
 
t = Turtle()
 
Les tortues peuvent être déplacées, et le mieux à leur sujet c’est qu’elles peuvent être animées, i.e. vous pouvez surveiller leur déplacement. Leur vitesse peut être ajustée, voir ci-dessous. Voici un exemple simple pour faire dessiner un pentagone régulier à la tortue définie précédemment :
 
t.pen_color = Color.RED
 
for i in range(5):
 
  t.forward(2)
 
  t.turn_left(72)
 
  
 +
* 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) 
  
Notez comment vous pouvez voir la tortue se déplacer et tourner sans à-coups. Si vous préférez que la tortue dessine instantanément, vous pouvez faire
+
Operan con los siguientes métodos:
t.speed = 0
 
  
Les objets Tortue ont les attributs suivants :
+
clear (): restablece la posición y el ángulo de la tortuga y se borra el dibujo.
*pen_color : peut être utilisé pour obtenir ou définir la couleur du crayon de la tortue ;
+
*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'');
*position : peut être utilisé pour obtenir ou définir la position actuelle de la tortue ;
+
*turn_left(ángulo): para  ''ordenarle'' girar a la izquierda el número de grados del ángulo indicado;
*angle : peut être utilisé pour obtenir ou définir l’orientation actuelle de la tortue ;
+
*turn_right(angle): para  ''ordenarle'' girar a la derecha el número de grados del ángulo indicado;
*pen_thickness : peut être utilisé pour obtenir ou définir la largeur du trait de crayon de la tortue ;
+
*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.
*running : défini à True pour animer la tortue, à false pour arrêter son déplacement ;
 
*speed : la vitesse d’animation de la tortue – c’est un nombre décimal entre 0 et 1. 0 signifie instantané, 0.01 très lent, 1 très rapide (par défaut 0.1)
 
  
Les objets Tortue ont les méthodes suivantes :  
+
__NOTOC__{{betamanual|version=5.0}}{{command|turtle|category| Comandos_de_Tortuga}}
*forward(distance): pour faire avance de distance unités. Ce qui tracera aussi un segment si le crayon est baissé ;
+
===Comandos de Tortuga===
*turn_left(angle): pour tourner à gauche de angle degrés ;
+
* [[Manual:Comandos de Tortuga|Tortugas]]
*turn_right(angle): pour tourner à droite de angle degrés ;
+
* [[Manual:Comando Tortuga|Tortuga]]
*clear(): réinitialise la position et l’angle de la tortue et efface le dessin.  
+
* [[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>
  
=Intersections=
+
{{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.}}
Intersect(x, y) fonctionne pour x et y étant, pour l’instant, seulement des droites ou des coniques. On peut aussi l’utiliser pour une liste de couples de nombres pour trouver les points d’intersection.
 
l = Line((0, 1), (2, 2))
 
c = Circle((0, 0), 3)
 
p, q = Intersect(l, c)
 
  
Pour tester si un point d’intersection `p` existe, utilisez `not p.infinite` (ou `p.infinite` pour tester si l’intersection n’existe pas). Notez que `p.defined` ne fonctionne pas parce que GeoGebra est basé sur la géométrie projective, dans laquelle deux droites ont toujours un point d’intersection.  
+
{{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==
 +
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)
  
=Accès aux objets sélectionnés=
+
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.
L’objet selection permet l’accès à la sélection actuelle :
+
== Acceso a Objetos Seleccionados==
- selection.all retourne la liste de tous les objets sélectionnés ;
+
La selección de objetos permite el acceso a la selección actual:  
- selection.filter(<type>) retourne la liste de tous les objets de type <type> sélectionnés.
+
- 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.
  
Si cela convient, les syntaxes suivantes peuvent aussi être utilisées :
+
Cuando sea apropiado, también se pueden utilizar la siguiente sintaxis:
* selection.points ;
+
* selection.points;
* selection.vectors ;
+
* selection.vectors;
* selection.lines ;
+
* selection.lines;
 
* selection.segments.
 
* selection.segments.
=Gérer les événements=
+
== 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.
Vous pouvez utilisez le volet Events dans la fenêtre Python pour sélectionner un objet et un événement, taper ensuite un script dans la zone de l’éditeur de texteLa cible de l’objet peut être référencée par self. Par exemple vous pouvez écrire ce script dans le champ onupdate d’un point :
+
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:
 
     self.caption = "negative x"
 
     self.caption = "negative x"
 
  else:
 
  else:
 
     self.caption = "positive x"
 
     self.caption = "positive x"
Aussi longtemps que le mode Étiquette du point sera défini à caption, vous pourrez voir que la légende du point change si vous le déplacez de part et d’autre de l’axe des ordonnées.
+
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.
Toutes les variables définies dans le Script Python sont accessibles dans les scripts d’événements. Cependant, si vous voulez modifier la valeur d’une variable, vous devez la déclarer comme globale – sinon une variable au script d’événements est créée.
+
  global score
 
+
  score += 1
global score
+
También se puede agregar directamente controladores de eventos en la definición de los siguientes atributos de los objetos:
score += 1
 
 
 
 
 
Vous pouvez aussi ajouter directement des gestionnaires d’événements en définissant les attributs suivants pour des objets :
 
 
* onupdate ;
 
* onupdate ;
 
* onadd ;
 
* onadd ;
Línea 221: Línea 317:
 
* onclick ;
 
* onclick ;
 
* onrename.
 
* onrename.
 
+
Los atributos pueden ser definidos por una función de un argumento (que es el objetivo del evento):
Les attributs peuvent être définis par une fonction à un argument (qui est la cible de l’événement)
 
 
  def paint_blue(pt):
 
  def paint_blue(pt):
 
  pt.color = Color.BLUE
 
  pt.color = Color.BLUE
 
  geo.A.onclick = paint_blue
 
  geo.A.onclick = paint_blue
 
+
=== Métodos Especiales ===
=Méthodes spéciales=
+
* 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>) ouvre une fenêtre de dialogue vide et la chaîne rentrée est rangée dans answer ;
+
* - 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;
* answer = input(<question>, <réponse par défaut>) comme ci-dessus, mais la fenêtre de dialogue fait apparaître au départ la réponse par défaut;
+
* alert(<texte>) muestra una ventana de mensaje que contiene el texto;
* alert(<texte>) affiche une fenêtre de message contenant texte ;
+
* debug(<texte>) expone / depura el texto escrito, en la Consola de Java;
* debug(<texte>) écrit texet dans la Console Java ;
+
* command(<texte>) evalúa un comando de GeoGebra y devuelve una lista de objetos.
* command(<texte>) évalue une commande GeoGebra et retourne une liste d’objets.
+
* - 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
command("3x+2y=12")
+
** - r = 4
crée la droite a: 2x + 3y = 12
+
** c: (x - 3)² + (y - 2)² = 16
 
+
==Módulo Matemático==
x, y = 3, 2
+
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.
r = 4
+
<small>como la de math.sqrt(2), o las de math import fabs, math.fabs(-2),math.fabs(5)</small>.
command('Circle', (x, y), r)
+
=== Acceso a la API de GeoGebra desde Python ===
crée le cercle de centre le point de coordonnées(3 ; 2)et de rayon 4  
+
Para acceder a GgbAPI, basta con anteponer el prefijo de llamada a ggbApplet, (es decir, es la misma sintaxis que JavaScript)
c: (x - 3)² + (y - 2)² = 16
+
*  ggbApplet.evalCommand ("x ^ 2 + y ^ 2 = 4")
 +
*  ggbApplet.startAnimation ()
 +
[[Categoría:Referencia]]

Revisión actual del 20: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)
Nota: Siempre se trata de resultados dinámicos

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


Notas:

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.

Ejemplo: Para crear una nueva tortuga, basta con indicar: t = Turtle ()

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).

Ejemplo: Un ejemplo sencillo para dibujar un pentágono regular con una tortuga se anota a continuación:
  * 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

Listado de Comandos de Tortuga

Esta categoría de comandos incluye a los siguientes:

Tortuga

Nota: 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.
Bulbgraph.pngAtención: 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.
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.


Note Idea: Es posible emplear el comando Coordenadas.
Ejemplo:
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 ()
© 2024 International GeoGebra Institute