{"id":288,"date":"2010-10-13T14:11:33","date_gmt":"2010-10-13T14:11:33","guid":{"rendered":"http:\/\/www.dtic.upf.edu\/~jagenjo\/?p=288"},"modified":"2010-10-13T14:11:33","modified_gmt":"2010-10-13T14:11:33","slug":"practica-2-decimation-of-triangle-meshes","status":"publish","type":"post","link":"https:\/\/tamats.com\/upf\/?p=288","title":{"rendered":"Pr\u00e1ctica 2: Decimation of Triangle Meshes"},"content":{"rendered":"<h3>Introducci\u00f3n<\/h3>\n<p>Esta pr\u00e1ctica consiste en la implementaci\u00f3n del algoritmo de diezmado de tri\u00e1ngulos para reducir el n\u00famero de pol\u00edgonos de una malla triangulada manteniendo la apariencia de la superficie.<\/p>\n<blockquote><p>William J. Schroeder, Jonathan A. Zarge, and William E. Lorensen<\/p>\n<p><a title=\"Decimation of Triangle Meshes\" href=\"http:\/\/www.cs.drexel.edu\/~david\/Classes\/Papers\/decimation.pdf\" target=\"_blank\">Decimation of Triangle Meshes<\/a><\/p>\n<p>Computer Graphics (SIGGRAPH &#8217;92 Proceedings), Vol. 26, no. 2, July 1992, pp. 65&#8211;70.<\/p><\/blockquote>\n<p>Tambi\u00e9n puede ser muy \u00fatil consultar el manual de VTK disponible en la biblioteca u <a title=\"vtk\" href=\"http:\/\/www.vtk.org\/VTK\/help\/documentation.html\" target=\"_blank\">online<\/a>.<\/p>\n<p><strong>Objetivo<\/strong><\/p>\n<p>Escribir un programa en C++ para Linux que implemente el algoritmo de <em>Decimation of Triangle Meshes <\/em>citado previamente. El algoritmo recibe como entrada una superficie triangulada y la simplifica, reduciendo el n\u00famero de tri\u00e1ngulos pero manteniendo la apariencia de la superficie.<\/p>\n<h3>Material<\/h3>\n<ul>\n<li>Paper sobre <a title=\"Decimation of Triangle Meshes\" href=\"http:\/\/www.cs.drexel.edu\/~david\/Classes\/Papers\/decimation.pdf\" target=\"_blank\"><em>Decimation of Triangle Meshes<\/em><\/a><\/li>\n<li><a title=\"decimation.tar\" href=\"http:\/\/www.dtic.upf.edu\/~jagenjo\/uploads\/src\/decimation.tar\">Framework de la Pr\u00e1ctica 2<\/a><\/li>\n<li><a href=\"https:\/\/docs.google.com\/present\/view?id=dcn2rnd_47cn59khc6\">Clarificaciones del paper<\/a><\/li>\n<\/ul>\n<h3>Desarrollo<\/h3>\n<p>Para leer los datos tridimensionales y visualizar la superficie poligonal generada se tendr\u00e1 que utilizar la biblioteca VTK. Para instalarla en las aulas, ir al men\u00fa: \u201c<em>Aplicacions -&gt; Gr\u00e0fics -&gt; VTK<\/em>\u201d.<\/p>\n<p>Una vez instalada:<\/p>\n<p>1.\u00a0 Descargar el framework de la Pr\u00e1ctica 2 (<a title=\"decimation.tar\" href=\"http:\/\/www.dtic.upf.edu\/~jagenjo\/uploads\/src\/decimation.tar\"><em>decimation.tar<\/em><\/a>)<\/p>\n<p>2.\u00a0 Descomprimirlo: ejecutar desde la l\u00ednea de comando la instrucci\u00f3n<\/p>\n<blockquote><p><span>tar xvf decimation.tar<\/span><\/p><\/blockquote>\n<p>3.\u00a0 Ahora podemos compilar el c\u00f3digo ejemplo:<\/p>\n<blockquote><p>cd decimation\/src<\/p>\n<p>Hay dos cpp de ejemplo:<\/p>\n<p>&#8211;<strong>Politext.cpp<\/strong> crea una superficie muy sencilla. Se compila con:<\/p>\n<p><span>make -k poli<\/span><\/p>\n<p>&#8211;<strong>cara.cpp<\/strong> carga de disco la superficie con la que trabajaremos, una cara, y  muestra ejemplos de c\u00f3mo recorrer sus tri\u00e1ngulos y puntos, evaluando  conectividades y pertenencias. Se compila con:<\/p>\n<p><span>make -k cara<\/span><\/p><\/blockquote>\n<p><span>Para la pr\u00e1ctica 2, trabajaremos sobre el archivo &#8220;cara.cpp&#8221;.<\/span><\/p>\n<p>4.\u00a0 Se habr\u00e1 creado un binario el la carpeta &#8220;obj&#8221; llamado poli.o\/cara.o respectivamente. Para ejecutarlo desde la carpeta &#8220;decimation&#8221;:<\/p>\n<blockquote><p><span>.\/obj\/cara<\/span><em><span> <\/span><\/em><\/p><\/blockquote>\n<h3>Experimentos<\/h3>\n<p>Probar con diferentes par\u00e1metros, tanto externos (elegidos por el usuario), como internos del algoritmo.<\/p>\n<h3>Entrega<\/h3>\n<p>Fecha l\u00edmite: <strong>Martes 9 de Noviembre <\/strong>a las<strong> 08:00AM<\/strong>; <strong>No se aceptan entregas tard\u00edas, no se hacen excepciones.<\/strong><\/p>\n<p>Qu\u00e9 se entrega:<\/p>\n<ul>\n<li>Informe: introducci\u00f3n, el algoritmo, explicaci\u00f3n del c\u00f3digo, experimentos, conclusiones. En formatos html, ps, pdf o rtf.<\/li>\n<li>C\u00f3digo C++, comentado, listo para compilar (con su Makefile). Formato: ASCII.<\/li>\n<li>Las im\u00e1genes (cualquier formato) y par\u00e1metros usados en los experimentos.<\/li>\n<li>Se deben poder reproducir los experimentos con todos los materiales entregados, en cualquier PC de aulas, en Linux.<\/li>\n<li>En caso de copia (entre equipos, o de otras fuentes) todos los  integrantes de los equipos involucrados suspender\u00e1n inmediatamente la  asignatura, y el Departament abrir\u00e1 un expediente solicitando la  expulsi\u00f3n temporal de dichos estudiantes.<\/li>\n<\/ul>\n<h3>Defensa<\/h3>\n<p>Martes 9 de Noviembre<\/p>\n<p>Duraci\u00f3n: 10 minutos por equipo, con preguntas individuales. Todos  los integrantes deben estar plenamente familiarizados con el trabajo. Esta clase es de <strong>asistencia obligatoria<\/strong>. No hay que traer Slides, ser\u00e1 una<strong> presentaci\u00f3n oral delante del c\u00f3digo.<\/strong><\/p>\n<h3>Consejos<\/h3>\n<ul>\n<li>Leer el art\u00edculo con atenci\u00f3n.<\/li>\n<li>Leer el c\u00f3digo de ejemplo con atenci\u00f3n, hasta entender todos los pasos y ejemplos.<\/li>\n<li>Mirar el archivo <em>fran_cut2.vtk<\/em>, en textura\/vtkdata. Reconocer su estructura: primero hay una lista de coordenadas 3D de puntos (3 puntos por l\u00ednea), despu\u00e9s una lista de pol\u00edgonos, donde cada l\u00ednea tiene el formato: &lt;n\u00fam. de lados del pol\u00edgono&gt; &lt;Id del punto A&gt; &lt;Id del punto B&gt; &lt;Id del punto C&gt; donde siempre el pol\u00edgono ser\u00e1 el tri\u00e1ngulo formado por los puntos ABC, en ese orden (normal saliente).<\/li>\n<li>Invertir un buen tiempo en planear el c\u00f3digo, no ponerse a programar directamente.<\/li>\n<li>Hacer c\u00f3digo modular: desglosar la tarea global en partes, hacer  funciones para estas partes, llamar a las funciones desde un programa  principal corto.<\/li>\n<li>Consultar la documentaci\u00f3n de la librer\u00eda VTK.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Esta pr\u00e1ctica consiste en la implementaci\u00f3n del algoritmo de diezmado de tri\u00e1ngulos para reducir el n\u00famero de pol\u00edgonos de una malla triangulada manteniendo la apariencia de la superficie. William J. Schroeder, Jonathan A. Zarge, and William E. Lorensen Decimation of Triangle Meshes Computer Graphics (SIGGRAPH &#8217;92 Proceedings), Vol. 26, no. 2, July 1992, pp. [&hellip;]<\/p>\n","protected":false},"author":2,"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\/288"}],"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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=288"}],"version-history":[{"count":0,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=\/wp\/v2\/posts\/288\/revisions"}],"wp:attachment":[{"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=288"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=288"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tamats.com\/upf\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=288"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}