|  |  | Definición de Objetos en una Figura |

#### Definición de Objetos en una Figura

Un objeto puede ser definido a través de varias sintaxis :

- `(sea Punto "p1" tipo args)` El punto es creado y su referencia guardada en la variable `p1`. Esta sintaxis utiliza una macro Scheme.
- `(Punto "Nombre" tipo args)` El punto es creado pero ninguna referencia al punto es conservada.
- `(define p1 (Punto "Nombre" tipo args))` El punto es creado y su referencia guardada en la variable `p1`.
- `(set! p1 (Punto "Nombre" tipo args))` El punto es creado y su referencia es copiada en la variable, ya existente, `p1`.

Si unos objetos son creados después del cuerpo de una función, utilice ya sea la forma `set!` o la forma especial de Scheme `let`. Es importante subrayar que la llamada se hace a una función que devuelve una referencia al objeto creado.

Para saber más sobre la correspondencia entre los nombres de los comandos Scheme en Español y en Inglés, vea el archivo `/usr/share/drgeo/scm/drgeo_scm_interface_constant_es.scm`.

##### Punto

`prototipo (Punto nombre libre x y)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x`: La abscisa del punto
`y`: La ordenada del punto
Devuelve: Referencia a un punto libre del plano con coordenadas iniciales `x` y `y`.
Ejemplo:
`(define p1 (Punto "A" libre 1.2 (acos -1)))`

`prototipo (Punto nombre en-linea linea x)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`linea`: Referencia a una linea (recta, semirrecta, segmento, arco, círculo, etc..)
`x`: Abscisa curvilínea (la "abscisa geométrica") del punto libre; el valor pertenece al intervalo [0 ; 1]
Devuelve: Referencia a un punto libre sobre la curva
Ejemplo:
`(Punto "M" en-linea s1 0.5)`

`prototipo (Punto nombre mitad-2pts p1 p2)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`p1`: Referencia a un punto
`p2`: Referencia a un punto
Devuelve: Referencia al punto medio de los dos puntos.
Ejemplo:
`(sea Punto "A" libre 1 1)
(sea Punto "B" libre 4 4)
(Punto "I" mitad-2pts A B)`

`prototipo (Punto nombre mitad-segmento s)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`s`: Referencia a un segmento
Devuelve: Referencia a la mitad de un segmento.
Ejemplo:
`(Punto "L" mitad-segmento s)`

`prototipo (Punto nombre intersección l1 l2)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`l1`: Referencia a una línea(recta o curva)
`l2`: Referencia a una línea(recta o curva)
Devuelve: Referencia al punto de intersección de las dos líneas
Ejemplo:
`(Punto "I" intersección recta segmento)`

`prototipo (Punto nombre intersección2 l1 l2)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`l1`: Referencia a una línea(recta o curva)
`l2`: Referencia a una línea(recta o curva)
Devuelve: Referencia al segundo punto de intersección de las dos líneas cuando una de las dos líneas es del tipo arco de círculo o del tipo círculo.
Ejemplo:
`(Punto "I" intersección2 recta círculo)`

##### Recta

`prototipo (Recta nombre 2puntos p1 p2)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`l1`: Referencia a un punto
`l2`: Referencia a un punto
Devuelve: Referencia a una recta que pasa por los dos puntos.
Ejemplo:
`(sea Punto "A" libre 0 0)
(sea Punto "M" libre 1 2)
(Recta "" 2puntos A M)`

`prototipo (Recta nombre paralela p d)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`p`: Referencia a un punto
`d`: Referencia a una dirección (recta, segmento, vector,...)
Devuelve: Referencia a una recta paralela a la dirección `d` y que pasa por el punto `p`.
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Recta "d1" paralela A d)`

`prototipo (Recta nombre perpendicular p d)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`p`: Referencia a un punto
`d`: Referencia a una dirección (recta, segmento, vector, ...)
Devuelve: Referencia a una recta perpendicular à la dirección de `d` y que pasa por por `p`.
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Recta "d1" perpendicular A d)`

##### Semirrecta

`prototipo (Semirrecta nombre 2puntos o p)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`o`: Referencia a un punto, origen de la semirrecta
`p`: Referencia a un punto, punto de la semirrecta
Devuelve: Referencia a una semirrecta definida por su origen y por un punto.
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Punto "O" libre 0 0)
(sea Semirrecta "dd1" 2puntos A 0)`

##### Segmento

`prototipo (Segmento nombre extremos p1 p2)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`p1`: Referencia a un punto
`p2`: Referencia a un punto
Devuelve: Referencia a un segmento definido por sus extremos
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Punto "B" libre 10 4)
(sea Segmento "" extremos A B)`

##### Círculo

`prototipo (Círculo nombre 2puntos c p)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`c`: Referencia a un punto, centro del círculo
`p`: Referencia a un punto sobre el círculo
Devuelve: Referencia a un círculo definido por su centro y por un punto.
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Punto "B" libre 10 4)
(sea Círculo "C1" 2puntos A B)`

`prototipo (Círculo nombre centro-radio c r)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`c`: Referencia a un punto, centro del círculo
`r`: Referencia a una valor numérico, radio del círculo
Devuelve: Referencia a un círculo definido por su centro y por su radio
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Número "r" libre 10)
(sea Círculo "C1" centro-radio A r)`

`prototipo (Círculo nombre centro-segmento c s)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`c`: Referencia a un punto, centro del círculo
`s`: Referencia a un segmento dada la donde la longitud del segmento será el radio del círculo
Devuelve: Referencia a un círculo definido por su centro y por un segmento cuya longitud es su radio.
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Círculo "C1" centro-segmento A s)`

##### Arco de círculo

`prototipo (Arco nombre 3puntos p1 p2 p3)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`p1`: Referencia a un punto, 1er extremo del arco de círculo
`p2`: Referencia a un punto del arco
`p3`: Referencia a un punto, 2o extremo del arco de círculo
Devuelve: Referencia a un arco de círculo definido por sus extremos y por un punto interno.
Ejemplo:
`(sea Punto "A" libre 1 5)
(sea Punto "B" libre 0 5)
(sea Punto "C" libre -1 -2)
(sea Arco "arc" 3puntos A B C)`

##### Polígono

`prototipo (Polígono nombre npuntos args)`
`nombre`: Cadena de caracteres que designa al nombre del objeto.
`args`: Una lista de referencias de puntos ; vértices del polígono.
Devuelve: Referencia a un polígono definido por sus vértices.
Ejemplo:
`(sea Polígono "quad" npuntos A B C D)`

##### Las transformaciones geométricas

Los prototipos de las transformaciones geométricas permiten la obtención de objetos rotados, reflejados, trasladados, a escala, etc.. Estos prototipos usan como referencia a los tipos punto, recta, semirrecta, vector, círculo, arco de círculo y polígono.

`prototipo (TipoDeObjeto nombre rotación objeto centro ángulo)`
`TipoDeObjeto`: Punto, Segmento, Recta, Semirrecta, Vector, Círculo, Arco, Polígono
`nombre`: Cadena de caracteres que designa al nombre del objeto
`objeto`: Referencia del objeto a transformar
`centro`: Referencia a un punto, centro de la rotación
`ángulo`: Referencia a un valor numérico, ángulo de la rotación
Devuelve: Referencia del objeto ya transformado.
Ejemplo:
`(sea Punto "I1" rotación I C a)`

`prototipo (TipoDeObjeto nombre escala objeto centro k)`
`TipoDeObjeto`: Punto, Segmento, Recta, Semirrecta, Vector, Círculo, Arco, Polígono
`nombre`: Cadena de caracteres que designa al nombre del objeto
`objeto`: Referencia del objeto a transformar
`centro`: Referencia a un punto, centro de la escala (centro de homotecia)
`k`: Referencia a un valor numérico, factor de la escala (homotecia)
Devuelve: Referencia del objeto transformado.
Ejemplo:
`(sea Polígono "P1" escala P C k1)`

`prototipo (TipoDeObjeto nombre simetría objeto centro)`
`TipoDeObjeto`: Punto, Segmento, Recta, Semirrecta, Vector, Círculo, Arco, Polígono
`nombre`: Cadena de caracteres que designa al nombre del objeto
`objeto`: Referencia del objeto a transformar
`centro`: Referencia a un punto, centro de la simetría (esto es, una rotación de 180 grados)
Devuelve: Referencia del objeto ya transformado.
Ejemplo:
`(sea Segmento "S1" simetría S C)`

`prototipo (TipoDeObjeto nombre reflexión objeto eje)`
`TipoDeObjeto`: Punto, Segmento, Recta, Semirrecta, Vector, Círculo, Arco, Polígono
`nombre`: Cadena de caracteres que designa al nombre del objeto
`objeto`: Referencia del objeto a transformar
`eje`: Referencia a una recta, eje de la reflexión
Devuelve: Referencia del objeto ya transformado
Ejemplo:
`(sea Polígono "P1" reflexión P d1)`

`prototipo (TipoDeObjeto nombre traslación objeto vector)`
`TipoDeObjeto`: Punto, Segmento, Recta, Semirrecta, Vector, Círculo, Arco, Polígono
`nombre`: Cadena de caracteres que designa al nombre del objeto
`objeto`: Referencia del objeto a transformar
`vector`: Referencia a un vector
Devuelve: Referencia del objeto ya transformado
Ejemplo:
`(sea Círculo "C1" traslación C v)`

##### Lugar geométrico

`prototipo (Lugar-geométrico nombre 2puntos m c)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`m`: Referencia a un punto móvil sobre una línea (recta, círculo, etc.)
`c`: Referencia a un punto fijo que depende del punto `m`
Devuelve: Referencia al lugar geométrico de `c` cuando `m` se mueve sobre la línea (recta, círculo, etc.)
Ejemplo:
`(Lugar-geométrico "locus1" 2puntos M I)`

##### Vector

`prototipo (Vector nombre 2puntos o e)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`o`: Referencia a un punto, origen del vector
`e`: Referencia a un punto, extremo del vector
Devuelve: Referencia a un vector.
Ejemplo:
`(sea Punto "B" libre 0 5)
(sea Punto "C" libre -1 -2)
(Vector "" 2puntos C B)`

##### Número

`prototipo (Número nombre libre x y v)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x,y`: Las coordenadas del número
`v`: El valor inicial del número
Devuelve: Referencia a un número libre.
Ejemplo:
`(sea Número "pi" libre 5 5 (acos -1))`

`prototipo (Número nombre longitud-segmento x y s)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x,y`: Las coordenadas del número
`s`: Referencia a un segmento
Devuelve: Referencia a un número, longitud de un segmento.
Ejemplo:
`(sea Número "l" longitud-segmento 5 5 S)`

`prototipo (Número nombre norma-vector x y v)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x,y`: Las coordenadas del número
`s`: Referencia a un vector
Devuelve: Referencia a un número, norma(longitud) de un vector.
Ejemplo:
`(sea Número "l" norma-vector 5 5 V)`

`prototipo (Número nombre punto-círculo x y p c)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x,y`: Las coordenadas del número
`p`: Referencia a un punto
`c`: Referencia a un círculo
Devuelve: Referencia a un número, distancia entre el punto y el círculo.
Ejemplo:
`(sea Número "l" punto-círculo 5 5 P C)`

`prototipo (Número nombre punto-recta x y p d)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x,y`: Las coordenadas del número
`p`: Referencia a un punto
`c`: Referencia a una recta
Devuelve: Referencia a un número, distancia entre el punto y la recta.
Ejemplo:
`(sea Número "d" punto-recta 5 5 M D1)`

`prototipo (Número nombre punto-punto x y p1 p2)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`x,y`: Las coordenadas del número
`p1`: Referencia a un punto
`p2`: Referencia a un punto
Devuelve: Referencia a un número, distancia entre los dos puntos.
Ejemplo:
`(sea Número "d" punto-punto 5 5 A B)`

`prototipo (Número nombre longitud-círculo x y c)`
`nombre`: Cadena de caracteres que designa al nombre del objeto.
`x,y`: Las coordenadas del número.
`c`: Referencia a un círculo.
Devuelve: Referencia a un número, perímetro del círculo.
Ejemplo:
`(sea Número "p" longitud-círculo 5 5 C)`

`prototipo (Número nombre pendiente-línea x y d)`
`nombre`: Cadena de caracteres que designa al nombre del objeto.
`x,y`: Las coordenadas del número.
`d`: Referencia a una recta.
Devuelve: Referencia a un número, pendiente de la recta dada.
Ejemplo:
`(sea Número "p" pendiente-línea 5 5 d1)`

`prototipo (Número nombre longitud-arco x y arc)`
`nombre`: Cadena de caracteres que designa al nombre del objeto.
`x,y`: Las coordenadas del número.
`arc`: Referencia a un arco de círculo.
Devuelve: Referencia a un número, longitud del arco de círculo dado.
Ejemplo:
`(sea Número "l" longitud-arco 5 5 ABC)`

##### Ángulo

`prototipo (Ángulo nombre geométrico A B C)`
`nombre`: Cadena de caracteres que designa al nombre del objeto
`A`: Referencia a un punto
`B`: Referencia a un punto, vértice del ángulo
`C`: Referencia a un punto
Devuelve: Referencia a un ángulo geométrico
Ejemplo:
`(sea Ángulo "a" geométrico A B C)`

|  |  | Definición de Objetos en una Figura |