sábado, 18 de febrero de 2017

Condiciones angulares entre recta y circunferencia.

Repaso de Condiciones Angulares y Tangencia

El ángulo que forman dos rectas viene dado por el menor de ellos.
 
El ángulo que forman una recta y una circunferencia viene dado por el menor de los que forma la recta con la tangente a la circunferencia en el punto de intersección.

El ángulo que forman dos circunferencias es igual al ángulo que forman las tangentes en los puntos de intersección.


Condiciones angulares entre recta y circunferencia

Dada una  circunferencia de radio r, hallar el lugar geométrico de las circunferencias que forman un ángulo alfa con una recta dada s.

Para la solución, pensemos:


  • El ángulo que forman una recta con una circunferencia es el ángulo que forma la recta con la tangente a la circunferencia. Por tanto, una recta t que forme el ángulo alfa con la recta s tendrá la dirección de la recta tangente a la circunferencia.
  • El radio es perpendicular a la tangente, luego sobre el radio, y con centro en la intersección con s, llevamos la circunferencia conocida de radio r. Así obtenemos los centros de circunferencias de radio r, que forman con la recta s el ángulo alfa.
  • La solución, el lugar geométrico de circunferencias de radio r que forman con la recta s el ángulo alfa, son dos rectas LG1 y LG2, paralelas a s, a la distancia determinada por las intersecciones de la circunferencia con la perpendicular a la tangente.




domingo, 12 de febrero de 2017

Condiciones angulares entre dos circunferencias

En la siguiente imagen representamos los croquis de estudio de las condiciones angulares entre dos circunferencias.

- Ángulo 0 ó 180 ó 360º: Tangentes entre sí: La tangente es la misma para las dos circunferencias.
- Ángulo mayor que 0 y menor que 90: Con cualquier ángulo alfa.
- Ángulo 90º ó 270º: Perpendiculares entre sí: La tangentes son perpendiculares entre sí.



Visualización de las transformaciones

Una de las mayores dificultades para la comprensión de algunos conceptos es carecer de un modelo visual.
En la mayoría de aplicaciones de modelado 3D, encontramos una serie de iconos, que de igual modo que en una calculadora, por ejemplo el botón de raíz cuadrada, realiza todas las operaciones y nos da el resultado con sólo pulsarlo, nos ofrecen una representación visual, un modelo 3D.



Nos es fácil imaginar una traslación o un giro, pero la homotecia o la inversión, no son tán fáciles de comprender.

  • La traslación es un desplazamiento lineal.
  • El giro es el cambio de ángulo respecto a un centro determinado.
  • La homotecia equivale a escalar un objeto, cambiar su tamaño manteniendo la forma.
  • La simetría equivale al reflejo en un espejo.
  • La inversión equivale, por decirlo de manera comprensible, a dar la vuelta a la forma. Como ver la parte oculta de la pieza, como mostrar el otro lado de una prenda reversible, el "inside-out". Lo que es la inversión lo podemos comprender mejor, en el siguiente vídeo.
[1]
Transcripción y traducción del audio del vídeo.
  • Obtener el desarrollo de la forma del objeto se puede obtener en los programas 3D con el modificador UVW map, que adapta la apariencia del material elegido a una forma determinada (plana, cúbica, cilíndrica, esférica, etc).


Comprender estos conceptos geométricos es importante para el desarrollo de todo alumno del área de Expresión Gráfica, porque aprender Geometría, no consiste en localizar el botón que nos resuelva estas operaciones de transformación geométrica. Aprender Geometría conlleva saber analizarlas para comprender los mecanismos de la propia Naturaleza y de múltiples campos que requieren del dibujo, como la Arquitectura, cualquier Ingeniería o las Bellas Artes.


[1] Transcripción y traducción del audio del vídeo:

Möbius transformations are among the most fundamental mappings in Geometry with applications from brain mapping to relativity theory. A Möbius transformation sends each point on the plane to a corresponding point. They're built from four basic types: The simple translations; dilations; rotations; and inversions which turn the plane inside-out. Lines on the plane either remain lines or transform to circles and right angles stay true. In general a Möbius transformation can be a complicated combination of all four effects. The true unity of Mobius transformations is revealed by moving into the next dimension. Taking a cue from Bernhard Riemann we place a sphere above the plane. A light at the top shines through the spherical surface illuminating the plane. As the sphere moves, the points on the plane followed. When the sphere translates, so does the plane. Raising the sphere give dilation. Spin the sphere like a top and the plane rotates. Rotation about a horizontal axis corresponds to inversion. Even the most complicated Mobius transformations are revealed to be simple motions of the sphere. 

 Las transformaciones de Moebius se encuentran entre los "mapeos" más fundamentales en Geometría, con aplicaciones desde el cerebro hasta la teoría de la relatividad. Una transformación de Moebius hace corresponder un punto del plano con otro. Hay cuatro tipos: Traslaciones simples, escalado, rotación, inversión que vuelve el plano de adentro hacia afuera. Las líneas en el plano siguen siendo líneas o se transforman en círculos y los ángulos rectos permanecen igual. En general, una transformación de Moebius puede ser una combinación de los cuatro efectos. El verdadero significado de las transformaciones de Moebius se revela moviéndose a la siguiente dimensión. Siguiendo el ejemplo de Bernhard Riemann, colocamos una esfera sobre el plano. Una luz en la parte superior brilla a través de la superficie esférica iluminando el plano. A medida que la esfera se mueve, los puntos del plano, la siguen. Cuando la esfera se mueve, también lo hace el plano. Levantando la esfera, se obtiene el escalado. Si gira la esfera, el plano gira. La rotación alrededor de un eje horizontal corresponde a la inversión. Incluso las transformaciones de Moebius más complicadas se revelan como simples movimientos de la esfera.

 
 

sábado, 11 de febrero de 2017

Condiciones angulares

Determinación de circunferencias de radio conocido con condiciones angulares.


Condiciones angulares entre rectas y circunferencias
Condición de tangencia.

Antes de analizar cualquier problema geométrico, hemos de saber los grados de libertad de las figuras implicadas. Para determinar una circunferencia necesitaremos tres restricciones geométricas: dos restricciones de posición del centro de la circunferencia (x, y) y una restricción de tamaño (la longitud del radio).

Establecer condiciones angulares significa determinar el ángulo que debe formar la figura buscada con otra dada.
El ángulo que forma una curva con una recta es igual al que forma la tangente a la curva, con la recta en el punto de intersección. Una recta y una curva son tangentes, cuando el ángulo que forma la tangente a la curva con la recta, en el punto de tangencia, es cero. 

Si nos piden determinar circunferencias tangentes a una recta conociendo el radio de la circunferencia buscada, significa que tenemos dos datos: 1) el radio de la circunferencia y  2) la condición de tangencia. Queda un tercer grado de libertad sin definir, por tanto podemos encontrar infinitas circunferencias solución.
Supongamos que buscamos la circunferencia que pasa por un punto T de la recta r. Entonces, la solución es única.

Si la recta y la circunferencia son tangentes significa que la recta y el radio en el punto de intersección son perpendiculares. 

Los centros de circunferencias tangentes a la recta r están en rectas (LG) paralelas a la dada separadas de ella una distancia igual al radio de la circunferencia buscada. Como se precisa que ha de pasar por el punto T, la solución son dos circunferencias, las de línea continua roja. 

Condición angular cualquiera.
La condición angular puede ser distinta a la tangencia. Dicho de otro modo, el ángulo que forman recta y circunferencia puede ser distinto de cero y valer a.
Entonces ahora el problema consiste en determinar el lugar geométrico de circunferencias que pasen por P y formen con la recta r un angulo a.

La solución consistirá en hallar una circunferencia cuya tangente en el punto indicado P forme ese ángulo. El ángulo que forma una circunferencia con una recta es igual al ángulo que forma la tangente a la circunferencia, con la recta. Cualquier recta que pase por P y forme con r el ángulo a será una tangente de una circunferencia solución. 

Se piden las circunferencias que pasen por P y tengan esa tangente t. Como sabemos la longitud del radio de la circunferencia solución, basta llevarla en dirección perpendicular a la tangente, por el punto P. Hay dos circunferencias solución. Pero cualquier circunferencia de ese radio cuyo centro estuviera en las rectas LG, paralelas a r, formaría ese mismo ángulo alfa con la recta r.

Condiciones angulares entre circunferencias.
Condición de tangencia.

El ángulo que forman dos curvas es el que forman las tangentes a las curvas en los puntos de intersección. Dos circunferencias son tangentes cuando las rectas tangentes en el punto de intersección, forman un ángulo de valor cero, es decir, cuando tienen la misma tangente.

Partimos de una circunferencia de radio R1, un punto T de ella. Nos piden hallar la circunferencia que sea tangente a la primera en T y que tenga radio R2. 


Si la condición angular entre las circunferencias es de tangencia en un punto T, significa que la tangente en T a la circunferencia c1 y la recta tangente en T a la circunferencia buscada, serán la misma. 
La recta tangente  y el radio del centro al punto de tangencia, son perpendiculares.
Por tanto, el centro de la circunferencia buscada estará en la misma recta que une el centro de la circunferencia dada, con el punto de tangencia.

Como sabemos el radio R2 de la circunferencia buscada, basta llevarlo sobre esa recta OT.

Encontramos dos circunferencias solución.
Los lugares geométricos de los centros de las circunferencias solución, son dos circunferencias concéntricas a la dada, como vemos en la siguiente imagen y en la animación posterior,  una interior y otra exterior.





Condición angular cualquiera.
Si la condición es un ángulo cualquiera alfa, significa que el ángulo que forman las tangentes a las respectivas circunferencias, es el ángulo indicado alfa.
Partimos entonces como datos de una circunferencia conocido su centro y su radio, y nos indican el ángulo que debe formar otra circunferencia de radio conocido R2 con la primera.

La recta tangente a una cualquiera de las circunferencias buscadas, formará un ángulo a  con una tangente  a la circunferencia dada. Así pues, eso es lo primero que hacemos, determinar una tangente t cualquiera a c. El ángulo entre circunferencias es el ángulo entre sus tangentes en el punto de tangencia. Por tanto, en T llevamos el ángulo a  que deben formar, que es un dato.  Hay dos soluciones posibles según se lleve el ángulo a un lado u otro de la tangente.

Sabemos que el radio de la circunferencia buscada será perpendicular a la tangente encontrada.
Determinamos así las cuatro circunferencias buscadas.



Si no se especifica que las circunferencias pasen por el punto T, cualquier circunferencia que tenga su centro en las circunferencias concéntricas a la dada y con radios OO1 = R+R1 y OO1' = R-R1, sería la solución: Dos circunferencias de los lugares geométricos de los centros de circunferencias que forman el ángulo alfa con la circunferencia dada. 






Aplicación a problemas

Si se conoce el radio de la circunferencia buscada, el lugar geométrico anterior, se concreta en uno único: Determinar la circunferencia de radio R que:
  • tenga la condición angular dada y que pase por dos puntos.
  • pase por un punto y sea tangente a una recta
  • pase por un punto y sea tangente a la circunferencia dada.
  • pase por un punto y forme un ángulo con una recta
  • pase por un punto y forme un ángulo con una circunferencia.
  • sea tangente a dos rectas
  • sea tangente a dos circunferencias
  • sea tangente a una recta y una circunferencia
  • forme un ángulo con una recta y sea tangente a otra recta
  • forme un ángulo con una circunferencia y sea tangente a otra recta
  • forme un ángulo con una recta y otro con otra recta
  • forme un ángulo con una circunferencia y otro con otra recta
  • forme un ángulo con una circunferencia y otro con otra circunferencia
Ejemplo de aplicación. 
Determinar las circunferencias de radio conocido que son tangentes a una recta y a una circunferencia.

La condición de tangencia a la recta genera dos lugares geométricos: las rectas paralelas a r, LG1 y LG2, separadas el radio R de r.

La condición de tangencia de la circunferencia dada con la circunferencia buscada genera dos circunferencias circunscritas, LG3 y LG4.

Los puntos de intersección de estos lugares geométricos serán los centros de las circunferencias buscadas.


Un lugar geométrico es pues, un conjunto de puntos que cumplen unas determinadas condiciones o propiedades geométricas.
Completando lo dicho respecto a lugares geométricos, podemos considerar:
- una recta como una circunferencia de radio infinito.
- un punto, como una circunferencia de radio nulo.

miércoles, 8 de febrero de 2017

Etiqueta (API) Canvas


Las etiquetas <canvas> y <svg> permiten crear un espacio para dibujar programando en él.
Vemos a continuación cuatro tutoriales para ayudarnos a aprender a dibujar programando directamente en este lenguaje html.

Tutorial 1: canvas y javascript


El videotutorial siguiente nos explica cómo crear un icono personalizado usando únicamente Canvas y Javascript.


Trabajamos dentro de body:

1. Canvas

Creamos la etiqueta canvas y entre la de apertura y la de cierre indicamos "Tu navegador no soporta canvas". Dentro de la de inicio, describimos el canvas: podemos determinar nombre (id), tamaño ancho x alto, estilo (borde y color).

2. Script

Creamos la etiqueta script. Dentro creamos dos variables, var. Una será la de .getElementById y la otra será la de .getcontext.

3. Círculos .arc()

Seguimos dentro de las etiquetas de apertura y cierre Script.
Creamos los círculos, con  el bloque de comandos siguiente:

  • fillStyle="color";
  • beginPath();
  • arc(xcentro,ycentro,radio,Math.PI,Math.PI*2,true);
  • closePath();
  • fill();

El resultado es el siguiente:

                                              

Tutorial 2

En otro tutorial había variantes, tal como explico a continuación:
Dentro de la especificación del Canvas de HTML5 no existe ningún método que nos dibuje un círculo directamente, sino que nos ofrece un método que dibuja arcos, con la función .arc()

"void arc (in float x, in float y, in float radius, in float starAngle, in float endAngle, in boolean anticlockwise Optional);

180 grados = PI radianes
Si queremos trabajar en grados, hay que utilizar la siguiente ecuación (PI/180)*grados
Para especificar 90º sería: (Pi/180)*90

Para trazar un arco en la dirección de las agujas del reloj, damos el valor "false".
Así un arco que vaya de 0 a 270 grados se escribiría:
ctx.arc (100,70,50,0,(Math.PI/180)*270, true);

Un arco completo tendría 360 grados:
ctx.arc(100,70,50,0,(Math.PI/180)*360,true);

3.1. Relleno: .fillStyle y .fill()

Debajo del arco, indicamos que esté rellenado:
Propiedad de relleno (color): ctx.fillStyle="#f99";
Método de relleno (función): ctx.fill();

3.2. Borde al círculo:.strokeStyle, .lineWidth, .stroke

Propiedad de color :  ctx.strokeStyle="#f00";
Propiedad de grosor: ctx.lineWidth=10;
Método línea: ctx.stroke();

Así podemos hacer imágenes como ésta:


Tutorial 3

En este tutorial, vemos:

En Body,
creamos la etiqueta <section id=" "> que llamaremos "dibujo".
Dentro, creamos la etiqueta <canvas> que llamaremos "lienzo". Dentro de la etiqueta de apertura incluiremos id=" " width=" " y height=" ". Las comillas sirven para poder escribir dentro con espacios.
La diferencia mayor entre <canvas> y <svg> es que no todos los navegadores soportan <canvas>, por eso suele usarse más svg y en caso de usar <canvas>, conviene poner el aviso en texto "Su navegador no soporta el elemento html5 canvas entre las etiquetas de apertura y cierre de canvas.


Podemos modificar el canvas escribiendo las variables siguientes dentro de la etiqueta de apertura:
1. Color de contorno: StrokeStyle
2. Color de relleno: FillStyle
3. Transparencia de las figuras del lienzo 0 (opaco) a 1 (transparente): globalAlpah


En Head,
entre las etiquetas de apertura y cierre de Head, debajo de la etiqueta <Title>, vamos a abrir dos etiquetas distintas: Style y Script. Cada una con su apertura y su cierre.

<Style> es la hoja de estilo. Emplea lenguaje .CSS

<Script> dibuja las figuras en lenguaje JavaScript. Hay que indicar los comandos que se ven en la imagen:


En JavaScript, para dibujar cada figura debemos empezar por el nombre del lugar donde la pondremos (lienzo.) seguido de los comandos siguientes: 
      beginPath(); comienza la figura
      closePath(): termina la figura

Y dentro de cada Path, la función matemática que corresponda (siempre delante lienzo.):
      MoveTo (x, y): mueve el cursor lápiz a las coordenadas marcadas.
      LineTo (x,y): genera la línea recta desde la posición inicial, a la indicada en LineTO.
      Rect (x,y, ancho, alto): genera un rectángulo.
      Arc (x, y, radio, ángulo inicial en radianes, ángulo final, dirección)
      BezierCurveTo (a, b, c, d, x, y): genera una curva bezier cúbica
      QuadraticCurveTo (a, b, x, y): genera una curva bezier cuadrática.
Así hemos indicado qué tipo de figura queremos.


Para que el navegador dibuje las figuras que le acabamos de indicar, falta decirle que lo haga. Y podemos hacerlo, de tres formas:
      - Stroke(): contorno
      - Fill() : Silueta, relleno
     - Clip(): Máscara, con la forma indicada, de modo que, de lo dibujado, sólo se verá lo que queda dentro de esa máscara; es como una ventana, que deja ver sólo lo que haya debajo de esa forma y dentro de ella. Oculta el resto.


Tutorial 4.

5. Otro tutorial:

En el siguiente tutorial vemos formas básicas más en detalle:

Rectángulos:

En el body:
Primero, definimos nombre, ancho, alto, estilo - borde y color- del canvas.
Luego, en la etiqueta script definimos las variables "getElementByID" y "getContext", tal como vemos en la imagen siguiente, y pasamos a indicar las formas rectangulares, tal como vemos en las imágenes siguientes:






Línea:


Curvas Bezier:
                                          








Inkscape-Visual Code


En Visual Code podemos abrir dibujos creados en Inkscape. Visual Code los traduce automáticamente a lenguaje HTML. Vemos el proceso a continuación. 

Podemos dibujar programando, escribiendo directamente en lenguaje HTML, en aplicaciones de programación como Visual Studio Code, mediante etiquetas <svg> o <canvas>. Hay editores online como el que ofrece la página w3schools.

Pero podemos dibujar en aplicaciones de dibujo como Inkscape (o Corel, o Illustrator, o Indesign, etc, para dibujos vectoriales; Gimp, Photoshop, Paint etc para dibujos ráster) y luego ver el lenguaje html abriendo el archivo de dibujo en Visual Code.

El proceso es: Primero dibujar y luego programar. No escribirlo y luego verlo.

Primero en Inkscape:

  • Configuramos la página (ancho, alto...).
  • Dibujamos unas figuras: línea, rectángulo, círculo, elipse... (pulsando control se escala uniformemente; pulsando alt también, pero con centro en el lugar donde hemos pinchado).
  • Botón derecho, propiedades del objeto:
  • ID: sustituimos el nombre por defecto (rect4493) por el que queramos, pero sin acentos ni espacios, separando las palabras escribiendo la primera de cada una, con mayúsculas. Esto es el lenguaje "CamelCase" (es código JavaScript).



Guardamos el archivo como:

  • Formato Inkscape (svg)
  • Formato Plano
  • Formato Optimizado
  • Formato Dxf


Luego, en Visual Studio Code, instalamos el plugin que nos permitirá ver los resultados gráficos del lenguaje html.

  • En el Visual Code, presionamos el icono Extensiones.


Buscamos el pluggin svg viewer y lo instalamos.

A continuación sale un botón para restaurar la sesión. Le damos. 
Abrimos los archivos que hemos creado en Inkscape.

Ahí podemos observar y comparar los códigos.
  • Vemos que en el formato optimizado, se pierden datos importantes del archivo original, como la ID de los objetos.
  • El formato dxf es demasiado largo.
  • El formato Inkscape o el plano serían los más acertados para los archivos creados con Inkscape.

Podemos ver las formas gráficas, yendo al menú "ver", "paleta de comandos", escribimos "svg"y elegimos "svg viewer". Se abrirá una ventana, el visor gráfico.

Cualquier modificación que hagamos en Visual Code, se modificará en el visor y en el archivo original, automáticamente.



Etiqueta Meta Charset: Acentos

Para que el lenguaje HTML 5 represente bien los acentos y otros caracteres debemos escribir la etiqueta:  <meta charset ="utf-8">   justo debajo de head. De este modo  el navegador conocerá la codificación de caracteres utilizada, antes de que comience a procesar nada.

Además, dentro de los símbolos de la etiqueta de apertura html debemos indicar los parámetros "lang" de "language" (idioma, en inglés) y "dir", de "direction" (refiriéndose a letras), como vemos en la siguiente imagen:


Haciendo esto nos aseguramos que la página se ve correctamente.
En HTML5 la codificación por defecto si no se especifica nada es UTF-8.
En HTML 4 la codificación utilizada por defecto es ISO-8859-1 (latin-1). Con esta codificación todos los caracteres que no aparezcan en el alfabeto latino deberán ser escritos como entidad HTML. Por ejemplo,

  • &aacute; para la á,
  • &ntilde; para la ñ.

Etiqueta SVG para dibujos vectoriales

Una de las principales actividades en programación gráfica es dibujar programando. Igual que el álgebra representa por escrito figuras geométricas, la programación permite hacer esto con otros idiomas que entienden los ordenadores.

Para ello podemos utilizar las etiquetas "svg" y "canvas".

Vamos a explicar la etiqueta "svg", siguiendo el siguiente tutorial. SVG son las siglas de Scalable Vector Graphics. Los vectores escalables, se recalculan en cada zoom o movimiento del ratón, por lo que siempre se verán nítidos, a diferencia de las imágenes ráster o de mapas de bits, cuya visualización depende de la resolución. Aquí se trata de vectores, funciones matemáticas y no pierden nitidez.

La etiqueta <svg> crea un espacio de dibujo, un lienzo, dentro de la página, y permite dibujar figuras vectoriales en HTML5. La escribimos dentro del Body. Entre las etiquetas de apertura y cierre de <svg> metemos otras etiquetas de las figuras que queremos representar, cada una con sus características, como vemos en la siguiente imagen:


que en el navegador se verá como sigue:

Elemento Ruta (svg Path)

El elemento <ruta> se utiliza para definir una trayectoria. Los comandos siguientes modifican la trayectoria:
M  = moveto
L   = lineto
H   = horizontal lineto
V   = line to verticales
C   = curveTo
S   =  curveTo suave
Q   =  curva cuadrática de Bézier
T   = suave curveTo cuadrática de Bézier
A   = arco elíptico.
Z   = closePath.

Por ejemplo:


Las curvas Bézier se utilizan para modelar curvas suaves que se pueden ampliar de forma indefinida. En general se seleccionan dos puntos extremos y uno o dos puntos de control. Si sólo hay un punto de control se llama curva "cuadrática" .
En la imagen siguiente vemos en azul una curva Bezier con A y C como puntos inicial y final y B punto de control.