Ejes 3D en Processing

En el lenguaje Processing, los ejes X, Y y Z son los siguientes con el centro de coordenadas en la esquina superior izquierda de la pantalla:

  • X positiva hacia la derecha
  • Y positiva hacia abajo
  • Z positiva hacia fuera de la pantalla

A menudo se me olvida el sentido de la Z, así que aquí pongo una imagen extraída de este tutorial, en la que se indica el sentido de -Z:

Y añado este programa:

Este programa dibuja un rectángulo azul como base en Z=0, un cubo verde en la coordenada Z=-50 , y un cubo rojo en la coordenada Z=50 . El cubo rojo es el que se ve, por lo tanto, la Z positiva “hacia fuera del monitor”.

La explicación más aclaratoria es: en processing el producto vectorial de X por Y es -Z (se puede ver según la regla de la mano derecha).

Espero que ahora no se me vuelva a olvidar…

Series para los hijos

Si tuviera un hijo, las series que le haría tragar desde pequeño serían las siguientes:

  1. Bárrio sésamo (no mucho mucho)
  2. Érase una vez el hombre
  3. Érase una vez la vida
  4. Érase una vez los inventores
  5. Érase una vez la ciencia
  6. El mundo de beakman
  7. Universo mecánico
  8. Universo matemático
  9. Connections
  10. Engineering Connections

Sobre básculas analógicas, pan y patrón-ramen

¿Qué tendrán que ver las tres cosas?

Veamos los sujetos:

¿Y cuál es el problema?

El problema es que en el libro de recetas de pan aparecen las medidas del agua en ml y las de harina en gramos. Para las primeras no hay problema porque tengo un vaso graduado; para las segundas tengo un gran problema porque sólo dispongo de una báscula analógica barateira que mide mal. De este modo, los panes salen bien/mal aleatoriamente en función de cómo tenga el día la báscula.

La báscula es normal: tiene una rueda para configurarla y marca un peso. Si se cofigura la rueda a cero al ponerle el plato para pesar, mide mal. Así de claro.

Solución 1:

La primera solución que se nos puede ocurrir, aunque a mí se me ha ocurrido como segunda (y la primera que se me ocurrió es “mejor”), es poner unos 400 gramos en la báscula y mirar cuánto dice que pesa (dirá, tal vez, que pesa unos 480 gramos, supongo). Entonces para pesar 400 gramos pesar 480.

¿Cuando se calcula el dato-relación (400g=480) es extrapolable a pesar otros pesos? No. Por dos motivos: es muy difícil poner un cero exácto (sin peso), porque sin peso es muy  muy inestable, y he comprobado que no es muy lineal el muelle (lo de f=-kx no se le da bien) ya que 100g=115, 200g=250.

Se podría utilizar para un simple peso premedido (el caso de 400g=480), pero esta báscula es de poco fiar, y seguro que el paso del tiempo, la temperatura, etc,… le afectan bastante :P así que vamos con la solución 2, que es rara, pero más fiable.

Solución 2:

La solución es utilizar una cantidad de agua para regular la báscula. Vamos por pasos:

Primero utilizo 2 paquetes de ramen, que sé que su peso se aproxima mucho a los 200g y lo configuro como “200g” en la báscula. En realidad son un poco más, pero esta aproximación es mucho mejor que lo que llevo midiendo “aleatoriamente”.

De aquí el patrón-ramen: 200g. Y pico, pero el pico lo ignoro.

Después lo que hago es poner el vaso de medidas y llenar de agua hasta que la aguja marque “200”, esto es, a los 185ml (siento no tener foto).

De este modo tenemos la siguiente relación: 200g = 185ml. ¡Bien! Acabo de abandonar el patrón-ramen, para pasar al patrón-vasoagua, que significa que es más estable: el recipiente pesa siempre igual, y el agua podemos decir que también. Además, si me como el rámen no me como el patrón :P

Tras eso intentaremos obtener la configuración en ml para 400g: ponemos 2 ramenes y 180ml de agua para calcular los 400g, configuramos la aguja en 400, quitamos el ramen (la aguja bajará) y rellenamos de agua hasta que marque 400. el resultado es este:

En concreto 400g = 410ml.

Repitiendo este método, obtenemos la siguiente relación g-ml:

Utilización de los resultados:

Tras la recogida de datos, la utilización es la siguiente cuando se quiere hacer un pan:

  1. Mirar en la receta cuantos gramos de harina se necesitan (supongamos 390g).
  2. Mirar en el cuadro cuántos ml de agua son (400ml).
  3. Poner en el vaso el agua (400 ml) y ponerlo en la báscula.
  4. Dado que sabemos que el vaso+agua pesa 390g (la aguja seguramente no estará en 390), configuramos la aguja para que marque 390.
  5. Quitar el vaso.
  6. Pesar los 390g de harina de forma normal.

¿Y si necesito un valor no listado? Pues a aproximar por la cifra más cercana. Hay que tener en cuenta que intentar pesar un valor que no esté en la lista va a tener un error de medida, es decir: la báscula hay que preconfigurarla para pesar un peso determinado. Si se configura para pesar 250g, se han de pesar 250g. Si se configura para 400g, pesar 400g. Cualquier medida distinta a la configurada tendrá más error según se separe del valor configurado.

¿Por qué todo esto?

Nada mejor que una imagen. Tenemos una báscula configurada para pesar 400g. Le ponemos 200g y ¿qué marca?:

150.

Habría que haberla configurado para pesar 200.

¿No se puede, entonces pesar cualquier cosa?

Pues no. La báscula, según este método, lo único que hace es “confirmarte” que lo que has puesto encima pesa tanto como su configuración.

Y entrando en juegos

Habría una manera teórica de pesar cualquier cosa: teniendo una gráfica con tanta resolución como error de pesado, que relacione g-ml. El proceso para conocer el peso exácto de algo sería iterativo en los siguientes pasos:

  1. pesar el objeto
  2. viendo cuánto indica la báscula que pesa, mirar en la tabla la correspondencia de ml
  3. reconfigurar la báscula con esa cantidad de agua para que de el peso indicado
  4. iterar

Parar cuando el peso en 1 sea el peso que se había reconfigurado en el ciclo anterior, que será el mismo que esté marcando la báscula.

Sería un punto fijo,  vamos.

Ejemplo:

  • Con 200g, la báscula marca 150.
  • Por extrapolación de la tabla (aunque la gráfica ideal nos lo daría exacto), serían unos 130ml, que pesan 150g.
  • Como el peso es 200g, y está configurada para 150g, la báscula marcará más de 150 (supongamos que son 170)
  • Se reconfigura para que en la báscula 170=170g (lo que marcase en el paso anterior)
  • y marcará más de 170 (supongamos 180)
  • se reconfigura para que 180=180g (o lo que marcase en el paso anterior)
  • y marcará más de 180

Y ese proceso debería converger a 200, de manera que al configurar para 200g, marcará 200 al poner el peso :)