{"id":426,"date":"2022-10-06T11:04:34","date_gmt":"2022-10-06T09:04:34","guid":{"rendered":"http:\/\/quadern-programacio.recursos.uoc.edu\/?page_id=426"},"modified":"2022-10-06T11:04:34","modified_gmt":"2022-10-06T09:04:34","slug":"7-3-movimiento-ondulatorio","status":"publish","type":"page","link":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/7-3-movimiento-ondulatorio\/","title":{"rendered":"7.3. Movimiento ondulatorio"},"content":{"rendered":"<p>En ocasiones, podemos querer crear movimientos m\u00e1s sutiles de oscilaci\u00f3n; es aqu\u00ed cuando necesitaremos repasar un poco de trigonometr\u00eda, ya que haremos uso de las funciones seno y coseno que nos ofrece P5.js, <span class=\"courier\">sin()<\/span> y <span class=\"courier\">cos()<\/span>.<\/p>\n<p>Si tomamos como referencia un c\u00edrculo de una unidad de radio (c\u00edrculo unitario), tanto el seno como el coseno de un \u00e1ngulo no son m\u00e1s que valores que oscilan entre \u20131 y 1 a medida que el valor del \u00e1ngulo del c\u00edrculo aumenta o disminuye.<\/p>\n<p>Recordemos que en P5 se trabaja por defecto con los \u00e1ngulos en radianes y no en grados, y que el sentido positivo es en la direcci\u00f3n de las agujas del reloj y no al contrario (ya que nuestras coordenadas <em>y<\/em> en nuestro <em>canvas<\/em> crecen hacia abajo). De esta manera, podemos establecer el seno y coseno siguiendo la siguiente figura:<\/p>\n<figure id=\"attachment_204\" aria-describedby=\"caption-attachment-204\" style=\"width: 550px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"wp-image-204\" src=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_085.jpg\" alt=\"\" width=\"550\" height=\"552\" srcset=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_085.jpg 666w, \/wp-content\/uploads\/2022\/10\/PID_00290094_085-300x300.jpg 300w, \/wp-content\/uploads\/2022\/10\/PID_00290094_085-150x150.jpg 150w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><figcaption id=\"caption-attachment-204\" class=\"wp-caption-text\">Figura 86. Seno y coseno<br \/>Fuente: elaboraci\u00f3n propia.<\/figcaption><\/figure>\n<p>Vemos que comenzando en 0\u00ba (0 radianes), el seno va aumentando hasta llegar a un valor de 1 al alcanzar los 90\u00ba (PI\/2 en radianes, <span class=\"courier\">HALF_PI<\/span> en P5). A continuaci\u00f3n, va disminuyendo hasta 0 al alcanzar los 180\u00ba (<span class=\"courier\">PI<\/span>), sigue disminuyendo hasta \u20131 cuando alcanza los 270\u00ba (<span class=\"courier\">PI + HALF_PI<\/span>) y luego aumenta hasta llegar de nuevo a 0 cuando el \u00e1ngulo alcanza los 360\u00ba (<span class=\"courier\">TWO_PI<\/span>). El coseno para 0\u00ba empieza con un valor de 1, disminuye hasta \u20131 en los 180\u00ba y aumenta hasta 1 de nuevo en los 360\u00ba.<\/p>\n<div class=\"tabletitle\"><p>Tabla 3. Valores de seno y coseno<\/p>\n<\/div>\n<table>\n<tbody>\n<tr class=\"table-header\">\n<td width=\"137\"><strong>\u00c1ngulo en grados<\/strong><\/td>\n<td width=\"137\"><strong>\u00c1ngulo en radianes<\/strong><\/td>\n<td width=\"137\"><strong>Seno<\/strong><\/td>\n<td width=\"137\"><strong>Coseno<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"137\">0 o 360<\/td>\n<td width=\"137\">0 o 2 \u00d7 PI<\/td>\n<td width=\"137\">0<\/td>\n<td width=\"137\">1<\/td>\n<\/tr>\n<tr>\n<td width=\"137\">90<\/td>\n<td width=\"137\">PI \/ 2<\/td>\n<td width=\"137\">1<\/td>\n<td width=\"137\">0<\/td>\n<\/tr>\n<tr>\n<td width=\"137\">180<\/td>\n<td width=\"137\">PI<\/td>\n<td width=\"137\">0<\/td>\n<td width=\"137\">\u20131<\/td>\n<\/tr>\n<tr>\n<td width=\"137\">270<\/td>\n<td width=\"137\">3 \u00d7 PI \/ 2<\/td>\n<td width=\"137\">\u20131<\/td>\n<td width=\"137\">0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div class=\"tablefooter\"><p>Fuente: elaboraci\u00f3n propia.<\/p>\n<\/div>\n<p>Si tenemos un valor de \u00e1ngulo que vaya aumentado constantemente, su seno o su coseno variar\u00e1n constantemente tambi\u00e9n entre \u20131 y 1, lo cual nos puede resultar muy \u00fatil. Veamos un ejemplo sencillo construido en P5.js:<\/p>\n<p><figure id=\"attachment_206\" aria-describedby=\"caption-attachment-206\" style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"wp-image-206\" src=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_086.jpg\" alt=\"\" width=\"600\" height=\"418\" srcset=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_086.jpg 800w, \/wp-content\/uploads\/2022\/10\/PID_00290094_086-300x209.jpg 300w, \/wp-content\/uploads\/2022\/10\/PID_00290094_086-768x535.jpg 768w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-206\" class=\"wp-caption-text\">Figura 87. Imprimiendo en la consola los valores de <span class=\"courier\">sin()<\/span><br \/>Fuente: elaboraci\u00f3n propia.<\/figcaption><\/figure>Podemos observar que efectivamente los valores que nos devuelve <span class=\"courier\">sin()<\/span> fluct\u00faan entre \u20131 y 1 seg\u00fan vamos aumentando el valor del \u00e1ngulo. Veamos ahora c\u00f3mo podemos utilizar estos valores para controlar el movimiento de un c\u00edrculo:<\/p>\n<p><figure id=\"attachment_208\" aria-describedby=\"caption-attachment-208\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"size-full wp-image-208\" src=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_087.jpg\" alt=\"\" width=\"800\" height=\"329\" srcset=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_087.jpg 800w, \/wp-content\/uploads\/2022\/10\/PID_00290094_087-300x123.jpg 300w, \/wp-content\/uploads\/2022\/10\/PID_00290094_087-768x316.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-208\" class=\"wp-caption-text\">Figura 88. Haciendo oscilar un c\u00edrculo mediante <span class=\"courier\">sin()<\/span><br \/>Fuente: elaboraci\u00f3n propia.<\/figcaption><\/figure>Como ya sabemos que los valores que <span class=\"courier\">sin()<\/span> nos va a devolver van a oscilar entre \u20131 y 1, podemos usar el m\u00e9todo <span class=\"courier\">map()<\/span> para ajustar ese rango al rango del movimiento que queramos darle a nuestra figura; en este caso del rango (\u20131, 1) pasamos a (50, 350).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En ocasiones, podemos querer crear movimientos m\u00e1s sutiles de oscilaci\u00f3n; es aqu\u00ed cuando necesitaremos repasar un poco de trigonometr\u00eda, ya que haremos uso de las funciones seno y coseno que nos ofrece P5.js, y . Si tomamos como referencia un c\u00edrculo de una unidad de radio (c\u00edrculo unitario), tanto el seno como el coseno de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/426"}],"collection":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/comments?post=426"}],"version-history":[{"count":1,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/426\/revisions"}],"predecessor-version":[{"id":427,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/426\/revisions\/427"}],"wp:attachment":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/media?parent=426"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}