Rango Finito

fotoscódigoobservatorioshermanocerdo temas plots

javascript

Tercer triángulo

Dado un triángulo y un punto arbitrario dentro del triángulo, trace las perpendiculares a los lados del triángulo que pasan por el punto elegido. Cada perpendicular corta uno de los lados en un punto. Use esos puntos para construir otro triángulo y repita el paso anterior usando el mismo punto. Así construirá un segundo triángulo. Si repite una vez más el procedimiento, obtendrá un tercer triángulo anidado. Se puede demostrar (Ejercicio: Demostrarlo) que este tercer triángulo es geométricamente semejante al triángulo inicial (es decir, el producto de transladarlo, rotarlo, reflejarlo y agrandarlo o achicarlo proporcionalmente — si sirve de algo, recuerde que dos triángulos son semejantes si tienen los mismos ángulos interiores). Aquí hay un ejemplo: Esto sale si su navegador necesita reconsiderar urgentemente su lugar en el mundo. Use Firefox o Chrome.

El triángulo rojo es semejante al triángulo negro. Con el mouse puede mover tanto los vértices del triángulo inicial como el punto interior para intentar convencerse de que la semejanza no depende ni del tipo de triángulo original ni del punto elegido.

Como mi javascript (aquí el código) es torpe, no he logrado encontrar una forma buena de evitar que el punto elegido quede fuera del triángulo (por cierto: si el punto se sale del marco, recargue (Ejercicio/Duda: ¿Cómo evitar que el punto abandone el marco?)). Sin embargo, jugando con él, noté que realmente el resultado es cierto incluso si el punto está afuera del triángulo inicial y la construcción se replantea usando las líneas que generan los lados del triángulo en lugar de los lados en sí (que es como lo había calculado, de cualquier modo). Haga la prueba: saque el punto del triángulo. Afuera del triángulo original el triángulo rojo crece aunque las limitaciones de espacio me impiden constatar si alcanza un tamaño máximo (o si sigue creciendo hasta obtener el tamaño del triángulo original en el límite, por ejemplo (o si crece ilimitadamente)). Si el punto se restringe de nuevo al triángulo original, hay un tamaño máximo posible para el tercer triángulo (Ejercicio: ¿Dónde se obtiene? ¿De qué depende? ¿Pasa lo mismo afuera?). Otra duda/ejercicio: ¿En qué puntos se logra que el tercer triángulo tenga exactamente la misma posición que el triángulo original (es decir, sólo transladado y escalado, sin rotarlo ni reflejarlo)?

Aparentemente, este fenómeno es cierto también para polígonos (asumo convexos (?)) de cualquier número de lados: con un polígono de N lados se requiere repetir el procedimiento N veces para obtener un polígono semejante al original. (Ejercicio: ¿Cuál es la demostración general?)

Encontré este resultado en Futility Closet, donde transcriben un poema de una tal Mary Pedoe que usa la construcción como inspiración:

Begin with any point called P
(That all-too-common name for points),
Whence, on three-sided ABC
We drop, to make right-angled joints,
Three several plumb-lines, whence ’tis clear
A new triangle should appear.

A ghostly Phoenix on its nest
Brooding a chick among the ashes,
ABC bears within its breast
A younger ABC (with dashes):
A figure destined, not to burn,
But to be dropped on in its turn.

By going through these motions thrice
We fashion two triangles more,
And call them ABC (dashed twice)
And thrice bedashed, but now we score
A chick indeed! Cry gully, gully!
(One moment! I’ll explain more fully.)

The fourth triangle ABC,
Though decadently small in size,
Presents a form that perfectly
Resembles, e’en to casual eyes
Its first progenitor. They are
In strict proportion similar.

Ejercicio: traducirlo.

Cañón-Aspiradora Cíclica

James Paterson está haciendo un video-diario y tutorial de programación muy detallado del desarrollo de un juguetito en HTML5/CSS/JS. Perfecto para programadores eternamente principiantes como yo. (Vía Creative Applications.)

Bogotá en bola

El ejercicio era hacer una versión automatizada y animada de esto usando la mezcla HTML5+JScript (de la que sabía/entendía muy poco). Bogotá en bola representa, usando bolas, algunos datos sobre Bogotá (recopilados mayoritariamente por Miguel con ayuda de sus contactos en el bajo mundo burocrático — estamos en el proceso de aclarar las fuentes) a nivel de localidades. En varios de los gráficos (o en las transiciones entre uno y otro) quedan en evidencia las disparidades y contradicciones de la ciudad. En un área relativamente pequeña caben muchas ciudades con características dispares (casi universos paralelos) y estas disparidades a su vez generan barreras (algunas físicas y otras más sutiles y poderosas) que refuerzan las diferencias.

*

Aporte de homicidios por localidad al total de la ciudad en 2011

Aunque puse una leyenda explicativa en la esquina inferior izquierda de cada gráfico, tal vez valga la pena explicar mejor qué quiere decir cada una. Si dice “Aporte porcentual por localidad al total de la ciudad” entonces la bola sobre cada localidad representa (ejem) el porcentaje que la localidad aporta al conteo total de la ciudad. Si, en cambio, dice “Porcentaje sobre el total en la localidad” entonces cada bola representa el porcentaje de población en la localidad con tal o cual característica sobre el total de la localidad. Así, el grafo de Hogares con teléfono similar al de Población (porque el aporte por localidad al total de la ciudad es muy parecido al aporte de población total) pero en el grafo de Teléfono (relativo) (del segundo tipo) las bolas son todas de tamaño similar, porque el porcentaje de teléfonos por localidad es casi uniforme en toda la ciudad (con internet, por ejemplo, ya no es así).

*

Para representar la ciudad por localidades la describimos con un grafo de contigüidad (entre la localidad A y la localidad B hay un vértice si comparten una frontera) y calculamos la disposición del grafo utilizando la librería arbor.js, que determina la posición de los nodos (asunto en el que francamente no quería pensar) de acuerdo a un modelo físico. Es muy práctica (aunque tal vez un poco pesada). Un primer problema de esta aproximación es que La Candelaria está totalmente rodeada por Santa Fe y por tanto en el grafo se vuelve una cola. Otro problema obvio es el siguiente: dado que la configuración inicial de nodos es semi-aleatoria, existe la posibilidad de que el grafo generado sea una imagen especular del grafo deseado (o que salga enredado). Para compensar el grafo admite la opción de ser reconfigurado moviendo nodos como si fuera de caucho. Esto permite, con un poco de maña, adecuar la ciudad a la imagen preferida por el usuario. (Una posible tarea que surge de acá es cómo generar y describir con algo parecido a arbor.js grafos que sean orientados sobre una superficie bidimensional. No he mirado.)

Tasa de homicidios (i.e. número de homicidios por cada 100 Khab) por localidad en 2011