{"id":1467,"date":"2019-01-22T16:25:15","date_gmt":"2019-01-22T21:25:15","guid":{"rendered":"http:\/\/brickisland.net\/DDGSpring2019\/?p=1467"},"modified":"2019-01-22T16:36:43","modified_gmt":"2019-01-22T21:36:43","slug":"a0-coding-combinatorial-surfaces","status":"publish","type":"post","link":"https:\/\/brickisland.net\/DDGSpring2019\/2019\/01\/22\/a0-coding-combinatorial-surfaces\/","title":{"rendered":"Assignment 0 (Coding): Combinatorial Surfaces \u2014 due 2\/7"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1473\" src=\"http:\/\/brickisland.net\/DDGSpring2019\/wp-content\/uploads\/2019\/01\/CMU_DDG_Spring2019_A0_CombinatorialSurfaces_GUI-1.jpg\" alt=\"\" width=\"450\" height=\"460\" srcset=\"https:\/\/brickisland.net\/DDGSpring2019\/wp-content\/uploads\/2019\/01\/CMU_DDG_Spring2019_A0_CombinatorialSurfaces_GUI-1.jpg 900w, https:\/\/brickisland.net\/DDGSpring2019\/wp-content\/uploads\/2019\/01\/CMU_DDG_Spring2019_A0_CombinatorialSurfaces_GUI-1-294x300.jpg 294w, https:\/\/brickisland.net\/DDGSpring2019\/wp-content\/uploads\/2019\/01\/CMU_DDG_Spring2019_A0_CombinatorialSurfaces_GUI-1-768x784.jpg 768w\" sizes=\"auto, (max-width: 450px) 85vw, 450px\" \/><\/p>\n<p>For the coding portion of your first assignment, you will implement some operations on simplicial complexes which were discussed in class and in Chapter 2 of the <a href=\"http:\/\/www.cs.cmu.edu\/~kmcrane\/Projects\/DDG\/paper.pdf\">course notes<\/a>. Once implemented, you will be able to select simplices and apply these operations to them by clicking the appropriate buttons in the viewer (shown above).<\/p>\n<p><b><u>Getting Started<\/u><\/b><\/p>\n<ul>\n<li>Please download or clone the files in this <a href=\"https:\/\/github.com\/cmu-geometry\/ddg-exercises-js\">repository<\/a>. It contains a fast and flexible framework for 3D geometry processing implemented in Javascript. Over the course of the semester, you will implement all of your coding assignments here.<\/li>\n<li>For this assignment, you will need to implement the following routines in <tt>projects\/simplicial-complex-operators\/simplicial-complex-operators.js<\/tt>:\n<ul>\n<li><tt>assignElementIndices<\/tt><\/li>\n<li><tt>buildVertexEdgeAdjacencymatrix<\/tt><\/li>\n<li><tt>buildEdgeFaceAdjacencymatrix<\/tt><\/li>\n<li><tt>buildVertexVector<\/tt><\/li>\n<li><tt>buildEdgeVector<\/tt><\/li>\n<li><tt>buildFaceVector<\/tt><\/li>\n<li><tt>star<\/tt><\/li>\n<li><tt>closure<\/tt><\/li>\n<li><tt>link<\/tt><\/li>\n<li><tt>isComplex<\/tt><\/li>\n<li><tt>isPureComplex<\/tt><\/li>\n<li><tt>boundary<\/tt><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><b><u>Notes<\/u><\/b><\/p>\n<ul>\n<li>This assignment comes with a viewer <tt>projects\/simplicial-complex-operators\/index.html<\/tt> which lets you apply your operators to simplices of meshes and visualize the results.<\/li>\n<li>Selecting simplices will not work until you fill in the <tt>assignElementIndices<\/tt> function.<\/li>\n<li>The assignment also comes with a test script <tt>tests\/simplicial-complex-operators\/text.html<\/tt> which you can use to verify the correctness of your operators.<\/li>\n<li>The code framework is implemented in Javascript, which means no compilation or installation is necessary on any platform. You can simply get started by opening the <tt>index.html<\/tt> file in <tt>projects\/discrete-exterior-calculus\/<\/tt> in a web browser. We recommend using Chrome or Firefox. Safari has poor <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/WebGL_API\">WebGL<\/a> performance.<\/li>\n<li>If you do not have prior experience with Javascript, do not worry! You should be able to get a handle on Javascript syntax by reading through some of the code in the framework (a good place to start might be <tt>core\/geometry.js<\/tt>). The framework also contains extensive documentation (see <tt>docs\/index.html<\/tt>).<\/li>\n<li>All browsers come with tools for debugging (for instance the <a href=\"https:\/\/developers.google.com\/web\/tools\/chrome-devtools\/console\/\">JavaScript Console<\/a> in Chrome).<\/li>\n<\/ul>\n<p><b><u>Submission Instructions<\/u><\/b><\/p>\n<p>Please rename your <tt>simplicial-complex-operators.js<\/tt> file to <tt>simplicial-complex-operators.txt<\/tt> and submit it in a zip file called <tt>solution.zip<\/tt> to <a href=\"mailto:Geometry.Collective@gmail.com\">Geometry.Collective@gmail.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>For the coding portion of your first assignment, you will implement some operations on simplicial complexes which were discussed in class and in Chapter 2 of the course notes. Once implemented, you will be able to select simplices and apply these operations to them by clicking the appropriate buttons in the viewer (shown above). Getting &hellip; <a href=\"https:\/\/brickisland.net\/DDGSpring2019\/2019\/01\/22\/a0-coding-combinatorial-surfaces\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Assignment 0 (Coding): Combinatorial Surfaces \u2014 due 2\/7&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1467","post","type-post","status-publish","format-standard","hentry","category-assignments"],"_links":{"self":[{"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/posts\/1467","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/comments?post=1467"}],"version-history":[{"count":6,"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/posts\/1467\/revisions"}],"predecessor-version":[{"id":1479,"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/posts\/1467\/revisions\/1479"}],"wp:attachment":[{"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/media?parent=1467"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/categories?post=1467"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brickisland.net\/DDGSpring2019\/wp-json\/wp\/v2\/tags?post=1467"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}