Colorear regiones de la vista gráfica
En este artículo aprenderemos a colorear construcciones como esta, en la que las diferentes zonas no se corresponden con un objeto específico de GeoGebra.
Sectores circulares
Como sabemos, para colorear una región de la vista gráfica, podemos utilizar formas geométricas conocidas, como polígonos, circunferencias, elipses, etc.
Sin embargo, en ocasiones, necesitamos colorear una región del plano con partes curvas y rectas, agujeros, etc.
Para ello, podemos usar varios métodos, según el tipo de zona que necesitemos colorear:
Regiones limitadas por desigualdades
GeoGebra colorea automáticamente las soluciones de los sistemas de inecuaciones, con lo que si utilizamos uno para expresar nuestra región, podremos colorearla.
Por ejemplo, para una zona de una corona circular.
Una posibilidad para dibujar figuras curvas (sin usar circunferencias "blancas" para tapar la parte que no queremos) es utilizar desigualdades con las que dibujar coronas circulares.
A veces, puede ser incómodo obtener la expresión de las desigualdades, pero podemos recurrir a dibujar la corona centrada en el origen, y luego trasladarla y girarla.
Ejemplo I. Corona circular con desigualdades
Por ejemplo, podemos usar este código para definir las desigualdades
a1=Ángulo(Pizquierda) a2=Ángulo(Pderecha) x² + y² ≤ r1² ∧ x² + y² ≥ r2² ∧ (x < 0 ∨ y > tg(a2) x) ∧ (x > 0 ∨ y > tg(a1) x)
Ejemplo II. Zonas comunes a dos elipses
En ocasiones, puede ser difícil expresar explícitamente con desigualdades la región que queremos.
En ese caso, podemos utilizar los comandos de GeoGebra para obtenerla.
Concretamente, los comandos PrimerMiembro y SegundoMiembro.
Por ejemplo, vamos a colorear las zonas comunes a dos elipses, las zonas exteriores y, si queremos, la parte de la zona común que está por debajo de cierta recta.
En el applet, una vez definidas dos elipses y una recta, hemos definido las respectivas zonas como:
zona1: PrimerMiembro(elipse1) ≤ SegundoMiembro(elipse1)
∧ PrimerMiembro(elipse2) ≥ SegundoMiembro(elipse2)
zona2: PrimerMiembro(elipse2) ≤ SegundoMiembro(elipse2)
∧ PrimerMiembro(elipse1) ≥ SegundoMiembro(elipse1)
intersección: PrimerMiembro(elipse2) ≤ SegundoMiembro(elipse2)
∧ PrimerMiembro(elipse1) ≤ SegundoMiembro(elipse1)
intersección2: PrimerMiembro(elipse2) ≤ SegundoMiembro(elipse2)
∧ PrimerMiembro(elipse1) ≤ SegundoMiembro(elipse1)
∧ PrimerMiembro(recta1) - SegundoMiembro(recta1) < 0
(*) Método basado en las observaciones de Juan Vicente Sánchez.
Zona curva indeterminada
Cuando podamos trazar el borde la la zona a colorear utilizando un spline, podemos seleccionarlo, cambiar su color y su "opacidad", para que esa región quede coloreada.
Si el spline no termina en el mismo punto que comenzó, se incluirá un tramo recto uniéndolos.
s = Spline({A, B, C, D, E, F, G}, 3)
s2 = Spline({H, I, J, K, L, M, H})
Composición de figuras y lugares geométricos
En ocasiones, podemos utilizar un lugar geométrico para rellenar la zona del plano que queremos colorear, aunque este método no siempre colorea la región que nos interesa.
Para ello,
- Definimos el contorno de la figura.
- Situamos un punto, por ejemplo
P1
, sobre la figura. - Definimos otro punto que sea igual al anterior. Por ejemplo,
P2=P1
. - La zona para rellenar será
relleno = LugarGeométrico(P2, P1)
.
Ejemplo: zonas definidas con dos lugares geométricos
Por ejemplo, la figura del polígono, definido como
Pol
, con un agujero central, definido como circ
, se puede crear con los comandos
contorno = {Pol, circ}
P1 = Punto(contorno)
P2=P1
relleno = LugarGeométrico(P2, P1)
Creamos la figura inicial
En este applet tenemos una versión simplificada de la construcción que hemos visto al comienzo.
- Podemos modificar el número de
partes
en que dividimos cada semicírculo, y la cantidadn
de grupos de sectores. - Se ha dejado visible la vista algebraica, para que sea más sencillo analizar los elementos de la construcción.
- Puntos A y B para controlar el grosor de cada zona.
- Listas de puntos PA y PB, que determinan dónde comenzará cada una de las zonas iniciales. Las construiremos en el primer cuadrante.
- Las zonas iniciales,
Ec1
yEc2
que servirán para generar la figura a partir de rotaciones (podemos ocultarlas o hacerlas visibles pulsando en el círculo de la vista algebraica, junto su nombre). Se han generado utilizando desigualdades. - Cuatro listas Parte1,...,Parte4, que consisten en rotar las zonas iniciales. Las definimos de manera independiente para poder cambiar sus colores.
- Todas las desigualdades llevan el grosor de línea a 0 para que no se muestren los bordes.
- Generamos los
Bordes
mediante arcos y segmentos, de manera idependiente.
Elementos de la construcción
Aquí tenemos la definición de los elementos de esta construcción:
partes = 4
A = Punto(EjeX)
B = Punto(Semirrecta(A + (0.3, 0), A + (2, 0)))
n = 3
ang = π / partes
PA = Secuencia(A + t B, t, 0, n - 1)
PB = Secuencia(B + t B, t, 0, n - 1)
r: Recta((0, 0), (1; ang))
Ec1 = Zip((x(P1))² ≤ x² + y² ≤ (x(P2))² ∧ y > 0 ∧ PrimerMiembro(r) ≤ 0, P1, PA, P2, PB)
Ec2 = Zip((x(P1))² ≤ x² + y² ≤ (x(P2))² ∧ y > 0 ∧ PrimerMiembro(r) ≤ 0, P2, PA, P1, Añade((0, 0), PB))
Parte1 = Secuencia(Rota(Ec1, ang * 2t), t, 0, partes)
Parte2 = Secuencia(Rota(Ec2, ang * 2t), t, 0, partes)
Parte3 = Secuencia(Rota(Ec2, ang + ang * 2t), t, 0, partes)
Parte4 = Secuencia(Rota(Ec1, ang + ang * 2t), t, 0, partes)
Bordes = Zip(Circunferencia((0, 0), P), P, Encadena({PA, PB}))
Bordes2 = Secuencia(Rota(Segmento((0, 0), n B), ang t), t, 0, 2partes)