1. Completa el código

Completa el siguiente código sustituyendo los interrogantes por las expresiones más adecuadas.

  • El objetivo es que la función dibuje un eje de coordenadas en el punto (x,y) de la ventana gráfica.

1 2 3 4
?? ejeCoordenadas(int x, int y) { line(0,y,??,y); line(??,0,??,??); }
  • El objetivo es que la función dibuje un cículo centrado en el punto (x,y) para un radio dado. Busca en las referencias de Processing si fuese necesario.

1 2 3 4
?? hazCirculo (int radio, int x, int y) { translate(x, y); ellipse(0, ??, ??, ??); }
  • El objetivo es que la función dibuje un círculo de radio dado centrado en el eje de coordenadas previamente dibujado.

1 2 3 4
?? hazCirculoEnCoordenadas (int radio, int ??, int ??) { ejeCoordenadas(??, ??); ?? (radio, ??, ??); }
  • Haz un programa principal en el que se vea el funcionamiento de hazCirculoEnCoordenadas declarando variables adecuadas con valores aleatorios que actúen como argumentos. Procura que el círculo no salga de la ventana gráfica.

  • Desarrolla la tabla de seguimiento.


2. Procedimientos

Haz un programa que contenga lo siguiente:

  • Una función definida por el programador que dibuje un rectángulo conocidos el punto central del mismo y sus dos lados. Para ello, invoca en dicha función a la función rect() de Processing con la que se puede dibujar un rectángulo dados su vértice "superior-izquierdo" y sus lados.

  • Una función que construye una estrella formada por varios rectángulos/cuadrados e invocando a la función del apartado anterior (p.e. estrella de Salomón o con más puntas). Utiliza alguna variable local en la función que indique el número de rectángulos/cuadrados que componga tu estrella. La función rotate() de Processing te puede ayudar.

  • Completa tu programa para que cada vez que pulses el ratón dibuje una estrella nueva centrada en el puntero del ratón y rellena con un color aleatorio.

Tienes los siguientes dos requisitos en tu programa:

  • Crea un módulo con las funciones de Processing setup() y mousePressed() y otro módulo con las funciones definidas por el programador.

  • Tienes que partir del siguiente código:

1 2 3 4 5
void setup() { // Los 2 primeros parámetros de rect() determinan // la esquina superior izquierda. rectMode(CORNER); }

Sobre la pantalla gráfica se quiere comprobar el comportamiento simultáneo de varias ondas modeladas por funciones sinusoidales \(f(t) = A \times sen(\omega t + \phi)\). Cada onda sinusoidal viene determinada por los valores:

  • \(t\): el instante de tiempo.

  • \(A\): la amplitud de oscilación.

  • \(\omega\): la velocidad angular.

  • \(\phi\): la fase inicial.

Para ello se utiliza las siguientes funciones.

  • La función ejeX(horizontal) que traza la recta horizontal Y=horizontal en la ventana gráfica. Representa el eje catesiano de abcisas donde se dibujará la onda.

  • La función dibujaPunto() que dibuja un círculo/punto en la pantalla para valores concretos (argumentos) \(t\), \(A\), \(\omega\) y \(\phi\) de la función sinusoidal. A esta función también se le suministra el valor de horizontal que indica el valor en Y donde se encontrará el eje horizontal; es decir, el punto \((t, f(t))=(t,0)\) deberá colocarse en la ventana gráfica en el píxel \((t, horizontal)\)

  • Construye la función dibujaSinusoides() encargada de dibujar varias funciones sinusoidales, con los colores que consideres. El único parámetro de dicha función es el valor del instante de tiempo \(t\), y cuyo valor se establece en la función draw().

Con todo, la función draw() se encargará de actualizar el valor de \(t\) de acuerdo con el siguiente código:

1 2 3 4
void draw() { t=t+dt; dibujaSinusoides(t); }

Completa el código para que la función draw() pueda funcionar y haz que la función dibujaSinusoides() dibuje 2 sinusoides. Ah, y no olvides la función setup().

Tu programa debe dibujar algo similar a esto:


3. Funciones

  • Un función que calcule el cuadrado de un natural usando el operador *.

  • Una función que calcule el inverso (o recíproco) de un natural.

  • Una función que calcule el inverso del cuadrado de un número dado. Esta función invocará a las dos funciones anteriores.

  • Invoca en la función draw() a la función construida en el apartado anterior para comprobar que, en efecto, se produce la siguiente convergencia. Para ello muestra el error absoluto entre la suma acumulada y el valor al que converge.

    \[\frac{1}{1}+\frac{1}{4}+\frac{1}{9}+\frac{1}{16}+\frac{1}{25}+\cdots = \frac{\pi^2}{6}\]
  • Realiza la tabla de seguimiento para las dos primeras iteraciones de draw().


  • Escribe un programa que contenga a una función que calcule el número de segundos transcurridos desde el inicio del día hasta la hora actual (que viene dada por su hora, minutos y segundos).

  • Escribe otra función, que invoque a la anterior, para que calcule el número de segundos entre dos horas dadas de n-días diferentes (n=1 se entenderá que son días consecutivos).

  • Por último, genera aleatoriamente en el programa dos horas y los días que hay entre ambas y muestra un mensaje (String) de salida formado por la concatenación de los datos que necesites mostrar.

  • Haz la tabla de seguimiento, para ello haz que no hayan instrucciones con más de dos operación aritmética.