Dibujar en isométrica a partir de vistas (II) Rampas

17 octubre 2019

Segunda entrega para ver cómo dibujamos de manera SIS-TE-MÁ-TI-CA (y no tirando de talento) piezas en isométrica a partir de las vistas.

De nuevo nuestro agradecimiento a

http://www.educacionplastica.net/index.html

El primer post lo tenéis aquí:


Dibujar vistas a partir de perspectiva. Nivel elemental y aristas ocultas

17 octubre 2019

Buenas.

Aquí os dejo un vídeo contando cómo dibujar las vistas de una pieza a partir de un dibujo en perspectiva intentando ser lo más sistemático posible, para no tener que suponer la visión espacial y que nuestros protocolos nos lleven más allá de nuestras habilidades 😉

De nuevo, agradecemos los estupendos recursos de

http://www.educacionplastica.net/

Aquí tenéis el nivel elemental para los que necesiten empezar desde cero.

Aquí tenéis cómo entender las aristas ocultas.


Dibujar en perspectiva isométrica a partir de vistas

16 octubre 2019

Buenas pandilla. Ando con mis chavales enseñándoles elementos básicos de dibujo técnico y una de las cosas que más les cuesta es dibujar en perspectiva a partir de las vistas de una pieza.

En gran parte tiene que ver con que no siguen un sistema (dadme protocolos!) e intentan visualizar la figura y luego pintarla como pueden. Estupendo para quien tenga mucha visión espacial, pero, incluso este, acabará encontrando un límite.

Lo bonito del asunto es usar un sistema en el que aplicando pasos pueda dibujarla sin tener que verla antes.

Aquí os dejo un ejemplo de cómo se lo cuento. Os recuerdo que es el nivel básico, para lidiar con rampas y facetas curvas tengo otros protocolos 😉

Agradecido y dedicado a la gente que hay detrás de la excepcional página:

http://www.educacionplastica.net/index.html

(Me vais a disculpar que justo al principio digo “la cara de la izquierda y de la derecha” al revés… también meto alguna que otra pata más adelante… pero creo que se entiende bien)

Sigue la serie en (cuando se publique…):

https://lacienciaparatodos.wordpress.com/2019/10/17/dibujar-en-isometrica-a-partir-de-vistas-ii-rampas/


Manual de prácticas para Python. Desde CERO.

10 octubre 2019

Aquí os dejo un manual de prácticas de Python pensadas para aprender sin tener ningún conocimiento previo.

Pensada para alumnos de bachillerato, pero invitamos a cualquiera que quiera iniciarse a que lo pruebe 😉

Estas cosas que se comparten para el bien de todos tienen un alto coste en tiempo y esfuerzo, así que también se agradece mucho la difusión y aportaciones que queráis hacer. En la imagen se accede a mi cuenta de ko-fi

Y aquí tenéis el manual


La magia del nonius. Medir más allá de lo posible.

10 septiembre 2019

El nonius es uno de esos “cacharros” que parecen magia por mucho que conozcas las reglas que lo rigen o seas capaz incluso de construirlos, lo mismo que pasa con el giróscopo.

Lo primero que tenemos que saber hacer es dividir un segmento en el número de veces que queramos, aunque numéricamente no sea demasiado sencillo.

Por ejemplo, dividir un segmento cualquiera en un número de partes arbitrario. Aquí podéis verlo, es sencillo.

Ahora, asumiendo que podemos hacer eso, vamos a por el nonius.

Imagina que tenemos una regla usual que llega hasta los milímetros y que estamos interesados en poder medir DÉCIMAS de milímetro.

El truco consiste en añadir una regla móvil de la siguiente manera.

Fíjate que lo que hemos hecho es tomar NUEVE milímetros y dividirlo en DIEZ partes, algo que podemos hacer con el truco del que acabamos de hablar. Hasta ahora no hemos necesitado ningún instrumento más preciso que nuestra regla convencional de partida.

La regla inferior es la móvil. A partir de ahora vamos a empezar a moverla y a observar cuidadosamente lo que ocurre.

Todas las figuras que vamos a usar son de Dnu72 y pueden encontrarse en esta página de la Wikipedia.

Primero, y dado que “nos falta” un milímetro, verás que sólo nos coincide la primera línea de la regla inferior con una de la regla superior. Es resto están un poco desplazadas.

¿Qué ocurre si hago coincidir el 10 de ambas escalas? Pues sería una situación parecida, coincidirían las líneas del 10, pero ninguna otra. ¿Cuánta distancia habríamos movido la regla inferior? Un milímetro, que es justo lo que habíamos querido quedarnos cortos.

¿Qué pasa en las situaciones intermedias? Pues si pongo la regla en la posición inicial y la desplazo un poco a la izquierda, coincidirá la línea del “uno de abajo” con una de las de arriba, como podéis ver aquí. Y es la ÚNICA que coincide.

Si lo muevo un poquito más, ahora coincidirá la “línea del dos” y, de nuevo, es la única que coincide. Al “faltar” un milímetro en la escala móvil, sólo nos va a coincidir una línea cada vez.

Total, que según nos vamos moviendo, nos irán coincidiendo las líneas una a una hasta llegar a que nos coincidan los dos 10.

Aquí, por ejemplo, coincide la línea del seis (recuerda, nos importa la línea que coincide abajo, no con quien coincide arriba. La de arriba es la línea de los siete milímetros, pero ¡la de abajo es la del seis!)

Resumamos, porque acaba de producirse la MAGIA.

  • Desde que nos coinciden los ceros hasta que nos coinciden los 10, la distancia recorrida es un milímetro.
  • Durante ese movimiento van coincidiendo las diez líneas dibujadas, una a una.
  • Que están igualmente espaciadas…

Pues, compañeros, cada vez que te coincida una línea habrás avanzado ¡UNA DÉCIMA DE MILÍMETRO!

¿No es impresionante?

Con una regla que sólo puede medir milímetros y un poco de ingenio, puedo medir ¡décimas de milímetro!

Aquí tenéis un simulador en el que podréis ver cómo sucede lo increíble

Este artilugio que se llama nonius va acoplado a multitud de aparatos de medida, quizá el más común, el calibre.

Es una herramienta imprescindible en cualquier taller, como ves, lista para medir exteriores (abajo), interiores (arriba) y profundidades (derecha), leyendo la medida siempre en la misma escala.

De la página del simulador os pongo esta captura para contaros cómo se lee la medida.

La manera de leerlo es la siguiente. Primero leemos los milímetros que llevamos pasados, es decir, que ya haya superado el cero de la regla móvil. En nuestro caso 12.

Después sumamos tantas décimas como el número de línea de la escala inferior que coincida con una línea de arriba. En nuestro caso 4.

Así que esta medida son 12,4 mm.

Si te fijas en el dibujo, efectivamente el cero ha pasado del 12 y está ligeramente por debajo de la mitad de ese milímetro.

Por supuesto os he contado una versión sencilla para que entendáis el ingenioso artificio. El que quiera ver diferentes maneras de implementarlo para obtener distintos alcances en la medida y sus fórmulas generales, puede consultar la entrada de Wikipedia, donde encontrará un detallado análisis.


SPSS y Python, cómo leer y escribir datos

5 septiembre 2019

SPSS es un programa para hacer estadística bastante popular (y propietario, IBM).

Por supuesto tiene muchas funciones de las más comunes integradas y, como en cualquier software, si tienes experiencia no es difícil ir bastante rápido en las tareas más comunes.

El problema es cuando quieres hacer algo no tan común, pero para eso se pueden hacer pequeños “pedazos de código”, scripts, en lenguajes como Python y r, siempre que estén instalados los plugins correspondientes.

Me veo en estas cosas por echar un cable (como tantas veces me lo echan a mí). La cuestión es que para calcular el valor de una variable en un registro necesitábamos acceder a otras variables de OTROS registros y hacer algunos bucles. Algo trivial en Python, pero que no acabábamos de ver cómo hacer en SPSS (quizá mi desconocimiento). El caso es que al final, después de unas cuantas vueltas y de consultar en varios sitios, conseguí encontrar la manera de leer una variable, convertirla en una lista (lo que me permite hacer los cálculos en Python que desee) y luego escribir otra lista en la variable que quería calcular.

Quizá os parezca sencillo… pero a mí me hubiera encantado encontrar este post el tiempo que anduve buscando, así que lo escribo.


BEGIN PROGRAM.

import spss                                #cabecera
spss.StartDataStep()
datasetObj = spss.Dataset()
numColumnaVar1=0               
#aquí tienes que poner el número de la columna en la que está cada variable, empezando a contar por 0
numColumnaVar2=1
numColumnaVarResultado=2
var1=[]                               
#inicializamos los arrays vacíos para luego usar el método append e ir rellenando
var2=[]
varResultado=[]
for i in range(len(datasetObj.cases)):               
#leemos ambas variables (los índices empiezan en cero)
    var1.append(datasetObj.cases[i,numeroColumnaVar1][0])   
#cases lee como si fuera un vector de un componente, así que al poner [0] elegimos el primer elemento
    var2.append(datasetObj.cases[i,numeroColumnaVar2][0])    

AQUÍ HACEMOS EN PYTHON LO QUE QUERAMOS CON LAS LISTAS QUE HEMOS CREADO var1, var2, etc.

FINALIZAMOS SUBIENDO LOS VALORES A LA VARIABLE VACÍA EN LA TERCERA COLUMNA QUE HABREMOS CREADO A MANO EN SPSS

#escribo la variable en la tabla usando el varResultado
for i in range(len(datasetObj.cases)):                   
#i es un índice que recorrerá todos los registros
    datasetObj.cases[i,numerocolumnaVarResultado]=varResultado[i]            
spss.EndDataStep()                    #finalización
END PROGRAM.

Del código que ves escrito sólo tienes que tocar los números de columna origen y destino, recordando que empieza la cuenta en cero.

numColumnaVar1=0                
numColumnaVar2=1
numColumnaVarResultado=2
Por supuesto, tendrás que repetir el código si quieres “tomar” más variables de la base de datos o si quieres al final escribir más variables como resultado.
Paso a explicaros el código paso a paso.
Todo el código está encapsulado entre las instrucciones BEGIN PROGRAM. y END PROGRAM.
“Cabecera”
import spss                                
spss.StartDataStep()
datasetObj = spss.Dataset()
Con estas instrucciones conseguimos que Python pueda tratar el conjunto de datos como un objeto, con sus correspondientes atributos (propiedades) y métodos (funciones), que serán las que usemos para extraer los valores, primero ,y subirlos, después.
Identificación de variables por columna
numColumnaVar1=0                
numColumnaVar2=1
numColumnaVarResultado=2
Usamos estas variables numéricas para luego decirle al programa de qué variables de SPSS tiene que leer los datos y en cuál escribirlos. Ojo en esta última, porque, si te equivocas, vas a sobreescribir una variable en la que podrías tener datos. Asegúrate de que está vacía y de elegir bien los números ANTES de ejecutar el código.
Lectura de datos.
for i in range(len(datasetObj.cases)):                
    var1.append(datasetObj.cases[i,numeroColumnaVar1][0]) 
Hacemos un bucle con tantas iteraciones como longitud (len) tenga la base de datos.
Añadimos cada lectura en una posición de la lista que habíamos creado para ello (var1).
Importante el [0] del final, porque cada lectura la toma como un lista, aunque sólo tenga un componente. Al añadir esto, le decimos que lea el valor de la variable i (lo tomará como lista), que elija el primer valor de esa lista de números, que sólo tiene uno (!) (el número [0]) y que lo guarde como elemento i de nuestra lista, la var1.
Si no pusiéramos que cogiera sólo un elemento nos quedaría un vector de vectores: var1= ([35],[22],[17]…)
Cuando ya tenemos las variables en Python, ya tenemos toda la libertad y facilidad que nos da programar en un lenguaje tan versátil.
Subir datos
Después de haber hecho todas las perrerías que quieras en Python, sólo te queda subir los datos que has ido añadiendo a varResultado.
Como definimos varResultado como un array vacío, en tu código acuérdate de llenarla usando el método append. Si esto te viene mal o te da problemas, inicia el array dando valores.
for i in range(len(datasetObj.cases)):                   
    datasetObj.cases[i,numerocolumnaVarResultado]=varResultado[i]
Así que hacemos un bucle en el que vamos escribiendo en cada registro (hasta completar la longitud de la base de datos) los valores calculados, en la columna elegida al principio. No tiene por qué ser sólo una variable, podéis subir tantos resultados como deseéis.
OJO DE NUEVO, que si escribís esto en una variable en la que ya tengáis datos, los perderéis.
Cerrando
spss.EndDataStep()                    #finalización
END PROGRAM.
Con esto se completa el script.
Es un código muy simple, también se pueden crear y dar formato a las variables desde Python, pero creo que un usuario básico de SPSS hace eso con la gorra y meter esto por aquí os haría más lío.
Como lo más probable es que no tengáis que crear un conjunto grande de variables, estamos hablando de que tardáis un minuto. Si necesitas automatizarlo, porque sean muchas, considera hacerlo desde Python o desde r.
El detalle de todo esto y muchas más cosas podéis encontrarlas aquí en la Python Reference Guide for IBM SPSS Statistics
Lo nuestro está en la página 55 y siguientes.
Espero que os sirva.
Juntos somos más.

Inteligencia artificial, creatividad y miedo

9 abril 2019

Fuente: Wikipedia

La inteligencia artificial provoca muchos miedos infundados mientras, curiosamente, se dejan de tomar precauciones para situaciones peligrosas más que predecibles.

Hay personas, algunas científicos reputados, que advierten de que si/cuando las máquinas tomen autoconciencia y capacidad de autorreplicación pasarán a eliminarnos porque somos un competidor en recursos que no les aportará nada que les interese.

Otros creen que nuestros propios algoritmos (mal programados) podrían llevar a hacerles pensar que acabar con nosotros es la mejor opción. Por ejemplo: Si el objetivo a conseguir de nuestro algoritmo es reducir el gasto sanitario sin más consideraciones, podría empezar a valorar matar enfermos.

En muchos artículos ya se nos cuenta que hoy, ahora, en estos momentos, los algoritmos de decisión resultan sesgados por los datos con los que se les entrena y que eso a veces nos pasa desapercibido. De esto habla mucho @HelenaMatute

También tenemos en el horizonte los vehículos autónomos, su fiabilidad, su capacidad de decidir en situaciones complicadas. Por ejemplo: un peatón entra en la calzada y dar un volantazo salvará su vida, pero comprometerá la del conductor. ¿Qué debe hacer?

Pero yo quería hablaros de otro miedo, menos tangible, que tiene que ver con que el desarrollo de la inteligencia artificial nos plantea preguntas inquietantes sobre qué es lo que somos.

Para empezar, digamos que no tenemos una definición concreta y detallada  de la IA, y no os creáis que es por la “A”… es por la “I”. El problema es que tampoco tenemos una teoría satisfactoria sobre la mente, qué es la inteligencia o qué es ser inteligente.

Se suele asumir como “prueba de IA” lo que se conoce como el Test de Turing, que podría resumirse en que si te estás escribiendo mensajes con “algo” y es capaz de hacerse pasar por una persona, siendo una máquina, sin que puedas detectarlo, diremos que es una inteligencia artificial.

Como ves, un “desastre” de definición: subjetiva, poco detallada…

Nuestras tradicionales definiciones de inteligencia solían tener que ver con diferenciarnos del “resto de animales” y ponernos en una situación superior: autoconsciencia, uso de herramientas, cultura… pero, la verdad es que se han ido encontrando animales cuyo comportamiento difería más en grado que en algo cualitativamente diferente de nosotros, respecto de estas categorías.

Hoy creo, y ese el miedo del que os quería hablar, que nos preocupa sentirnos inferiores a las máquinas.

– Oye, que hay un bicho que corre más rápido que tú.

– Ya, pero correr rápido no es lo que me hace humano.

Y así con muchas características en animales y máquinas: la capacidad sensorial, la fuerza, la resistencia, la capacidad manipulativa, la rapidez de cálculo, juegos como el ajedrez o el Go…

Uno de los últimos bastiones de la “humanidad superior” es la creatividad, y a mí se me junta con mis cosas de profes… ya sabéis que los profesores nos dedicamos a matarla. (Me niego a enlazar al listillo que dice esto, pero es la charla TED más vista… grrrr).

Primer problema… el de siempre, ¿qué es la creatividad? ¿Qué es hacer algo nuevo? ¿Es posible la novedad? ¿Es sólo un remix? ¿Quién “valida” esa novedad? ¿Con qué criterio?

Preguntas no resueltas para humanos, así que imagina cómo conseguir saber si una máquina ha sido creativa en alguna tarea.

En educación se invoca constantemente la creatividad, sobre todo desde fuera del aula, porque desde dentro del aula sabemos bien que no puede crearse sin tener “elementos” para crear, sin tener conocimientos concretos sobre las técnicas, los objetos y procedimientos del campo en el que quiere uno ser creativo.

Es el problema de las cosas abstractas, se aprenden a través de lo concreto y se expresan a través de lo concreto. Por eso también es tan difícil medir la inteligencia, porque resulta inseparable, en la práctica, del lenguaje, de las matemáticas, de conceptos de otras disciplinas. Estudiando esas cosas desarrollamos la inteligencia y preguntándolas la evaluamos. Para algunos que sólo escuchen a gurús educativos supongo que esto será un descubrimiento.

Por lo tanto, cuando me pregunto si la música que compone una IA ha sido un acto creativo, debería ser capaz de responder primero si la música que compone un humano lo es.

Si pienso que una IA sólo reconoce patrones, extrae “leyes” de su experiencia, y las recombina y que eso no es crear, debería ser capaz de explicar si mi proceso creativo de entrenamiento de mi red neuronal de mi encéfalo y mi desempeño no puede explicarse de una manera similar.

En un artículo que leí recientemente apelaba a algún músico revolucionario de principios del siglo XX y fundamentaba su defensa de la creatividad humana en que cambió la estructura y la forma de pensar la música, que no se limitaba a escribir una “partitura más”. Si aceptáramos eso, aunque triste defensa me parece, date cuenta de que no marca como superior la creatividad de todos, sino sólo la de grandes genios reformadores. Fíjate también que deja en el saco de los “remezcladores”, además de a ti y a mí, a exponentes relevantes que se desenvolvieron dentro de movimientos artísticos ya iniciados. Me hizo recordar que en la película “Yo, robot”, un personaje interpretado por Will Smith le decía a un robot que él era sólo “relojería” que no podía escribir una sinfonía, y el robot le contestó: ¿puedes tú?

Al leer el artículo no podía dejar de acordarme de aquel programa que jugaba al Go, y que en lugar de aprender de partidas humanas, jugaba con versiones anteriores de sí mismo (AlphaGo Zero) de forma que “dedujo”, sólo a partir de las reglas del juego, estrategias ganadoras. Un comentario muy curioso de los jugadores de Go es que jugaba de una forma “diferente”, ejem, ejem… otro mito que se nos cae. Si este programa pudiera enseñarnos ahora a nosotros, lo haría con un estilo diferente, nuevo, rompedor. Entonces, ¿ha sido creativo?

Quizá deberíamos asumir nuestra limitada condición mental, emocional, artística y vivir tranquilos con eso. Todos sabemos que no tenemos el genio de Mozart, y que eso no nos hace menos humanos ni menos personas. Ya hemos asumido que no hacemos cálculos con la fiabilidad o la rapidez de un ordenador, ¿somos menos por eso? ¿Tenemos que ser más en algo para considerarnos “valiosos?

Hay que tener mucho ojo con esto, porque a veces se infiltra en nuestras creencias sin que nos demos cuenta y, efectivamente, estemos “midiendo” el valor de las personas por lo que son capaces de hacer, haciendo “rankings” y, disculpadme, pero me da casi tanto asco hacer una lista de gente por sueldo que por cociente intelectual. No olvidemos que no tenemos mayor título que ser humano y que esto es lo único y necesario para hacernos acreedores de respeto.

Siguiendo con la creatividad, si entendemos que dar pinceladas al azar no es un acto creativo porque tenemos un sistema de “validación” que tiene que ver con conceptos como “belleza”, “provocar una emoción”, etc., recordad momentos en los que habéis visto tocar con emoción cosas escritas sin ella, o viceversa, y a algunos os ha provocado emoción y a otros no. Es perfectamente posible emocionarse con una composición artificial que ejecute un humano o una composición humana ejecutada por una máquina. Mucho ojo aquí también que es muy fácil empezar a asumir una forma de dualismo “alma”/cuerpo, que es una postura filosófica respetable, pero entonces asúmase también que ya no se habla desde la perspectiva científica del asunto, que es eminentemente materialista y en la que “la mente” es la consecuencia de la fisiología.

Es muy probable que nos veamos de nuevo “descentralizados” de la creación como en tantas revoluciones científicas (copernicana, darwiniana, etc.) y no pasará nada, porque quizá nos estamos equivocando y, como en tantas cosas en la vida, no se trata tanto de ser “el mejor de tu portal” como de la experiencia que vives y de cómo la vives. Qué sientes TÚ al cantar esa canción, cómo aprendes TÚ a dibujar, cómo es tu viaje…

Somos habitantes de La zona intermedia cuyos logros quizá no sean reseñables en los libros de Historia del Universo, pero cuyas aventuras fueron apasionantes. Así que, tranquilos: Vivan, disfruten, quiéranse, permiten que les quieran… y dejen que ganen otros.


A %d blogueros les gusta esto: