{"id":122,"date":"2010-05-03T16:17:20","date_gmt":"2010-05-03T16:17:20","guid":{"rendered":"http:\/\/www.tecn.upf.edu\/~jagenjo\/?p=122"},"modified":"2010-05-03T16:17:20","modified_gmt":"2010-05-03T16:17:20","slug":"infografia-i-practica-2-bresenham","status":"publish","type":"post","link":"https:\/\/tamats.com\/upf\/?p=122","title":{"rendered":"Infografia I: Practica 2. Bresenham"},"content":{"rendered":"<p>La practica consiste en programar algoritmos de rasterizado de lineas y circulos. Sirve como toma de contacto con los conceptos de optimizaci\u00f3n y pintado en framebuffer.<\/p>\n<h3><!--more--><\/h3>\n<h3>Material<\/h3>\n<ul>\n<li><a href=\"http:\/\/docs.google.com\/Presentation?id=dg932qn8_27dw6k2gfn\" target=\"_blank\">Slides sobre muestreo de lineas<\/a><\/li>\n<li><strong><a href=\"uploads\/practicas\/framework_prac2.zip\" target=\"_blank\">Framework de la pr\u00e1ctica 2<\/a><\/strong><\/li>\n<li><a href=\"http:\/\/docs.google.com\/present\/view?id=dg932qn8_177dstb7mdz\" target=\"_blank\">Slides sobre contenedores de STL<\/a><\/li>\n<\/ul>\n<h3>Requisitos<\/h3>\n<ul class=\"good\">\n<li>Codigo en C o C++ que implemente:\n<ul>\n<li>El algoritmo de DDA.<\/li>\n<li>El algoritmo de Bresenham para lineas.<\/li>\n<li>El algoritmo de Bresenham para circulos.<\/li>\n<li>Tienen que poderse dibujar lineas con cualquier tipo de pendiente.<\/li>\n<li>Tiene que poderse elegir qu\u00e9 algoritmo usar (mediante teclado o menus).<\/li>\n<li>Tiene que poderse usar el rat\u00f3n para elegir los puntos tanto de las lineas como del centro y un punto de la circunferencia.<\/li>\n<\/ul>\n<\/li>\n<li>Opcional\n<ul>\n<li>Adjuntar alguna opci\u00f3n de benchmarking (testeo de rapidez del algoritmo), que calcule el tiempo que tarda cada algoritmo en pintar un numero elevado de lineas.<\/li>\n<li>Se valorar\u00e1 que el c\u00f3digo sea legible, est\u00e9 bien estructurado y sea \u00f3ptimo.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>Fallos comunes<\/h3>\n<ul class=\"bad\">\n<li>Poner partes del algoritmo que calcula los puntos de la linea o el circulo en el main.cpp. <strong>Las funciones tienen que ser completas<\/strong>, es decir, retornan TODOS los puntos que forman la primitiva, no importa en qu\u00e9 condicion estoy, si hay que hacer ajustes se hacen desde dentro de la funci\u00f3n, externamente el main no tiene ni idea de c\u00f3mo lo hace ni le importa.<\/li>\n<li>Modificar la funci\u00f3n drawPoints para poner parte del algoritmo, esta funcion SOLO pinta los puntos que hay en el vector de puntos, nada m\u00e1s.<\/li>\n<li>Liarse haciendo swaps de los puntos en lugar de ajustar las condiciones y los incrementos.<\/li>\n<li>Tratar los 8 octantes por separado en Bresenham<\/li>\n<li>A\u00f1adir atributos a las clases para calculos locales de funciones.<\/li>\n<li>Cambiar los prototipos de las funciones para pasarle los puntos por parametro.<\/li>\n<li>Usar floats en las variables del loop de Bresenham<\/li>\n<li>Hacer scanf para coger el input del usuario.<\/li>\n<li>No usar la asignacion con el constructor p.e. Point B = Point(10,10);<\/li>\n<li>Hacer bucles para deshacer cambios al acabar el algoritmo.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>La practica consiste en programar algoritmos de rasterizado de lineas y circulos. Sirve como toma de contacto con los conceptos de optimizaci\u00f3n y pintado en framebuffer.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/122"}],"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=122"}],"version-history":[{"count":0,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/122\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}