{"id":330,"date":"2011-02-18T16:21:32","date_gmt":"2011-02-18T16:21:32","guid":{"rendered":"http:\/\/www.dtic.upf.edu\/~jagenjo\/?p=330"},"modified":"2011-02-18T16:21:32","modified_gmt":"2011-02-18T16:21:32","slug":"infografia-i-practica-6-curvas","status":"publish","type":"post","link":"https:\/\/tamats.com\/upf\/?p=330","title":{"rendered":"Infografia I, Pr\u00e1ctica 6: Curvas"},"content":{"rendered":"<p>Esta pr\u00e1ctica trata sobre maneras de definir curvas mediante ecuaciones matematicas de diferente grado y de interactuar con ellas para dibujarlas o definir rutas.<\/p>\n<p>Conocer el uso de las curvas es clave cuando queremos mover objetos o la camara por el escenario de una manera suave.<\/p>\n<h3>Material<\/h3>\n<ul>\n<li><a href=\"https:\/\/docs.google.com\/present\/edit?id=0AR34fAMO9xh9ZGc5MzJxbjhfMzk3anpxcXJnbQ&#038;hl=es\" target=\"_blank\">Slides sobre Curvas de Bezier<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/present\/edit?id=0AR34fAMO9xh9ZGc5MzJxbjhfMzhkZHhra2tkYg&#038;hl=es\" target=\"_blank\">Slides sobre Continuidad en curvas de Bezier<\/a><\/li>\n<li><strong><a href=\"uploads\/practicas\/framework_prac6.zip\">Framework de la  practica 6<\/a><\/strong><\/li>\n<\/ul>\n<h3>Requisitos<\/h3>\n<ul>\n<li>Implementar las siguientes funciones del framework:\n<pre lang=\"cpp\">Class Spline:\nvoid addPoint( Vector3 point);\nVector3 getInterpolatedPoint(float t);\n<\/pre>\n<\/li>\n<li>El codigo de la funcion onDraw que pinta la curva utilizando un GL_LINE_STRIP, o podeis crear un metodo render en la clase spline que recibe por parametro el numero de iteraciones (segmentos) a pintar de la curva.<\/li>\n<li>Pintar los puntos de control de color distinto que los puntos que definen el principio y el final de la curva<\/li>\n<li>Los puntos se tienen que introducir con el raton y se tienen que poder modificar con el boton derecho del raton si estamos trabajando en 2D (en 3D no hace falta).<\/li>\n<li>Sugerencias  opcionales:<\/li>\n<ul>\n<li>Pintar un punto animado que se desplace por encima de la curva recorriendola y que cuando llegue al final salte de nuevo al principio.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Para la segunda parte de la practica, implementar:<\/h3>\n<li>Modificar la clase spline para que pueda contener m\u00e1s de una curva garantizando siempre la continuidad C1.<\/li>\n<li>Crear una funci\u00f3n que te diga cuantos segmentos curvos tiene la curva continua.<\/li>\n<li>Hacer una funci\u00f3n que cierre la curva manteniendo la continuidad tanto por el principio como por el final.<\/li>\n<li>Crear una spline 3D en el escenario, los puntos pueden estar en el codigo directamente, o podeis usar vuestra imaginaci\u00f3n (pero nada de pedir que se introduzcan por consola&#8230;)<\/li>\n<li>Permitir recorrer la curva completa usando un intervalo normalizado de T (0 es el principio de la primera curva y 1 es el final de la \u00faltima curva):\n<pre lang=\"cpp\">\n\tVector3 getNormalizedInterpolatedPoint(float t);\n<\/pre>\n<\/li>\n<li>Sugerencias opcionales:\n<ul>\n<li>Que mantenga la continuidad incluso cuando se modifica en 2D la posicion de los puntos de control de la curva.<\/li>\n<li>Animar la camara para que navegue por encima de la curva (basta asignar el eye a una T de la curva y el center a una T ligeramente superior).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Fallos comunes<\/h3>\n<ul class=\"bad\">\n<li>Teneis que almacenar unicamente los puntos de control, los puntos intermedios sobre la curva se calculan conforme se van necesitando en funcion de la T, pero no se almacenan.<\/li>\n<li>No saber sacar de una T normalizada (que va de 0 a 1) en una curva continua formada por varias curvas el indice que indica qu\u00e9 curva local es y su T local.<\/li>\n<li>La aplicaci\u00f3n nunca debe colgarse incluso si usamos una T fuera de rango (cuidado porque muchas veces con T == 1 las aplicaciones se cuelgan).<\/li>\n<\/ul>\n<div class=\"legend\">Valor: <strong>10 puntos<\/strong><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Esta pr\u00e1ctica trata sobre maneras de definir curvas mediante ecuaciones matematicas de diferente grado y de interactuar con ellas para dibujarlas o definir rutas. Conocer el uso de las curvas es clave cuando queremos mover objetos o la camara por el escenario de una manera suave. Material Slides sobre Curvas de Bezier Slides sobre Continuidad [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/330"}],"collection":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=330"}],"version-history":[{"count":0,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/330\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=330"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=330"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=330"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}