Commit fb20ee76 authored by allai5's avatar allai5
Browse files

add data and site info

parent 20d39ee3
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <title>Bevelling - </title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> <script type="text/javascript" src="/assets/js/vendor/lunr.min.js"></script> <script type="text/javascript" src="/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.7.1 --> <title>Bevelling</title> <meta name="generator" content="Jekyll v4.2.0" /> <meta property="og:title" content="Bevelling" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Bevelling" /> <script type="application/ld+json"> {"headline":"Bevelling","@type":"WebPage","url":"/meshedit/local/bevel/","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> </svg> <div class="side-bar"> <div class="site-header"> <a href="/" class="site-title lh-tight"> </a> <a href="#" id="menu-button" class="site-button"> <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg> </a> </div> <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/git/" class="nav-list-link">GitHub Setup</a></li><li class="nav-list-item"><a href="/build/" class="nav-list-link">Building Scotty3D</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/guide/" class="nav-list-link">User Guide</a><ul class="nav-list "><li class="nav-list-item "><a href="/guide/animate_mode/" class="nav-list-link">Animate</a></li><li class="nav-list-item "><a href="/guide/layout_mode/" class="nav-list-link">Layout</a></li><li class="nav-list-item "><a href="/guide/model_mode/" class="nav-list-link">Model</a></li><li class="nav-list-item "><a href="/guide/render_mode/" class="nav-list-link">Render</a></li><li class="nav-list-item "><a href="/guide/rigging_mode/" class="nav-list-link">Rig</a></li><li class="nav-list-item "><a href="/guide/simulate_mode/" class="nav-list-link">Simulate</a></li></ul></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/" class="nav-list-link">A2: MeshEdit</a><ul class="nav-list "><li class="nav-list-item "><a href="/meshedit/halfedge" class="nav-list-link">Halfedge Mesh</a></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/local/" class="nav-list-link">Local Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/local/edge_flip" class="nav-list-link">Edge Flip Tutorial</a> </li><li class="nav-list-item active"> <a href="/meshedit/local/bevel/" class="nav-list-link active">Bevelling</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/global/" class="nav-list-link">Global Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/global/catmull/" class="nav-list-link">Catmull-Clark Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/remesh/" class="nav-list-link">Isotropic Remeshing</a> </li><li class="nav-list-item "> <a href="/meshedit/global/linear/" class="nav-list-link">Linear Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/loop/" class="nav-list-link">Loop Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/simplify/" class="nav-list-link">Simplification</a> </li><li class="nav-list-item "> <a href="/meshedit/global/triangulate/" class="nav-list-link">Triangulation</a> </li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/" class="nav-list-link">A3: Pathtracer</a><ul class="nav-list "><li class="nav-list-item "><a href="/pathtracer/camera_rays" class="nav-list-link">(Task 1) Camera Rays</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/intersecting_objects" class="nav-list-link">(Task 2) Intersections</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/ray_triangle_intersection" class="nav-list-link">Ray Triangle Intersection</a> </li><li class="nav-list-item "> <a href="/pathtracer/ray_sphere_intersection" class="nav-list-link">Ray Sphere Intersection</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/bounding_volume_hierarchy" class="nav-list-link">(Task 3) BVH</a></li><li class="nav-list-item "><a href="/pathtracer/shadow_rays" class="nav-list-link">(Task 4) Shadow Rays</a></li><li class="nav-list-item "><a href="/pathtracer/path_tracing" class="nav-list-link">(Task 5) Path Tracing</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/materials" class="nav-list-link">(Task 6) Materials</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/dielectrics_and_transmission" class="nav-list-link">Dielectrics and Transmission</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/environment_lighting" class="nav-list-link">(Task 7) Environment Lighting</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/importance_sampling" class="nav-list-link">Environment Light Importance Sampling</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/visualization_of_normals" class="nav-list-link">Visualization of normals</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/animation/" class="nav-list-link">A4: Animation</a><ul class="nav-list "><li class="nav-list-item "><a href="/animation/splines" class="nav-list-link">Splines</a></li><li class="nav-list-item "><a href="/animation/skeleton_kinematics" class="nav-list-link">Skeleton Kinematics</a></li><li class="nav-list-item "><a href="/animation/skinning" class="nav-list-link">Skinning</a></li><li class="nav-list-item "><a href="/animation/particles" class="nav-list-link">Particles</a></li></ul></li></ul> </nav> <footer class="site-footer"> This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </footer> </div> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search " aria-label="Search " autocomplete="off"> <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> </div> <div id="search-results" class="search-results"></div> </div> </div> <div id="main-content-wrap" class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/meshedit/">A2: MeshEdit</a></li> <li class="breadcrumb-nav-list-item"><a href="/meshedit/local/">Local Operations</a></li> <li class="breadcrumb-nav-list-item"><span>Bevelling</span></li> </ol> </nav> <div id="main-content" class="main-content" role="main"> <h1 id="beveling"> <a href="#beveling" class="anchor-heading" aria-labelledby="beveling"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Beveling </h1> <p>Here we provide some additional detail about the bevel operations and their implementation in Scotty3D. Each bevel operation has two components:</p> <ol> <li>a method that modifies the <em>connectivity</em> of the mesh, creating new beveled elements, and</li> <li>a method the updates the <em>geometry</em> of the mesh, insetting and offseting the new vertices according to user input.</li> </ol> <p>The methods that update the connectivity are <code class="language-plaintext highlighter-rouge">HalfedgeMesh::bevel_vertex</code>, <code class="language-plaintext highlighter-rouge">halfedgeMesh::bevel_edge</code>, and <code class="language-plaintext highlighter-rouge">HalfedgeMesh::bevel_face</code>. The methods that update geometry are <code class="language-plaintext highlighter-rouge">HalfedgeMesh::bevel_vertex_positions</code>, <code class="language-plaintext highlighter-rouge">HalfedgeMesh::bevel_edge_positions</code>, and <code class="language-plaintext highlighter-rouge">HalfedgeMesh::bevel_face_positions</code>.</p> <p>The methods for updating connectivity can be implemented following the general strategy outlined in <a href="edge_flip">edge flip tutorial</a>. <strong>Note that the methods that update geometry will be called repeatedly for the same bevel, in order to adjust positions according to user mouse input. See the gif in the <a href="../guide/model">User Guide</a>.</strong></p> <p>To update the <em>geometry</em> of a beveled element, you are provided with the following data:</p> <ul> <li><code class="language-plaintext highlighter-rouge">start_positions</code> - These are the original vertex positions of the beveled mesh element, without any insetting or offsetting.</li> <li><code class="language-plaintext highlighter-rouge">face</code> - This is a reference to the face currently being beveled. This was returned by one of the connectivity functions.</li> <li><code class="language-plaintext highlighter-rouge">tangent_offset</code> - The amount by which the new face should be inset (i.e., “shrunk” or “expanded”)</li> <li><code class="language-plaintext highlighter-rouge">normal_offset</code> - (faces only) The amount by which the new face should be offset in the normal direction.</li> </ul> <p>Also note that we provide code to gather the halfedges contained in the beveled face, creating the array <code class="language-plaintext highlighter-rouge">new_halfedges</code>. You should only have to update the position (<code class="language-plaintext highlighter-rouge">Vertex::pos</code>) of the vertices associated with this list of halfedges. The basic recipe for updating these positions is:</p> <ul> <li>Iterate over the list of halfedges (<code class="language-plaintext highlighter-rouge">new_halfedges</code>)</li> <li>Grab the vertex coordinates that are needed to compute the new, updated vertex coordinates (this could be a mix of values from <code class="language-plaintext highlighter-rouge">start_positions</code>, or the members <code class="language-plaintext highlighter-rouge">Vertex::pos</code>)</li> <li>Compute the updated vertex positions using the current values of <code class="language-plaintext highlighter-rouge">tangent_offset</code> (and possibly <code class="language-plaintext highlighter-rouge">normal_offset</code>)</li> <li>Store the new vertex positions in <code class="language-plaintext highlighter-rouge">Vertex::pos</code> <em>for the vertices of the new, beveled polygon only</em> (i.e., the vertices associated with each of <code class="language-plaintext highlighter-rouge">new_halfedges</code>).</li> </ul> <p>The reason for storing <code class="language-plaintext highlighter-rouge">new_halfedges</code> and <code class="language-plaintext highlighter-rouge">start_positions</code> in an array is that it makes it easy to access positions “to the left” and “to the right” of a given vertex. For instance, suppose we want to figure out the offset from the corner of a polygon. We might want to compute some geometric quantity involving the three vertex positions <code class="language-plaintext highlighter-rouge">start_positions[i-1]</code>, <code class="language-plaintext highlighter-rouge">start_positions[i]</code>, and <code class="language-plaintext highlighter-rouge">start_positions[i+1]</code> (as well as <code class="language-plaintext highlighter-rouge">inset</code>), then set the new vertex position <code class="language-plaintext highlighter-rouge">new_halfedges[i]-&gt;vertex()-&gt;pos</code> to this new value:</p> <center><img src="bevel_diagram.png" /></center> <p>A useful trick here is <em>modular arithmetic</em>: since we really have a “loop” of vertices, we want to make sure that indexing the next element (+1) and the previous element (-1) properly “wraps around.” This can be achieved via code like</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// Get the number of vertices in the new polygon
int N = (int)hs.size();
// Assuming we're looking at vertex i, compute the indices
// of the next and previous elements in the list using
// modular arithmetic---note that to get the previous index,
// we can't just subtract 1 because the mod operation in C++
// doesn't behave quite how you might expect for negative
// values!
int a = (i+N-1) % N;
int b = i;
int c = (i+1) % N;
// Get the actual 3D vertex coordinates at these vertices
Vec3 pa = start_positions[a];
Vec3 pb = start_positions[b];
Vec3 pc = start_positions[c];
</code></pre></div></div> <p>From here, you will need to compute new coordinates for vertex <code class="language-plaintext highlighter-rouge">i</code>, which can be accessed from <code class="language-plaintext highlighter-rouge">new_halfedges[i]-&gt;vertex()-&gt;pos</code>. As a “dummy” example (i.e., this is NOT what you should actually do!!) this code will set the position of the new vertex to the average of the vertices above:</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>new_halfedges[i].vertex()-&gt;pos = ( pa + pb + pc ) / 3.; // replace with something that actually makes sense!
</code></pre></div></div> <p>The only question remaining is: where <em>should</em> you put the beveled vertex? <strong>We will leave this decision up to you.</strong> This question is one where you will have to think a little bit about what a good design would be. Questions to ask yourself:</p> <ul> <li>How do I compute a point that is inset from the original geometry?</li> <li>For faces, how do I shift the geometry in the normal direction? (You may wish to use the method <code class="language-plaintext highlighter-rouge">Face::normal()</code> here.)</li> <li>What should I do as the offset geometry starts to look degenerate, e.g., shrinks to a point, or goes outside some reasonable bounds?</li> <li>What should I do when the geometry is nonplanar?</li> <li>Etc.</li> </ul> <p>The best way to get a feel for whether you have a good design is <em>to try it out!</em> Can you successfully and easily use this tool to edit your mesh? Or is it a total pain, producing bizarre results? You be the judge!</p> </div> </div> <div class="search-overlay"></div> </div> </body> </html>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="374.262px" height="166.379px" viewBox="0 0 374.262 166.379" enable-background="new 0 0 374.262 166.379"
xml:space="preserve">
<g>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M238.239,11.479
C220.064,5.018,200.496,1.5,180.104,1.5c-20.525,0-40.219,3.564-58.494,10.107"/>
<g>
<polygon points="248.105,15.332 236.335,4.315 237.47,11.275 231.989,15.709 "/>
</g>
</g>
</g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" points="39.812,22.958 20.785,22.958 0.627,35.704 10.113,57.938 27.9,73.945
33.829,107.147 56.317,153.985 87.64,165.843 117.93,153.985 144.699,149.243 150.627,118.412 134.916,103.59 141.334,84.103
127.505,63.273 150.627,35.704 112.075,18.808 78.143,6.95 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="81.408" y2="114.855"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="112.075" y2="18.808"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="39.812" y2="22.958"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="27.9" y2="73.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="33.829" y2="107.147"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="56.317" y2="153.985"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="117.93" y2="153.985"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="134.916" y2="103.59"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="127.505" y2="63.273"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="78.143" y2="6.95"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="39.812,22.958 20.785,22.958 0.627,35.704 10.113,57.938
27.9,73.945 33.829,107.147 56.317,153.985 87.64,165.843 117.93,153.985 144.699,149.243 150.627,118.412 134.916,103.59
141.334,84.103 127.505,63.273 150.627,35.704 112.075,18.808 78.143,6.95 "/>
</g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" points="262.635,22.958 243.608,22.958 223.45,35.704 232.935,57.938 250.722,73.945
256.652,107.147 279.14,153.985 310.462,165.843 340.753,153.985 367.521,149.243 373.451,118.412 357.739,103.59 363.953,82.99
350.328,63.273 373.451,35.704 334.898,18.808 300.965,6.95 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="316.154" y1="35.705" x2="334.898" y2="18.808"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="279.107" y1="36.999" x2="262.635" y2="22.958"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="275.032" y1="62.832" x2="250.722" y2="73.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="279.473" y1="110.845" x2="256.652" y2="107.147"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="290.695" y1="135.965" x2="279.14" y2="153.985"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="322" y1="133.893" x2="340.753" y2="153.985"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="328.775" y1="109.688" x2="357.739" y2="103.59"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="322" y1="57.561" x2="350.328" y2="63.273"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="299.364" y1="27.521" x2="300.965" y2="6.95"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="262.635,22.958 243.608,22.958 223.45,35.704
232.935,57.938 250.722,73.945 256.652,107.147 279.14,153.985 310.462,165.843 340.753,153.985 367.521,149.243 373.451,118.412
357.739,103.59 363.953,82.99 350.328,63.273 373.451,35.704 334.898,18.808 300.965,6.95 "/>
<polygon opacity="0.2" fill="#1B1F8A" points="322,57.561 328.775,109.688 322,133.893 290.695,135.965 279.473,110.845
274.603,63.028 278.878,35.705 299.364,27.521 316.155,35.705 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="322,57.561 328.775,109.688 322,133.893 290.695,135.965
279.473,110.845 274.603,63.028 278.878,35.705 299.364,27.521 316.155,35.705 "/>
</g>
<g>
<path d="M147.996,13.001c0.906-0.026,1.438-0.054,2.317-0.054c0.853,0,1.544,0.134,1.544,0.319l0.133,1.198h0.586l0.213-2.263
l-0.105-0.106c-0.586-0.054-0.879-0.08-1.492-0.08c-0.372,0-0.852,0.026-1.73,0.053c-1.145,0.027-1.598,0.027-2.05,0.027
c-0.56,0-1.251-0.027-2.982-0.054v0.586l0.586,0.054c0.692,0.053,0.745,0.159,0.745,1.544v7.136c0,0.533-0.08,0.772-0.319,0.906
l-0.506,0.292v0.347c1.571-0.026,1.571-0.026,1.944-0.026h0.532c1.624,0.026,2.263,0.053,3.062,0.053
c0.826,0,1.332-0.026,2.237-0.053l0.079-0.134l0.188-2.529h-0.64l-0.347,1.518c0,0-0.025,0.026-0.053,0.026
c-0.506,0.16-0.959,0.24-1.837,0.24c-0.666,0-1.278-0.026-2.104-0.054v-4.233c0.453-0.054,0.72-0.054,1.066-0.054h1.064
c0.586,0,0.852,0.16,0.905,0.586l0.08,0.799h0.64l-0.027-1.73c0-0.16,0-0.187,0.027-1.704h-0.64l-0.08,0.905
c-0.026,0.267-0.239,0.346-0.905,0.346h-1.064c-0.506,0-0.746,0-1.066-0.026V13.001"/>
<path d="M159.632,20.323c0,0.719-0.746,1.305-1.624,1.305c-1.118,0-1.837-1.092-1.837-2.822c0-1.598,0.559-2.396,1.678-2.396
c0.691,0,1.251,0.293,1.783,0.985V20.323 M161.576,11.51l-0.133-0.08l-1.145,0.347c-0.453,0.133-1.012,0.239-1.918,0.319v0.586
l0.826,0.053c0.373,0,0.426,0.16,0.426,1.092v1.943l-0.319-0.106c-0.452-0.186-0.879-0.293-1.278-0.293
c-0.506,0-0.959,0.16-1.385,0.427l-1.145,0.745c-0.905,0.612-1.332,1.518-1.332,2.876c0,2.264,1.172,3.728,3.036,3.728
c0.347,0,0.612-0.079,0.772-0.187l1.65-1.357l-0.08,1.198l0.08,0.106c0.959-0.026,1.252-0.026,1.438-0.026
c0.107,0,0.4,0,0.853,0.026c0.106,0,0.399,0,0.745,0V22.32l-0.532-0.026c-0.479-0.026-0.56-0.16-0.56-1.012V11.51z"/>
<path d="M167.514,23.093c1.944,0,2.423,0.266,2.423,1.278c0,1.092-1.064,1.917-2.477,1.917c-1.41,0-2.369-0.666-2.369-1.651
c0-0.586,0.346-1.118,0.825-1.357C166.156,23.173,166.742,23.093,167.514,23.093 M167.195,16.17c0.852,0,1.305,0.691,1.305,1.943
c0,1.118-0.426,1.704-1.278,1.704c-0.825,0-1.331-0.692-1.331-1.891C165.89,16.782,166.343,16.17,167.195,16.17z M171.615,17.021
l0.08-1.012c-0.666,0.053-0.959,0.08-1.305,0.08c-0.133,0-0.32,0-0.586-0.027c-0.639-0.479-1.385-0.692-2.424-0.692
c-2.023,0-3.434,1.198-3.434,2.85c0,0.586,0.213,1.118,0.585,1.544c0.293,0.293,0.532,0.453,1.092,0.64l-1.118,0.852
c-0.16,0.106-0.266,0.453-0.266,0.772c0,0.56,0.266,0.853,1.064,1.065l-1.278,0.772c-0.239,0.133-0.426,0.532-0.426,0.984
c0,1.358,1.331,2.237,3.435,2.237c2.797,0,4.66-1.438,4.66-3.542c0-1.357-0.746-1.97-2.344-1.97h-0.398
c-1.572,0.026-2.131,0.053-2.316,0.053c-0.48,0-0.746-0.159-0.746-0.479c0-0.239,0.16-0.426,0.479-0.612
c0.268,0,0.427,0.026,0.613,0.026c1.118,0,2.13-0.372,2.77-1.012c0.506-0.506,0.719-1.064,0.719-1.837
c0-0.267-0.027-0.453-0.08-0.772L171.615,17.021z"/>
<path d="M176.062,18.539h-0.054c-0.106,0-0.532-0.026-0.772-0.053h-0.506c0.054-1.571,0.426-2.21,1.358-2.21
c0.905,0,1.278,0.639,1.305,2.21L176.062,18.539 M179.417,18.167c0-1.678-1.198-2.797-3.009-2.797
c-0.532,0-0.959,0.134-1.385,0.373l-0.745,0.453c-1.065,0.612-1.519,1.57-1.519,3.089c0,2.503,1.279,3.86,3.648,3.86
c0.905,0,1.491-0.159,2.503-0.692l0.347-0.771l-0.187-0.24c-0.745,0.427-1.226,0.56-1.864,0.56c-0.825,0-1.598-0.426-1.997-1.118
c-0.267-0.453-0.347-0.826-0.372-1.571h2.076c0.905,0,1.625-0.08,2.503-0.319V18.167z"/>
<path d="M184.316,12.895c0.373-0.054,0.613-0.054,0.906-0.054c1.305,0,1.863,0.532,1.863,1.704c0,1.385-0.692,1.971-2.29,1.971
h-0.479V12.895 M184.316,17.341h0.479c1.837,0,2.636,0.692,2.636,2.316c0,1.651-0.745,2.37-2.449,2.37
c-0.24,0-0.399,0-0.666-0.053V17.341z M185.115,12.068c-0.373,0-1.465,0.027-1.73,0.027c-0.213,0-0.692,0-1.411-0.027
l-1.252-0.026v0.586l0.586,0.054c0.72,0.053,0.745,0.159,0.745,1.544v7.136c0,0.533-0.053,0.772-0.293,0.906l-0.531,0.292v0.347
c1.145-0.026,1.57-0.026,2.023-0.026c0.239,0,0.559,0,0.932,0c0.852,0.026,1.277,0.026,1.305,0.026
c2.557,0,4.313-1.411,4.313-3.462c0-0.852-0.319-1.544-0.878-1.943c-0.56-0.399-1.092-0.56-2.371-0.64
c1.332-0.452,1.785-0.691,2.291-1.145c0.373-0.347,0.586-0.932,0.586-1.518c0-1.465-0.986-2.157-2.982-2.157L185.115,12.068z"/>
<path d="M194.674,18.539h-0.08c-0.079,0-0.506-0.026-0.745-0.053h-0.506c0.026-1.571,0.426-2.21,1.331-2.21
s1.305,0.639,1.331,2.21L194.674,18.539 M198.029,18.167c0-1.678-1.197-2.797-3.008-2.797c-0.56,0-0.959,0.134-1.412,0.373
l-0.745,0.453c-1.038,0.612-1.491,1.57-1.491,3.089c0,2.503,1.252,3.86,3.621,3.86c0.905,0,1.491-0.159,2.529-0.692l0.347-0.771
l-0.187-0.24c-0.746,0.427-1.225,0.56-1.863,0.56c-0.826,0-1.625-0.426-1.998-1.118c-0.266-0.453-0.373-0.826-0.398-1.571h2.076
c0.906,0,1.625-0.08,2.529-0.319V18.167z"/>
<path d="M202.316,22.906h1.358c0.239-0.719,0.399-1.118,0.612-1.545l2.023-4.579c0.133-0.347,0.293-0.479,0.56-0.533l0.479-0.079
v-0.586l-1.518,0.026c-0.799,0-0.959,0-1.545-0.026v0.586l0.613,0.026c0.213,0.026,0.372,0.133,0.372,0.293
c0,0.187-0.054,0.399-0.159,0.639l-0.959,2.396c-0.16,0.347-0.293,0.692-0.56,1.278l-1.411-3.515
c-0.16-0.399-0.213-0.64-0.213-0.799c0-0.16,0.133-0.267,0.373-0.293l0.639-0.026v-0.586l-2.051,0.026
c-0.213,0-0.452,0-2.05-0.026v0.586l0.399,0.026c0.266,0.053,0.453,0.319,0.746,0.985L202.316,22.906"/>
<path d="M211.476,18.539h-0.08c-0.08,0-0.506-0.026-0.745-0.053h-0.506c0.026-1.571,0.426-2.21,1.331-2.21
c0.906,0,1.305,0.639,1.332,2.21L211.476,18.539 M214.832,18.167c0-1.678-1.198-2.797-3.01-2.797c-0.559,0-0.984,0.134-1.41,0.373
l-0.746,0.453c-1.039,0.612-1.491,1.57-1.491,3.089c0,2.503,1.251,3.86,3.622,3.86c0.904,0,1.49-0.159,2.529-0.692l0.346-0.771
l-0.186-0.24c-0.773,0.427-1.226,0.56-1.865,0.56c-0.824,0-1.623-0.426-1.996-1.118c-0.267-0.453-0.373-0.826-0.4-1.571h2.078
c0.904,0,1.623-0.08,2.529-0.319V18.167z"/>
<path d="M218.931,11.43l-1.117,0.347c-0.48,0.133-1.012,0.239-1.944,0.319v0.586l0.853,0.053c0.346,0,0.398,0.16,0.398,1.092
v7.456c0,0.852-0.079,0.985-0.559,1.012l-0.56,0.026v0.586l2.051-0.026c0.319,0,1.092,0,2.157,0.026V22.32l-0.56-0.026
c-0.506-0.026-0.587-0.16-0.587-1.012V11.51L218.931,11.43"/>
</g>
<g>
<defs>
<rect id="SVGID_1_" x="83.23" y="79.343" width="6" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M85.015,82.789c0.293-1.092,0.611-1.784,1.064-2.184c0.293-0.266,0.771-0.452,1.145-0.452
c0.48,0,0.772,0.319,0.772,0.825c0,0.692-0.56,1.438-1.384,1.837c-0.453,0.24-1.013,0.399-1.731,0.56L85.015,82.789
M88.449,85.372l-0.398,0.267c-0.826,0.612-1.598,0.932-2.157,0.932c-0.745,0-1.225-0.586-1.225-1.544
c0-0.399,0.054-0.826,0.133-1.278l1.306-0.319c0.266-0.08,0.691-0.24,1.091-0.399c1.358-0.586,1.971-1.332,1.971-2.317
c0-0.745-0.532-1.225-1.331-1.225c-1.039,0-2.797,1.092-3.408,2.104c-0.48,0.799-0.959,2.689-0.959,3.755
c0,1.251,0.692,1.97,1.838,1.97c0.904,0,1.811-0.452,3.274-1.624L88.449,85.372z"/>
</g>
<g>
<defs>
<rect id="SVGID_3_" x="295.464" y="74.019" width="10" height="17"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M303.107,80.128c0.08-0.293,0.186-0.666,0.266-0.879l-0.053-0.106l-0.107,0.026
c-0.398,0.08-0.559,0.106-1.33,0.106h-0.268l0.347-1.783c0.239-1.358,0.692-1.971,1.411-1.971c0.479,0,0.906,0.239,1.145,0.612
l0.16-0.054c0.08-0.266,0.24-0.745,0.373-1.064l0.08-0.24c-0.267-0.106-0.746-0.213-1.119-0.213c-0.159,0-0.426,0.054-0.559,0.106
c-0.373,0.187-1.678,1.146-2.051,1.545c-0.346,0.346-0.532,0.825-0.719,1.73l-0.239,1.252c-0.64,0.319-0.958,0.452-1.358,0.585
l-0.08,0.347h1.279l-0.134,0.905c-0.479,3.089-1.065,6.044-1.411,7.136c-0.293,0.933-0.772,1.438-1.332,1.438
c-0.372,0-0.532-0.106-0.824-0.453l-0.24,0.054c-0.053,0.373-0.267,1.118-0.346,1.278c0.133,0.079,0.372,0.133,0.559,0.133
c0.639,0,1.491-0.506,2.131-1.252c0.958-1.145,1.305-2.263,2.476-7.828c0.054-0.213,0.159-0.799,0.293-1.411H303.107"/>
</g>
</g>
<g>
<g>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="98.723,132.93 98.453,133.893
97.456,133.959 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.9582,1.9582" x1="95.501" y1="134.088" x2="69.123" y2="135.834"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="68.146,135.898 67.148,135.965
66.741,135.052 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.9849,1.9849" points="
65.931,133.239 55.927,110.845 51.057,63.028 55.024,37.674 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="55.177,36.693 55.332,35.705
56.261,35.334 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.8236,1.8236" x1="57.954" y1="34.657" x2="74.042" y2="28.23"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="74.889,27.893 75.817,27.521
76.716,27.96 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.8532,1.8532" x1="78.382" y1="28.771" x2="90.876" y2="34.861"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="91.709,35.267 92.608,35.705
92.867,36.671 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="2.0066,2.0066" points="
93.385,38.609 98.453,57.561 105.229,109.688 98.993,131.964 "/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="397.95px" height="144.156px" viewBox="0 0 397.95 144.156" enable-background="new 0 0 397.95 144.156"
xml:space="preserve">
<g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="255.37,99.587 269.232,57.996 301.103,34.25
354.4,40.633 368.03,64.093 348.375,94.373 262.219,114.564 "/>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M264.146,11.479
C245.972,5.018,226.403,1.5,206.012,1.5c-20.525,0-40.219,3.564-58.494,10.107"/>
<g>
<polygon points="274.013,15.332 262.243,4.315 263.377,11.275 257.896,15.709 "/>
</g>
</g>
</g>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="20,42.64 66.167,8.241 141.754,17.293 169.364,64.819
135.87,116.417 20,143.576 0.537,101.028 "/>
<polygon opacity="0.4" fill="#1B1F8A" enable-background="new " points="20,42.64 66.167,8.241 141.754,17.293 169.364,64.819
135.87,116.417 20,143.576 0.537,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="247.999,42.64 294.167,8.241 369.754,17.293 397.364,64.819
363.87,116.417 247.999,143.576 228.536,101.028 "/>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="247.999,42.64 294.167,8.241 369.754,17.293
397.364,64.819 363.87,116.417 247.999,143.576 228.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="247.999,42.64 294.167,8.241 369.754,17.293 397.364,64.819
363.87,116.417 247.999,143.576 228.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="255.37,99.587 269.232,57.996 301.103,34.25 354.4,40.633
368.03,64.093 348.375,94.373 262.219,114.564 "/>
<polygon fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="2" points="27.735,99.587
41.599,57.996 73.469,34.25 126.767,40.633 140.396,64.093 120.741,94.373 34.586,114.564 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="262.219" y1="114.564" x2="247.999" y2="143.576"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="255.37" y1="99.587" x2="228.536" y2="101.028"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="269.232" y1="57.996" x2="247.999" y2="42.64"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="301.103" y1="34.25" x2="294.167" y2="8.241"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="354.4" y1="40.633" x2="369.754" y2="17.293"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="368.03" y1="64.093" x2="397.364" y2="64.819"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="348.375" y1="94.373" x2="363.87" y2="116.417"/>
<g>
<g>
<defs>
<rect id="SVGID_1_" x="303.292" y="66.062" width="9" height="13"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M308.165,67.345c0.933,0,1.385,0.561,1.385,1.704c0,1.625-0.771,2.743-1.863,2.743
c-0.984,0-1.491-0.666-1.491-1.917C306.194,68.384,306.993,67.345,308.165,67.345 M308.217,75.387
c0.72,0.559,1.039,0.985,1.039,1.519c0,0.824-1.118,1.49-2.424,1.49c-1.305,0-2.209-0.666-2.209-1.624
c0-0.612,0.293-1.172,0.799-1.599c0.398-0.318,0.746-0.479,1.57-0.719L308.217,75.387z M310.642,68.41
c0.267,0.054,0.373,0.054,0.532,0.054c0.267,0,0.427-0.027,0.799-0.08l0.134-0.719l-0.054-0.08
c-0.428,0.106-0.745,0.133-1.624,0.133c-0.24-0.399-0.399-0.559-0.8-0.719c-0.346-0.106-0.746-0.187-1.064-0.187
c-0.665,0-1.438,0.293-2.156,0.825c-0.879,0.666-1.332,1.571-1.332,2.717c0,1.225,0.692,1.943,1.918,1.943
c0.133,0,0.319,0,0.479-0.026l-0.641,0.611c-0.266,0.24-0.426,0.533-0.426,0.746c0,0.16,0.107,0.347,0.32,0.533
c-1.199,0.398-1.705,0.639-2.291,1.117c-0.531,0.452-0.824,1.064-0.824,1.704c0,1.146,1.117,1.864,2.85,1.864
c2.049,0,3.834-1.146,3.834-2.477c0-0.561-0.346-1.146-1.012-1.679l-0.959-0.799c-0.533-0.427-0.746-0.72-0.746-1.013
c0-0.159,0.106-0.318,0.32-0.611c0.053-0.054,0.079-0.08,0.105-0.134c1.57-0.372,2.688-1.704,2.688-3.115
c0-0.133-0.026-0.293-0.053-0.532V68.41H310.642z"/>
</g>
</g>
<g>
<g>
<defs>
<rect id="SVGID_3_" x="73.454" y="61.863" width="10" height="17"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M81.097,67.973c0.08-0.293,0.186-0.666,0.266-0.879l-0.053-0.106l-0.107,0.026
c-0.398,0.08-0.559,0.106-1.33,0.106h-0.268l0.347-1.783c0.239-1.358,0.692-1.971,1.411-1.971c0.479,0,0.906,0.239,1.145,0.612
l0.16-0.054c0.08-0.266,0.24-0.745,0.373-1.064l0.08-0.24c-0.267-0.106-0.746-0.213-1.119-0.213
c-0.159,0-0.426,0.054-0.559,0.106c-0.373,0.187-1.678,1.146-2.051,1.545c-0.346,0.346-0.532,0.825-0.719,1.73l-0.239,1.252
c-0.64,0.319-0.958,0.452-1.358,0.585l-0.08,0.347h1.279l-0.134,0.905c-0.479,3.089-1.065,6.044-1.411,7.136
c-0.293,0.933-0.772,1.438-1.332,1.438c-0.372,0-0.532-0.105-0.824-0.453l-0.24,0.055c-0.053,0.373-0.267,1.117-0.346,1.277
c0.133,0.08,0.372,0.133,0.559,0.133c0.639,0,1.491-0.506,2.131-1.252c0.958-1.145,1.305-2.262,2.476-7.828
c0.054-0.213,0.159-0.799,0.293-1.411L81.097,67.973"/>
</g>
</g>
<g>
<path d="M174.197,13.137c0.771-0.027,1.305-0.054,1.837-0.054c1.065,0,1.758,0.106,1.758,0.319l0.133,1.172h0.586l0.213-2.236
l-0.106-0.134c-0.586-0.026-0.878-0.053-1.491-0.053c-0.373,0-0.985,0.026-2.237,0.053c-0.745,0-1.145,0-1.464,0
c-0.453,0-0.453,0-2.822-0.026v0.586l0.585,0.053c0.719,0.054,0.772,0.16,0.772,1.545v6.497c0,1.411-0.027,1.438-0.772,1.491
l-0.585,0.053v0.64c1.917-0.054,1.917-0.054,2.45-0.054c0.532,0,0.532,0,2.663,0.054v-0.64l-0.746-0.053
c-0.746-0.026-0.772-0.106-0.772-1.491v-2.982c0.453-0.026,0.719-0.054,1.065-0.054h0.799c0.612,0,0.878,0.187,0.905,0.586
l0.106,0.799h0.639l-0.053-1.704c0-0.187,0-0.399,0.053-1.65h-0.639l-0.106,0.852c-0.027,0.24-0.24,0.319-0.905,0.319h-0.799
c-0.533,0-0.746,0-1.065-0.026v-3.862"/>
<path d="M183.703,21.178c-0.293,0.399-0.879,0.692-1.358,0.692c-0.506,0-0.826-0.373-0.826-0.985c0-0.772,0.346-1.092,1.465-1.411
l0.719-0.187V21.178 M183.703,21.924l-0.08,0.984l0.08,0.134c0.985-0.027,1.251-0.054,1.464-0.054
c0.188,0,0.427,0.026,1.385,0.054v-0.586l-0.479-0.054c-0.347-0.053-0.426-0.213-0.453-0.958v-0.347
c0-0.506-0.026-0.958-0.026-1.331c0-0.426,0.026-0.932,0.026-1.545c0.027-0.213,0.027-0.346,0.027-0.452
c0-1.411-0.959-2.264-2.557-2.264c-0.666,0-1.332,0.187-1.917,0.533l-0.825,0.506v1.118l0.479,0.106l0.346-0.799
c0.027-0.106,0.479-0.213,0.905-0.213c1.065,0,1.571,0.559,1.625,1.863l-1.385,0.293c-2.023,0.399-2.716,1.039-2.716,2.37
c0,1.305,0.639,1.971,1.837,1.971c0.373,0,0.639-0.054,0.799-0.187L183.703,21.924z"/>
<path d="M193.155,18.276c0.106-1.012,0.188-1.544,0.32-2.236l-0.107-0.214c-0.745-0.266-1.064-0.319-1.65-0.319
c-0.586,0-1.039,0.106-1.411,0.347l-0.853,0.479c-1.41,0.852-1.916,1.65-1.916,3.035c0,2.503,1.251,3.888,3.541,3.888
c0.799,0,1.385-0.133,2.13-0.532l0.319-0.72l-0.133-0.159c-0.533,0.213-0.905,0.293-1.357,0.293c-1.545,0-2.53-1.252-2.53-3.275
c0-1.438,0.56-2.237,1.571-2.237c0.719,0,1.331,0.32,1.385,0.692l0.105,0.959L193.155,18.276"/>
<path d="M198.028,18.649h-0.053c-0.107,0-0.533,0-0.772-0.027l-0.506-0.026c0.054-1.571,0.427-2.21,1.358-2.21
c0.904,0,1.277,0.639,1.305,2.21L198.028,18.649 M201.383,18.302c0-1.704-1.197-2.796-3.008-2.796
c-0.56,0-0.959,0.106-1.385,0.373l-0.745,0.426c-1.065,0.64-1.519,1.598-1.519,3.089c0,2.53,1.278,3.861,3.648,3.861
c0.905,0,1.492-0.16,2.503-0.666l0.346-0.772l-0.186-0.239c-0.746,0.426-1.227,0.56-1.865,0.56c-0.825,0-1.598-0.453-1.997-1.119
c-0.267-0.452-0.346-0.825-0.373-1.57h2.077c0.906,0,1.625-0.08,2.503-0.319V18.302L201.383,18.302z"/>
<path d="M206.176,13.031c0.373-0.054,0.613-0.054,0.906-0.054c1.305,0,1.863,0.506,1.863,1.678c0,1.385-0.693,1.97-2.291,1.97
h-0.479V13.031 M206.176,17.451h0.48c1.838,0,2.637,0.719,2.637,2.343c0,1.651-0.746,2.37-2.449,2.37c-0.24,0-0.4,0-0.666-0.054
v-4.659H206.176z M206.976,12.178c-0.373,0.026-1.466,0.026-1.729,0.026c-0.213,0-0.693,0-1.412,0l-1.252-0.026v0.586l0.586,0.053
c0.72,0.054,0.746,0.16,0.746,1.545v7.109c0,0.56-0.054,0.799-0.293,0.905l-0.533,0.293v0.373
c1.146-0.027,1.572-0.054,2.023-0.054c0.239,0,0.561,0,0.934,0.026c0.852,0,1.276,0.027,1.305,0.027
c2.557,0,4.312-1.438,4.312-3.488c0-0.825-0.318-1.545-0.879-1.944c-0.56-0.372-1.092-0.532-2.369-0.612
c1.332-0.479,1.783-0.692,2.289-1.145c0.373-0.373,0.586-0.933,0.586-1.545c0-1.438-0.984-2.13-2.981-2.13L206.976,12.178
L206.976,12.178z"/>
<path d="M216.642,18.649h-0.08c-0.08,0-0.533,0-0.746-0.027l-0.532-0.026c0.055-1.571,0.452-2.21,1.358-2.21
c0.903,0,1.306,0.639,1.331,2.21L216.642,18.649 M219.969,18.302c0-1.704-1.172-2.796-2.98-2.796c-0.56,0-0.986,0.106-1.412,0.373
l-0.744,0.426c-1.039,0.64-1.519,1.598-1.519,3.089c0,2.53,1.276,3.861,3.647,3.861c0.904,0,1.49-0.16,2.502-0.666l0.373-0.772
l-0.213-0.239c-0.746,0.426-1.226,0.56-1.838,0.56c-0.852,0-1.623-0.453-2.022-1.119c-0.24-0.452-0.347-0.825-0.373-1.57h2.077
c0.904,0,1.623-0.08,2.503-0.319L219.969,18.302L219.969,18.302z"/>
<path d="M224.176,23.042h1.357c0.24-0.719,0.4-1.118,0.613-1.545l2.023-4.58c0.133-0.346,0.293-0.479,0.559-0.532l0.48-0.08
v-0.612l-1.52,0.054c-0.799-0.027-0.958-0.027-1.544-0.054v0.612l0.612,0.027c0.213,0.026,0.371,0.133,0.371,0.266
c0,0.187-0.053,0.426-0.158,0.666l-0.958,2.396c-0.16,0.346-0.294,0.666-0.56,1.278l-1.412-3.516
c-0.16-0.399-0.213-0.639-0.213-0.825c0-0.159,0.133-0.239,0.373-0.266l0.639-0.027v-0.612l-2.051,0.054
c-0.213,0-0.453,0-2.051-0.054v0.612l0.4,0.027c0.266,0.026,0.451,0.292,0.744,0.984L224.176,23.042"/>
<path d="M233.417,18.649h-0.053c-0.08,0-0.533,0-0.773-0.027l-0.506-0.026c0.055-1.571,0.426-2.21,1.358-2.21
c0.905,0,1.278,0.639,1.331,2.21L233.417,18.649 M236.771,18.302c0-1.704-1.171-2.796-2.981-2.796
c-0.561,0-0.985,0.106-1.412,0.373l-0.746,0.426c-1.037,0.64-1.518,1.598-1.518,3.089c0,2.53,1.279,3.861,3.648,3.861
c0.904,0,1.49-0.16,2.503-0.666l0.347-0.772l-0.188-0.239c-0.745,0.426-1.225,0.56-1.863,0.56c-0.826,0-1.598-0.453-1.997-1.119
c-0.239-0.452-0.347-0.825-0.372-1.57h2.076c0.904,0,1.625-0.08,2.503-0.319V18.302z"/>
<path d="M240.899,11.54l-1.146,0.372c-0.451,0.134-0.984,0.213-1.916,0.32v0.585l0.852,0.027c0.346,0.026,0.4,0.188,0.4,1.118
v7.455c0,0.853-0.082,0.959-0.562,1.013l-0.56,0.026v0.586l2.052-0.054c0.319,0,1.063,0.026,2.13,0.054v-0.586l-0.531-0.026
c-0.507-0.054-0.586-0.16-0.586-1.013v-9.771L240.899,11.54"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="349.88px" height="119.336px" viewBox="0 0 349.88 119.336" enable-background="new 0 0 349.88 119.336"
xml:space="preserve">
<g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" points="52.667,118.825 19.741,90.492 0.667,45.513 29.396,35.193 31.167,16.367
54.48,0.658 68.487,16.367 100.167,6.158 107.579,35.193 136.333,50.825 117.234,77.493 109.333,99.158 90.182,116.492 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="52.667,118.825 19.741,90.492 0.667,45.513 29.396,35.193
31.167,16.367 54.48,0.658 68.487,16.367 100.167,6.158 107.579,35.193 136.333,50.825 117.234,77.493 109.333,99.158
90.182,116.492 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="68.487" y2="16.367"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="107.579" y2="35.193"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="117.234" y2="77.493"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="90.182" y2="116.492"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="52.667" y2="118.825"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="19.741" y2="90.492"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="29.396" y2="35.193"/>
<circle cx="76.167" cy="55.658" r="3.671"/>
</g>
<g>
<defs>
<rect id="SVGID_1_" x="76.774" y="40.104" width="8" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M81.86,41.181l0.16,0.293c0.16-0.079,0.293-0.133,0.426-0.133
c0.426,0,0.692,0.373,0.692,1.012c0,2.344-1.544,4.926-2.929,4.926c-0.799,0-1.278-0.665-1.278-1.704
c0-1.65,0.613-3.115,2.184-5.032l-0.16-0.293c-0.32,0.133-0.533,0.187-0.985,0.187c-0.426,0-1.118-0.026-1.571-0.08l-0.187-0.026
c-0.106,0-0.187,0-0.187,0c-0.186,0-0.346,0.026-0.506,0.106c-0.24,0.426-0.399,1.012-0.612,1.864h0.346l0.266-0.666
c0.133-0.267,0.426-0.426,0.826-0.426c0.08,0,0.213,0,0.426,0c0.133,0.026,0.24,0.026,0.453,0.026c0.32,0,0.586-0.026,0.985-0.08
c-1.757,1.917-2.423,3.249-2.423,4.819c0,1.226,0.719,2.104,1.758,2.104c0.666,0,1.251-0.292,1.997-0.932
c0.746-0.692,1.491-1.757,1.997-2.849c0.346-0.799,0.612-1.864,0.612-2.503c0-0.905-0.399-1.545-0.985-1.545
c-0.213,0-0.399,0.054-0.506,0.187L81.86,41.181"/>
</g>
</g>
<g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" points="265.477,118.825 232.551,90.492 213.477,45.513 242.206,35.193 243.977,16.367
267.291,0.658 281.298,16.367 312.977,6.158 320.39,35.193 349.144,50.825 330.044,77.493 322.144,99.158 302.992,116.492 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="265.477,118.825 232.551,90.492 213.477,45.513
242.206,35.193 243.977,16.367 267.291,0.658 281.298,16.367 312.977,6.158 320.39,35.193 349.144,50.825 330.044,77.493
322.144,99.158 302.992,116.492 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="283.766" y1="28.996" x2="281.298" y2="16.367"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="311.736" y1="40.831" x2="320.39" y2="35.193"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="312.965" y1="68.413" x2="330.044" y2="77.493"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="295.076" y1="82.129" x2="302.992" y2="116.492"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="279.503" y1="81.125" x2="265.477" y2="118.825"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="265.591" y1="70.095" x2="232.551" y2="90.492"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="264.088" y1="44.768" x2="242.206" y2="35.193"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="283.766,28.996 264.088,44.768 265.591,70.095
279.503,81.125 295.076,82.129 312.965,68.413 311.736,40.831 "/>
<polygon opacity="0.2" fill="#1B1F8A" points="264.088,44.768 265.591,70.095 279.503,81.125 295.076,82.129 312.965,68.413
311.736,40.831 283.766,28.996 "/>
</g>
<g>
<defs>
<rect id="SVGID_3_" x="282.648" y="48.78" width="10" height="17"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M290.29,54.89c0.08-0.293,0.187-0.666,0.267-0.879l-0.054-0.106l-0.106,0.026
c-0.399,0.08-0.559,0.106-1.331,0.106h-0.267l0.346-1.783c0.24-1.358,0.692-1.971,1.412-1.971c0.479,0,0.905,0.239,1.145,0.612
l0.16-0.054c0.08-0.266,0.239-0.745,0.373-1.064l0.08-0.24c-0.267-0.106-0.746-0.213-1.119-0.213c-0.16,0-0.426,0.054-0.559,0.106
c-0.373,0.187-1.677,1.146-2.05,1.545c-0.346,0.346-0.533,0.825-0.719,1.73l-0.24,1.252c-0.639,0.319-0.958,0.452-1.358,0.585
l-0.08,0.347h1.278l-0.133,0.905c-0.479,3.089-1.065,6.044-1.411,7.136c-0.293,0.933-0.772,1.438-1.332,1.438
c-0.373,0-0.533-0.106-0.825-0.453l-0.24,0.054c-0.053,0.373-0.267,1.118-0.346,1.278c0.133,0.079,0.373,0.133,0.559,0.133
c0.639,0,1.491-0.506,2.13-1.252c0.958-1.145,1.305-2.263,2.476-7.828c0.053-0.213,0.16-0.799,0.293-1.411H290.29"/>
</g>
</g>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M227.278,19.637
c-18.174-6.461-37.744-9.979-58.134-9.979c-20.525,0-40.219,3.564-58.494,10.107"/>
<g>
<polygon points="237.145,23.491 225.375,12.474 226.51,19.434 221.028,23.868 "/>
</g>
</g>
</g>
<g>
<path d="M132.623,20.639v-0.586c-0.666,0-1.278,0-1.465,0.026c-0.532,0-0.905,0-1.091,0c-0.24,0-0.24,0-2.53-0.026v0.586
l0.666,0.053c0.399,0.027,0.639,0.32,0.985,1.146l3.781,9.08h1.225c0.16-0.427,0.213-0.586,0.293-0.772
c0.08-0.239,0.133-0.426,0.187-0.479c0-0.053,0.053-0.187,0.106-0.319l3.328-7.908c0.187-0.506,0.4-0.719,0.746-0.746l0.506-0.053
v-0.586c-1.704,0.026-1.704,0.026-1.864,0.026c-0.16,0-0.426,0-0.878,0c-0.133-0.026-0.533-0.026-0.932-0.026v0.586l0.719,0.053
c0.373,0.027,0.586,0.16,0.586,0.399c0,0.24-0.16,0.746-0.479,1.571l-2.264,5.618l-2.503-6.15
c-0.319-0.825-0.319-0.853-0.319-1.146c0-0.133,0.186-0.293,0.399-0.293L132.623,20.639"/>
<path d="M141.81,26.523h-0.08c-0.08,0-0.533,0-0.746-0.027l-0.533-0.026c0.053-1.571,0.453-2.21,1.358-2.21s1.278,0.639,1.331,2.21
L141.81,26.523 M145.138,26.177c0-1.704-1.171-2.796-2.982-2.796c-0.56,0-0.985,0.106-1.412,0.373l-0.746,0.426
c-1.038,0.64-1.518,1.598-1.518,3.089c0,2.53,1.278,3.861,3.648,3.861c0.905,0,1.491-0.16,2.503-0.666l0.373-0.772l-0.213-0.239
c-0.746,0.426-1.225,0.56-1.837,0.56c-0.853,0-1.625-0.453-2.024-1.119c-0.24-0.452-0.346-0.825-0.373-1.57h2.077
c0.905,0,1.625-0.08,2.503-0.319V26.177z"/>
<path d="M149.212,23.381l-1.119,0.347c-0.506,0.159-0.799,0.213-1.784,0.346v0.56l0.719,0.053c0.346,0.027,0.399,0.187,0.399,1.119
v3.487c0,0.853-0.08,0.959-0.559,1.013l-0.559,0.026v0.586l2.05-0.054c0.186,0,0.239,0,2.396,0.054v-0.586l-0.612-0.026
c-0.692-0.054-0.772-0.134-0.772-1.013v-3.168c0-0.479,0.639-1.012,1.278-1.012c0.399,0,0.666,0.186,0.905,0.585l0.373-0.159
l0.08-2.051c-0.16-0.079-0.373-0.106-0.586-0.106c-0.453,0-0.746,0.187-1.358,0.853l-0.692,0.745v-1.491L149.212,23.381"/>
<path d="M157.173,29.905l-0.133-0.293c-0.32,0.159-0.479,0.213-0.719,0.213c-0.746,0-0.985-0.267-0.985-1.039v-3.78h1.678
l0.133-1.039l-1.811,0.106v-0.932c0-0.853,0.053-1.358,0.187-2.157l-0.213-0.159c-0.639,0.293-1.145,0.479-1.944,0.799
c0.053,0.825,0.053,1.118,0.053,1.464v0.959l-1.039,0.666v0.346l1.012-0.053v4.127c0,1.411,0.586,1.997,1.971,1.997
c0.479,0,0.879-0.106,1.039-0.267L157.173,29.905"/>
<path d="M161.301,26.523h-0.08c-0.08,0-0.506,0-0.746-0.027l-0.506-0.026c0.053-1.571,0.426-2.21,1.332-2.21
s1.305,0.639,1.331,2.21L161.301,26.523 M164.656,26.177c0-1.704-1.198-2.796-3.009-2.796c-0.559,0-0.958,0.106-1.385,0.373
l-0.772,0.426c-1.039,0.64-1.491,1.598-1.491,3.089c0,2.53,1.251,3.861,3.621,3.861c0.905,0,1.518-0.16,2.53-0.666l0.346-0.772
l-0.187-0.239c-0.746,0.426-1.225,0.56-1.864,0.56c-0.826,0-1.598-0.453-1.997-1.119c-0.267-0.452-0.346-0.825-0.399-1.57h2.104
c0.905,0,1.598-0.08,2.503-0.319V26.177z"/>
<path d="M168.41,27.535l-1.757,2.21c-0.319,0.399-0.612,0.56-1.092,0.586v0.532h1.438c0.453-0.719,0.639-0.958,0.825-1.225
l1.012-1.411l1.598,2.689l1.251-0.054c0.639,0.026,0.746,0.026,1.225,0.054v-0.586c-0.506-0.054-0.825-0.347-1.384-1.252
l-1.412-2.423l1.544-1.811c0.506-0.586,0.666-0.666,1.251-0.692v-0.586h-1.518l-1.731,2.396l-0.825-1.357
c-0.373-0.613-0.666-0.959-0.985-1.226c-0.533,0.134-1.731,0.399-2.316,0.506l0.133,0.586c0.08-0.026,0.187-0.026,0.24-0.026
c0.533,0,0.799,0.213,1.225,0.932L168.41,27.535"/>
<path d="M177.437,20.905c0.373-0.054,0.612-0.054,0.932-0.054c1.278,0,1.837,0.506,1.837,1.678c0,1.385-0.692,1.97-2.29,1.97
h-0.479V20.905 M177.437,25.325h0.479c1.837,0,2.636,0.719,2.636,2.343c0,1.651-0.746,2.37-2.423,2.37c-0.24,0-0.426,0-0.692-0.054
V25.325z M178.236,20.053c-0.373,0.026-1.464,0.026-1.731,0.026c-0.213,0-0.666,0-1.411,0l-1.251-0.026v0.586l0.586,0.053
c0.719,0.054,0.772,0.16,0.772,1.545v7.109c0,0.56-0.08,0.799-0.319,0.905l-0.506,0.293v0.373c1.145-0.027,1.544-0.054,1.997-0.054
c0.24,0,0.56,0,0.959,0.026c0.825,0,1.251,0.027,1.305,0.027c2.529,0,4.287-1.438,4.287-3.488c0-0.825-0.293-1.545-0.852-1.944
c-0.586-0.372-1.119-0.532-2.396-0.612c1.331-0.479,1.811-0.692,2.29-1.145c0.373-0.373,0.613-0.933,0.613-1.545
c0-1.438-0.985-2.13-3.009-2.13H178.236z"/>
<path d="M187.795,26.523h-0.053c-0.106,0-0.532,0-0.772-0.027l-0.506-0.026c0.054-1.571,0.426-2.21,1.358-2.21
c0.905,0,1.278,0.639,1.305,2.21L187.795,26.523 M191.15,26.177c0-1.704-1.198-2.796-3.009-2.796c-0.559,0-0.958,0.106-1.385,0.373
l-0.745,0.426c-1.065,0.64-1.518,1.598-1.518,3.089c0,2.53,1.278,3.861,3.648,3.861c0.905,0,1.491-0.16,2.503-0.666l0.346-0.772
l-0.187-0.239c-0.745,0.426-1.225,0.56-1.864,0.56c-0.825,0-1.598-0.453-1.997-1.119c-0.266-0.452-0.346-0.825-0.373-1.57h2.077
c0.905,0,1.625-0.08,2.503-0.319V26.177z"/>
<path d="M195.437,30.917h1.358c0.267-0.719,0.426-1.118,0.613-1.545l2.023-4.58c0.16-0.346,0.319-0.479,0.586-0.532l0.479-0.08
v-0.612l-1.545,0.054c-0.799-0.027-0.932-0.027-1.544-0.054v0.612l0.612,0.027c0.213,0.026,0.373,0.133,0.373,0.266
c0,0.187-0.053,0.426-0.16,0.666l-0.958,2.396c-0.133,0.346-0.292,0.666-0.559,1.278l-1.385-3.516
c-0.16-0.399-0.24-0.639-0.24-0.825c0-0.159,0.133-0.239,0.373-0.266l0.639-0.027v-0.612l-2.05,0.054c-0.186,0-0.453,0-2.05-0.054
v0.612l0.399,0.027c0.267,0.026,0.479,0.292,0.746,0.984L195.437,30.917"/>
<path d="M204.704,26.523h-0.081c-0.08,0-0.505,0-0.745-0.027l-0.506-0.026c0.026-1.571,0.426-2.21,1.331-2.21
s1.305,0.639,1.332,2.21L204.704,26.523 M208.059,26.177c0-1.704-1.199-2.796-3.01-2.796c-0.559,0-0.985,0.106-1.411,0.373
l-0.746,0.426c-1.038,0.64-1.491,1.598-1.491,3.089c0,2.53,1.251,3.861,3.621,3.861c0.906,0,1.491-0.16,2.529-0.666l0.346-0.772
l-0.186-0.239c-0.746,0.426-1.225,0.56-1.864,0.56c-0.825,0-1.624-0.453-1.997-1.119c-0.267-0.452-0.373-0.825-0.399-1.57h2.077
c0.905,0,1.624-0.08,2.53-0.319V26.177z"/>
<path d="M212.079,19.414l-1.145,0.372c-0.479,0.134-1.012,0.213-1.917,0.32v0.585l0.826,0.027c0.346,0.026,0.426,0.187,0.426,1.118
v7.455c0,0.853-0.08,0.959-0.586,1.013l-0.559,0.026v0.586l2.05-0.054c0.32,0,1.091,0.026,2.157,0.054v-0.586l-0.559-0.026
c-0.48-0.054-0.56-0.16-0.56-1.013v-9.771L212.079,19.414"/>
</g>
<g>
<g>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="71.827,29.386 70.906,28.996
70.126,29.622 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="2.1108,2.1108" x1="68.479" y1="30.941" x2="52.832" y2="43.482"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="52.008,44.142 51.228,44.768
51.287,45.766 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="2.1247,2.1247" x1="51.413" y1="47.887" x2="52.609" y2="68.036"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="52.672,69.097 52.731,70.095
53.515,70.716 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.9964,1.9964" points="
55.08,71.956 66.643,81.125 82.216,82.129 98.52,69.628 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="99.312,69.021 100.105,68.413
100.061,67.414 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.97,1.97" x1="99.973" y1="65.446" x2="98.965" y2="42.813"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="98.921,41.83 98.876,40.831
97.956,40.441 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.8914,1.8914" x1="96.213" y1="39.704" x2="72.698" y2="29.754"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="374.264px" height="166.379px" viewBox="0 0 374.264 166.379" enable-background="new 0 0 374.264 166.379"
xml:space="preserve">
<g>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M238.239,11.479
C220.064,5.018,200.496,1.5,180.104,1.5c-20.524,0-40.22,3.564-58.494,10.107"/>
<g>
<polygon points="248.105,15.332 236.336,4.315 237.471,11.275 231.989,15.709 "/>
</g>
</g>
</g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="39.812,22.958 20.785,22.958 0.627,35.704 2,67.938
27.9,87.945 27.9,87.945 56.317,153.984 87.64,165.843 117.93,153.984 144.699,149.243 150.627,118.412 134.916,103.59
141.166,83.188 127.505,63.273 150.627,35.704 112.075,18.808 78.143,6.95 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="81.408" y2="114.855"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="112.075" y2="18.808"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="39.812" y2="22.958"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="27.9" y2="87.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="27.9" y2="87.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="56.317" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="117.93" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="134.916" y2="103.59"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="127.505" y2="63.273"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="78.143" y2="6.95"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="39.812,22.958 20.785,22.958 0.627,35.704 2,67.938
27.9,87.945 27.9,87.945 56.317,153.984 87.64,165.843 117.93,153.984 144.699,149.243 150.627,118.412 134.916,103.59
141.166,83.188 127.505,63.273 150.627,35.704 112.075,18.808 78.143,6.95 "/>
</g>
<g>
<g>
<g>
<defs>
<rect id="SVGID_1_" x="83.23" y="79.343" width="6" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M85.015,82.789c0.293-1.092,0.61-1.784,1.063-2.184c0.293-0.266,0.771-0.452,1.146-0.452
c0.479,0,0.771,0.319,0.771,0.825c0,0.692-0.561,1.438-1.385,1.837c-0.452,0.24-1.013,0.399-1.73,0.56L85.015,82.789
M88.449,85.372l-0.398,0.267c-0.825,0.612-1.598,0.932-2.156,0.932c-0.745,0-1.226-0.586-1.226-1.543
c0-0.398,0.055-0.825,0.133-1.277l1.307-0.319c0.267-0.08,0.69-0.24,1.092-0.399c1.357-0.586,1.971-1.332,1.971-2.317
c0-0.745-0.531-1.225-1.331-1.225c-1.039,0-2.797,1.092-3.407,2.104c-0.479,0.799-0.959,2.689-0.959,3.756
c0,1.252,0.691,1.971,1.838,1.971c0.903,0,1.812-0.452,3.273-1.625L88.449,85.372z"/>
</g>
</g>
</g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="262.635,22.958 243.608,22.958 223.45,35.704
224.936,67.938 250.723,87.945 250.723,87.945 279.141,153.984 310.463,165.843 340.754,153.984 367.521,149.243 373.451,118.412
357.74,103.59 364.043,83.483 350.328,63.273 373.451,35.704 334.898,18.808 300.966,6.95 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="334.898" y2="18.808"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="262.635" y2="22.958"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="250.723" y2="87.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="250.723" y2="87.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="279.141" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="340.754" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="357.74" y2="103.59"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="350.328" y2="63.273"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="86.396" x2="300.966" y2="6.95"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="262.635,22.958 243.608,22.958 223.45,35.704
224.936,67.938 250.723,87.945 250.723,87.945 279.141,153.984 310.463,165.843 340.754,153.984 367.521,149.243 373.451,118.412
357.74,103.59 364.043,83.483 350.328,63.273 373.451,35.704 334.898,18.808 300.966,6.95 "/>
</g>
<circle cx="304.23" cy="86.396" r="5.318"/>
<g>
<g>
<defs>
<rect id="SVGID_3_" x="301.108" y="99.945" width="8" height="8"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M306.194,101.021l0.159,0.293c0.159-0.078,0.293-0.133,0.428-0.133
c0.426,0,0.69,0.373,0.69,1.012c0,2.345-1.544,4.927-2.929,4.927c-0.799,0-1.278-0.665-1.278-1.704
c0-1.65,0.613-3.115,2.185-5.032l-0.16-0.293c-0.319,0.134-0.532,0.187-0.984,0.187c-0.426,0-1.119-0.025-1.571-0.079
l-0.187-0.026c-0.106,0-0.188,0-0.188,0c-0.187,0-0.347,0.026-0.506,0.105c-0.239,0.427-0.398,1.013-0.611,1.865h0.346
l0.267-0.666c0.134-0.268,0.427-0.427,0.825-0.427c0.08,0,0.213,0,0.426,0c0.134,0.026,0.24,0.026,0.453,0.026
c0.32,0,0.586-0.026,0.985-0.08c-1.757,1.917-2.423,3.249-2.423,4.818c0,1.227,0.719,2.104,1.758,2.104
c0.665,0,1.251-0.292,1.996-0.933c0.746-0.691,1.49-1.756,1.998-2.848c0.346-0.8,0.61-1.865,0.61-2.504
c0-0.904-0.397-1.545-0.983-1.545c-0.213,0-0.4,0.055-0.506,0.188L306.194,101.021"/>
</g>
</g>
<g>
<g>
<defs>
<rect id="SVGID_5_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_6_">
<use xlink:href="#SVGID_5_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_6_)" d="M135.586,12.816c0.906-0.026,1.438-0.054,2.316-0.054c0.853,0,1.545,0.134,1.545,0.319
l0.133,1.198h0.586l0.213-2.263l-0.106-0.106c-0.585-0.054-0.878-0.08-1.49-0.08c-0.373,0-0.853,0.026-1.73,0.053
c-1.145,0.027-1.598,0.027-2.05,0.027c-0.561,0-1.251-0.027-2.982-0.054v0.586l0.586,0.054c0.692,0.053,0.746,0.159,0.746,1.544
v7.136c0,0.533-0.08,0.772-0.319,0.906l-0.507,0.292v0.347c1.571-0.026,1.571-0.026,1.944-0.026h0.533
c1.624,0.026,2.263,0.053,3.062,0.053c0.826,0,1.332-0.026,2.237-0.053l0.08-0.134l0.187-2.529h-0.639l-0.346,1.518
c0,0-0.026,0.026-0.053,0.026c-0.507,0.16-0.958,0.24-1.838,0.24c-0.666,0-1.277-0.026-2.104-0.054v-4.233
c0.453-0.054,0.719-0.054,1.064-0.054h1.065c0.586,0,0.853,0.16,0.905,0.586l0.08,0.799h0.639l-0.027-1.73
c0-0.16,0-0.187,0.027-1.704h-0.639l-0.08,0.905c-0.026,0.267-0.24,0.346-0.905,0.346h-1.065c-0.506,0-0.745,0-1.064-0.026v-3.835
"/>
</g>
<g>
<defs>
<rect id="SVGID_7_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_8_">
<use xlink:href="#SVGID_7_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_8_)" d="M147.222,20.139c0,0.719-0.746,1.305-1.624,1.305c-1.119,0-1.837-1.092-1.837-2.822
c0-1.598,0.559-2.396,1.678-2.396c0.692,0,1.251,0.293,1.784,0.985L147.222,20.139 M149.166,11.325l-0.133-0.08l-1.146,0.347
c-0.453,0.133-1.012,0.239-1.917,0.319v0.586l0.826,0.053c0.373,0,0.426,0.16,0.426,1.092v1.943l-0.319-0.106
c-0.452-0.186-0.879-0.293-1.277-0.293c-0.506,0-0.958,0.16-1.384,0.427l-1.146,0.745c-0.905,0.612-1.332,1.518-1.332,2.876
c0,2.264,1.172,3.728,3.036,3.728c0.346,0,0.612-0.079,0.772-0.187l1.65-1.357l-0.08,1.198l0.08,0.106
c0.959-0.026,1.251-0.026,1.438-0.026c0.105,0,0.398,0,0.852,0.026c0.106,0,0.399,0,0.746,0v-0.586l-0.533-0.026
c-0.479-0.026-0.559-0.16-0.559-1.012v-9.773H149.166z"/>
</g>
<g>
<defs>
<rect id="SVGID_9_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_10_">
<use xlink:href="#SVGID_9_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_10_)" d="M155.104,22.908c1.944,0,2.423,0.266,2.423,1.278c0,1.092-1.064,1.917-2.477,1.917
s-2.37-0.666-2.37-1.651c0-0.586,0.346-1.118,0.825-1.357C153.746,22.988,154.332,22.908,155.104,22.908 M154.785,15.985
c0.852,0,1.305,0.691,1.305,1.943c0,1.118-0.426,1.704-1.278,1.704c-0.825,0-1.331-0.692-1.331-1.891
C153.48,16.598,153.933,15.985,154.785,15.985z M159.205,16.837l0.08-1.012c-0.666,0.053-0.958,0.08-1.306,0.08
c-0.133,0-0.319,0-0.586-0.027c-0.639-0.479-1.385-0.692-2.423-0.692c-2.022,0-3.435,1.198-3.435,2.85
c0,0.586,0.213,1.118,0.585,1.544c0.293,0.293,0.532,0.453,1.092,0.64l-1.118,0.853c-0.16,0.105-0.266,0.453-0.266,0.771
c0,0.56,0.266,0.854,1.064,1.065l-1.277,0.772c-0.239,0.133-0.427,0.532-0.427,0.984c0,1.358,1.331,2.237,3.436,2.237
c2.796,0,4.66-1.438,4.66-3.542c0-1.357-0.746-1.97-2.344-1.97h-0.398c-1.571,0.026-2.13,0.053-2.316,0.053
c-0.479,0-0.746-0.159-0.746-0.479c0-0.239,0.16-0.426,0.479-0.612c0.267,0,0.426,0.026,0.612,0.026
c1.118,0,2.13-0.372,2.77-1.012c0.506-0.506,0.719-1.064,0.719-1.837c0-0.267-0.025-0.453-0.08-0.772L159.205,16.837z"/>
</g>
<g>
<defs>
<rect id="SVGID_11_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_12_">
<use xlink:href="#SVGID_11_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_12_)" d="M163.652,18.354h-0.053c-0.105,0-0.533-0.026-0.771-0.053h-0.507
c0.054-1.571,0.427-2.21,1.358-2.21c0.905,0,1.278,0.639,1.305,2.21L163.652,18.354 M167.007,17.982
c0-1.678-1.198-2.797-3.009-2.797c-0.532,0-0.958,0.134-1.384,0.373l-0.746,0.453c-1.065,0.612-1.519,1.57-1.519,3.089
c0,2.503,1.278,3.86,3.648,3.86c0.904,0,1.49-0.159,2.503-0.692l0.346-0.771l-0.186-0.24c-0.746,0.427-1.226,0.56-1.864,0.56
c-0.825,0-1.598-0.426-1.997-1.118c-0.266-0.453-0.346-0.826-0.373-1.571h2.077c0.905,0,1.625-0.08,2.503-0.319V17.982
L167.007,17.982z"/>
</g>
<g>
<defs>
<rect id="SVGID_13_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_14_">
<use xlink:href="#SVGID_13_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_14_)" d="M178.696,21.311l-0.213-0.213c-1.012,0.559-2.05,0.825-3.089,0.825
c-2.769,0-4.633-1.971-4.633-4.979c0-2.742,1.571-4.42,4.074-4.42c1.198,0,1.971,0.293,2.823,1.092l0.079,1.385h0.64
c0.16-1.545,0.213-1.838,0.346-2.45l-0.08-0.16c-1.464-0.585-2.343-0.745-3.728-0.745c-4.021,0-6.524,2.13-6.524,5.512
c0,3.568,2.45,5.805,6.364,5.805c1.464,0,2.396-0.239,3.568-0.878L178.696,21.311"/>
</g>
<g>
<defs>
<rect id="SVGID_15_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_16_">
<use xlink:href="#SVGID_15_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_16_)" d="M183.569,15.958c1.146,0,1.679,1.118,1.679,3.462c0,1.943-0.453,2.77-1.545,2.77
c-1.118,0-1.73-1.172-1.73-3.462C181.971,16.811,182.451,15.958,183.569,15.958 M183.756,15.186c-2.53,0-3.941,1.412-3.941,3.941
c0,2.449,1.306,3.834,3.622,3.834c2.529,0,3.967-1.464,3.967-4.021C187.403,16.518,186.098,15.186,183.756,15.186z"/>
</g>
<g>
<defs>
<rect id="SVGID_17_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_18_">
<use xlink:href="#SVGID_17_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_18_)" d="M191.425,11.245l-1.146,0.347c-0.451,0.133-0.984,0.239-1.917,0.319v0.586l0.853,0.053
c0.347,0,0.4,0.16,0.4,1.092v7.456c0,0.852-0.08,0.985-0.561,1.012l-0.56,0.026v0.586l2.051-0.026c0.319,0,1.092,0,2.156,0.026
v-0.586l-0.56-0.026c-0.506-0.026-0.586-0.16-0.586-1.012v-9.772L191.425,11.245"/>
</g>
<g>
<defs>
<rect id="SVGID_19_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_20_">
<use xlink:href="#SVGID_19_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_20_)" d="M196.723,11.245l-1.146,0.347c-0.452,0.133-0.985,0.239-1.917,0.319v0.586l0.852,0.053
c0.347,0,0.4,0.16,0.4,1.092v7.456c0,0.852-0.08,0.985-0.561,1.012l-0.56,0.026v0.586l2.051-0.026c0.319,0,1.092,0,2.156,0.026
v-0.586l-0.56-0.026c-0.506-0.026-0.586-0.16-0.586-1.012v-9.772L196.723,11.245"/>
</g>
<g>
<defs>
<rect id="SVGID_21_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_22_">
<use xlink:href="#SVGID_21_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_22_)" d="M203.433,20.857c-0.294,0.399-0.879,0.719-1.357,0.719c-0.507,0-0.825-0.399-0.825-1.012
c0-0.771,0.347-1.092,1.464-1.385l0.72-0.213L203.433,20.857 M203.433,21.604l-0.08,1.012l0.08,0.106
c0.985-0.026,1.251-0.026,1.438-0.026c0.214,0,0.452,0,1.411,0.026v-0.586l-0.479-0.053c-0.345-0.054-0.426-0.214-0.452-0.959
v-0.319c0-0.533-0.026-0.959-0.026-1.358c0-0.426,0.026-0.932,0.026-1.544c0.026-0.187,0.026-0.347,0.026-0.453
c0-1.411-0.958-2.264-2.557-2.264c-0.665,0-1.331,0.187-1.918,0.56l-0.824,0.506v1.092l0.479,0.106l0.346-0.799
c0.027-0.106,0.479-0.213,0.906-0.213c1.064,0,1.57,0.56,1.624,1.864l-1.385,0.293c-2.023,0.426-2.716,1.038-2.716,2.396
c0,1.277,0.639,1.97,1.838,1.97c0.371,0,0.639-0.079,0.798-0.187L203.433,21.604z"/>
</g>
<g>
<defs>
<rect id="SVGID_23_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_24_">
<use xlink:href="#SVGID_23_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_24_)" d="M210.117,17.423c0.346-0.532,0.879-0.799,1.518-0.799c1.225,0,1.971,0.958,1.971,2.556
c0,1.651-0.72,2.689-1.892,2.689c-0.665,0-1.17-0.266-1.597-0.878V17.423 M209.957,15.186l-1.118,0.373
c-0.533,0.134-0.799,0.187-1.624,0.293l-0.16,0.026v0.586l0.719,0.027c0.348,0.026,0.399,0.186,0.399,1.118v7.535
c0,0.853-0.08,0.985-0.559,1.012l-0.561,0.027v0.585l2.05-0.026c0.188,0,0.24,0,2.291,0.026v-0.585l-0.719-0.027
c-0.479,0-0.56-0.159-0.56-1.012v-2.449c0.771,0.213,1.037,0.266,1.41,0.266c0.532,0,1.093-0.293,2.185-1.145
c0.08-0.08,0.186-0.16,0.266-0.213c1.039-0.799,1.625-2.024,1.625-3.462c0-1.678-1.225-2.956-2.876-2.956
c-0.611,0-1.092,0.187-1.65,0.64l-0.958,0.772v-1.305L209.957,15.186z"/>
</g>
<g>
<defs>
<rect id="SVGID_25_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_26_">
<use xlink:href="#SVGID_25_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_26_)" d="M222.126,17.503l0.133-1.944c-0.611-0.266-1.092-0.373-1.943-0.373
c-2.156,0-3.302,0.879-3.302,2.45c0,1.065,0.561,1.73,1.677,1.997l1.358,0.319c0.746,0.187,1.012,0.453,1.012,1.012
c0,0.746-0.585,1.226-1.464,1.226c-0.746,0-1.278-0.24-1.784-0.826l-0.081-1.092h-0.61l-0.106,2.237
c0.905,0.319,1.624,0.452,2.45,0.452c1.996,0,3.354-1.118,3.354-2.742c0-1.146-0.585-1.729-2.021-2.051l-1.305-0.293
c-0.612-0.133-0.854-0.399-0.854-0.878c0-0.64,0.533-1.039,1.385-1.039c0.64,0,1.331,0.293,1.386,0.612l0.158,0.933H222.126"/>
</g>
<g>
<defs>
<rect id="SVGID_27_" x="131.486" y="10.982" width="100" height="16"/>
</defs>
<clipPath id="SVGID_28_">
<use xlink:href="#SVGID_27_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_28_)" d="M227.372,18.354h-0.08c-0.08,0-0.533-0.026-0.746-0.053h-0.532
c0.054-1.571,0.452-2.21,1.358-2.21c0.903,0,1.276,0.639,1.33,2.21L227.372,18.354 M230.7,17.982c0-1.678-1.173-2.797-2.982-2.797
c-0.559,0-0.984,0.134-1.411,0.373l-0.745,0.453c-1.039,0.612-1.519,1.57-1.519,3.089c0,2.503,1.278,3.86,3.646,3.86
c0.906,0,1.492-0.159,2.504-0.692l0.373-0.771l-0.214-0.24c-0.745,0.427-1.225,0.56-1.837,0.56c-0.852,0-1.625-0.426-2.022-1.118
c-0.24-0.453-0.348-0.826-0.373-1.571h2.076c0.905,0,1.625-0.08,2.504-0.319V17.982z"/>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="397.95px" height="144.155px" viewBox="0 0 397.95 144.155" enable-background="new 0 0 397.95 144.155"
xml:space="preserve">
<polygon opacity="0.2" fill="#1B1F8A" points="27.369,99.587 41.232,57.996 73.103,34.25 126.4,40.633 140.03,64.093
120.375,94.372 34.22,114.564 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="19.999,42.64 66.167,8.241 141.754,17.293 169.364,64.819
135.87,116.417 19.999,143.575 0.536,101.028 "/>
<polygon opacity="0.2" fill="#1B1F8A" points="19.999,42.64 66.167,8.241 141.754,17.293 169.364,64.819 135.87,116.417
19.999,143.575 0.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="19.999,42.64 66.167,8.241 141.754,17.293 169.364,64.819
135.87,116.417 19.999,143.575 0.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="27.369,99.587 41.232,57.996 73.103,34.25 126.4,40.633
140.03,64.093 120.375,94.372 34.22,114.564 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="34.22" y1="114.564" x2="19.999" y2="143.575"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="27.369" y1="99.587" x2="0.536" y2="101.028"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="41.232" y1="57.996" x2="19.999" y2="42.64"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="73.103" y1="34.25" x2="66.167" y2="8.241"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="126.4" y1="40.633" x2="141.754" y2="17.293"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="140.03" y1="64.093" x2="169.364" y2="64.819"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="120.375" y1="94.372" x2="135.87" y2="116.417"/>
<g>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="247.999,42.64 294.167,8.241 369.754,17.293 397.364,64.819
363.87,116.417 247.999,143.575 228.536,101.028 "/>
<polygon opacity="0.2" fill="#1B1F8A" points="247.999,42.64 294.167,8.241 369.754,17.293 397.364,64.819 363.87,116.417
247.999,143.575 228.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="247.999,42.64 294.167,8.241 369.754,17.293 397.364,64.819
363.87,116.417 247.999,143.575 228.536,101.028 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="247.999" y2="143.575"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="228.536" y2="101.028"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="247.999" y2="42.64"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="294.167" y2="8.241"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="369.754" y2="17.293"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="397.364" y2="64.819"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="308.95" y1="71.062" x2="363.87" y2="116.417"/>
</g>
<g>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M264.146,11.479
C245.972,5.018,226.403,1.5,206.012,1.5c-20.525,0-40.219,3.564-58.494,10.107"/>
<g>
<polygon points="274.013,15.332 262.243,4.315 263.378,11.275 257.896,15.709 "/>
</g>
</g>
</g>
<g>
<defs>
<rect id="SVGID_1_" x="158.306" y="10.856" width="95" height="16"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M162.247,12.69c0.772-0.027,1.305-0.027,1.837-0.027c1.065,0,1.758,0.107,1.758,0.293
l0.133,1.198h0.586l0.213-2.263l-0.106-0.106c-0.586-0.054-0.878-0.08-1.491-0.08c-0.373,0-0.985,0.026-2.237,0.053
c-0.745,0.027-1.145,0.027-1.464,0.027c-0.453,0-0.453,0-2.822-0.054v0.586l0.585,0.054c0.719,0.053,0.772,0.159,0.772,1.544
v6.497c0,1.411-0.027,1.438-0.772,1.518l-0.585,0.027v0.639c1.917-0.026,1.917-0.026,2.45-0.026c0.532,0,0.532,0,2.663,0.026
v-0.639l-0.746-0.027c-0.746-0.053-0.772-0.133-0.772-1.518V17.43c0.453-0.026,0.719-0.026,1.065-0.026h0.799
c0.612,0,0.878,0.16,0.905,0.586l0.106,0.772h0.639l-0.053-1.705c0-0.186,0-0.399,0.053-1.624h-0.639l-0.106,0.825
c-0.027,0.267-0.24,0.347-0.905,0.347h-0.799c-0.533,0-0.746,0-1.065-0.054V12.69"/>
<path clip-path="url(#SVGID_2_)" d="M171.753,20.731c-0.293,0.399-0.879,0.719-1.358,0.719c-0.506,0-0.826-0.399-0.826-1.012
c0-0.771,0.346-1.092,1.465-1.385l0.719-0.213V20.731 M171.753,21.478l-0.08,1.012l0.08,0.106
c0.985-0.026,1.251-0.026,1.464-0.026c0.187,0,0.426,0,1.385,0.026V22.01l-0.479-0.053c-0.346-0.054-0.426-0.214-0.453-0.959
v-0.319c0-0.533-0.026-0.959-0.026-1.358c0-0.426,0.026-0.932,0.026-1.544c0.027-0.187,0.027-0.347,0.027-0.453
c0-1.411-0.958-2.264-2.556-2.264c-0.666,0-1.332,0.187-1.917,0.56l-0.825,0.506v1.092l0.479,0.106l0.346-0.799
c0.027-0.106,0.479-0.213,0.905-0.213c1.065,0,1.571,0.56,1.625,1.864l-1.385,0.293c-2.023,0.426-2.716,1.038-2.716,2.396
c0,1.277,0.639,1.97,1.837,1.97c0.373,0,0.639-0.08,0.799-0.187L171.753,21.478z"/>
<path clip-path="url(#SVGID_2_)" d="M181.206,17.829c0.106-1.012,0.187-1.544,0.32-2.236l-0.107-0.213
c-0.746-0.24-1.065-0.32-1.651-0.32c-0.585,0-1.039,0.134-1.411,0.347l-0.852,0.479c-1.411,0.852-1.917,1.65-1.917,3.035
c0,2.529,1.251,3.914,3.542,3.914c0.799,0,1.384-0.159,2.13-0.559l0.32-0.719l-0.133-0.16c-0.533,0.213-0.905,0.293-1.358,0.293
c-1.544,0-2.53-1.252-2.53-3.275c0-1.438,0.559-2.21,1.571-2.21c0.719,0,1.331,0.319,1.384,0.666l0.106,0.958H181.206"/>
<path clip-path="url(#SVGID_2_)" d="M186.079,18.229h-0.053c-0.107,0-0.533-0.026-0.772-0.053h-0.506
c0.053-1.571,0.426-2.21,1.358-2.21c0.905,0,1.278,0.639,1.305,2.21L186.079,18.229 M189.434,17.855
c0-1.677-1.198-2.796-3.009-2.796c-0.56,0-0.959,0.134-1.385,0.373l-0.746,0.453c-1.065,0.612-1.518,1.57-1.518,3.089
c0,2.503,1.278,3.86,3.648,3.86c0.905,0,1.491-0.159,2.503-0.692l0.346-0.771l-0.187-0.24c-0.746,0.427-1.225,0.56-1.864,0.56
c-0.826,0-1.598-0.426-1.997-1.118c-0.267-0.453-0.346-0.826-0.373-1.571h2.077c0.905,0,1.624-0.08,2.503-0.319V17.855z"/>
<path clip-path="url(#SVGID_2_)" d="M201.017,21.185l-0.213-0.213c-1.012,0.559-2.051,0.825-3.089,0.825
c-2.77,0-4.633-1.971-4.633-4.979c0-2.742,1.571-4.42,4.074-4.42c1.198,0,1.971,0.293,2.822,1.092l0.08,1.385h0.639
c0.16-1.545,0.214-1.838,0.347-2.45l-0.079-0.16c-1.465-0.585-2.344-0.745-3.729-0.745c-4.021,0-6.524,2.13-6.524,5.512
c0,3.568,2.45,5.805,6.364,5.805c1.465,0,2.396-0.239,3.568-0.878L201.017,21.185"/>
<path clip-path="url(#SVGID_2_)" d="M205.89,15.832c1.145,0,1.678,1.118,1.678,3.462c0,1.943-0.453,2.77-1.545,2.77
c-1.118,0-1.73-1.172-1.73-3.462C204.292,16.685,204.771,15.832,205.89,15.832 M206.075,15.06c-2.529,0-3.94,1.412-3.94,3.941
c0,2.449,1.305,3.834,3.622,3.834c2.529,0,3.967-1.464,3.967-4.021C209.724,16.392,208.419,15.06,206.075,15.06z"/>
<path clip-path="url(#SVGID_2_)" d="M213.851,11.119l-1.145,0.347c-0.453,0.133-0.985,0.239-1.918,0.319v0.586l0.853,0.053
c0.347,0,0.399,0.16,0.399,1.092v7.456c0,0.852-0.08,0.985-0.559,1.012l-0.56,0.026v0.586l2.05-0.026c0.32,0,1.065,0,2.131,0.026
V22.01l-0.56-0.026c-0.479-0.026-0.56-0.16-0.56-1.012v-9.772L213.851,11.119"/>
<path clip-path="url(#SVGID_2_)" d="M219.149,11.119l-1.145,0.347c-0.453,0.133-0.985,0.239-1.918,0.319v0.586l0.853,0.053
c0.347,0,0.399,0.16,0.399,1.092v7.456c0,0.852-0.08,0.985-0.559,1.012l-0.56,0.026v0.586l2.05-0.026c0.32,0,1.065,0,2.131,0.026
V22.01l-0.56-0.026c-0.479-0.026-0.56-0.16-0.56-1.012v-9.772L219.149,11.119"/>
<path clip-path="url(#SVGID_2_)" d="M225.753,20.731c-0.293,0.399-0.879,0.719-1.357,0.719c-0.506,0-0.826-0.399-0.826-1.012
c0-0.771,0.347-1.092,1.465-1.385l0.719-0.213V20.731 M225.753,21.478l-0.08,1.012l0.08,0.106
c0.986-0.026,1.252-0.026,1.438-0.026c0.213,0,0.452,0,1.411,0.026V22.01l-0.479-0.053c-0.347-0.054-0.426-0.214-0.452-0.959
v-0.319c0-0.533-0.027-0.959-0.027-1.358c0-0.426,0.027-0.932,0.027-1.544c0.026-0.187,0.026-0.347,0.026-0.453
c0-1.411-0.958-2.264-2.556-2.264c-0.666,0-1.332,0.187-1.918,0.56l-0.825,0.506v1.092l0.479,0.106l0.346-0.799
c0.027-0.106,0.479-0.213,0.905-0.213c1.065,0,1.571,0.56,1.624,1.864l-1.385,0.293c-2.023,0.426-2.715,1.038-2.715,2.396
c0,1.277,0.639,1.97,1.837,1.97c0.372,0,0.639-0.08,0.799-0.187L225.753,21.478z"/>
<path clip-path="url(#SVGID_2_)" d="M232.543,17.297c0.347-0.532,0.879-0.799,1.519-0.799c1.225,0,1.943,0.958,1.943,2.556
c0,1.651-0.691,2.689-1.863,2.689c-0.666,0-1.172-0.266-1.599-0.878V17.297 M232.384,15.06l-1.119,0.373
c-0.531,0.134-0.825,0.187-1.624,0.293l-0.187,0.026v0.586l0.72,0.027c0.372,0.026,0.426,0.186,0.426,1.118v7.535
c0,0.853-0.079,0.985-0.586,1.012l-0.56,0.027v0.585l2.051-0.026c0.213,0,0.239,0,2.316,0.026v-0.585l-0.719-0.027
c-0.479,0-0.56-0.159-0.56-1.012v-2.449c0.772,0.213,1.013,0.266,1.412,0.266c0.532,0,1.091-0.293,2.183-1.145
c0.08-0.08,0.187-0.16,0.267-0.213c1.038-0.799,1.624-2.024,1.624-3.462c0-1.678-1.225-2.956-2.875-2.956
c-0.64,0-1.092,0.187-1.65,0.64l-0.96,0.772v-1.305L232.384,15.06z"/>
<path clip-path="url(#SVGID_2_)" d="M244.446,17.377l0.133-1.944c-0.613-0.266-1.092-0.373-1.943-0.373
c-2.157,0-3.303,0.879-3.303,2.45c0,1.065,0.561,1.73,1.678,1.997l1.357,0.319c0.746,0.187,1.013,0.453,1.013,1.012
c0,0.746-0.586,1.226-1.465,1.226c-0.745,0-1.278-0.24-1.784-0.826l-0.08-1.092h-0.612l-0.106,2.237
c0.905,0.319,1.625,0.452,2.45,0.452c1.997,0,3.354-1.118,3.354-2.742c0-1.146-0.586-1.73-2.023-2.051l-1.305-0.293
c-0.611-0.133-0.852-0.399-0.852-0.878c0-0.64,0.532-1.039,1.385-1.039c0.639,0,1.33,0.293,1.385,0.612l0.159,0.933H244.446"/>
<path clip-path="url(#SVGID_2_)" d="M249.771,18.229h-0.054c-0.106,0-0.532-0.026-0.771-0.053h-0.506
c0.053-1.571,0.426-2.21,1.357-2.21c0.905,0,1.278,0.639,1.305,2.21L249.771,18.229 M253.126,17.855
c0-1.677-1.197-2.796-3.008-2.796c-0.533,0-0.959,0.134-1.385,0.373l-0.746,0.453c-1.064,0.612-1.518,1.57-1.518,3.089
c0,2.503,1.277,3.86,3.648,3.86c0.904,0,1.49-0.159,2.502-0.692l0.346-0.771l-0.186-0.24c-0.746,0.427-1.225,0.56-1.864,0.56
c-0.825,0-1.597-0.426-1.997-1.118c-0.239-0.453-0.346-0.826-0.373-1.571h2.078c0.904,0,1.624-0.08,2.502-0.319V17.855z"/>
</g>
</g>
<circle cx="308.95" cy="71.062" r="5.318"/>
<g>
<defs>
<rect id="SVGID_3_" x="305.108" y="79.946" width="8" height="8"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M310.194,81.022l0.159,0.293c0.159-0.079,0.293-0.133,0.427-0.133
c0.426,0,0.691,0.373,0.691,1.012c0,2.344-1.544,4.926-2.929,4.926c-0.799,0-1.278-0.665-1.278-1.704
c0-1.65,0.613-3.115,2.184-5.032l-0.16-0.293c-0.319,0.133-0.532,0.187-0.984,0.187c-0.426,0-1.119-0.026-1.571-0.08l-0.187-0.026
c-0.106,0-0.187,0-0.187,0c-0.187,0-0.347,0.026-0.506,0.106c-0.239,0.426-0.399,1.012-0.612,1.864h0.346l0.267-0.666
c0.134-0.267,0.427-0.426,0.825-0.426c0.08,0,0.213,0,0.426,0c0.134,0.026,0.24,0.026,0.453,0.026c0.32,0,0.586-0.026,0.985-0.08
c-1.757,1.917-2.423,3.249-2.423,4.819c0,1.226,0.719,2.104,1.758,2.104c0.665,0,1.251-0.292,1.996-0.932
c0.746-0.692,1.491-1.757,1.998-2.849c0.346-0.799,0.611-1.864,0.611-2.503c0-0.905-0.398-1.545-0.984-1.545
c-0.213,0-0.4,0.054-0.506,0.187L310.194,81.022"/>
</g>
<g>
<defs>
<rect id="SVGID_5_" x="75.504" y="63.622" width="10" height="17"/>
</defs>
<clipPath id="SVGID_6_">
<use xlink:href="#SVGID_5_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_6_)" d="M83.146,69.731c0.08-0.293,0.187-0.666,0.267-0.879l-0.054-0.106l-0.106,0.026
c-0.399,0.08-0.559,0.106-1.331,0.106h-0.267l0.346-1.783c0.24-1.358,0.692-1.971,1.412-1.971c0.479,0,0.905,0.239,1.145,0.612
l0.16-0.054c0.08-0.266,0.239-0.745,0.373-1.064l0.08-0.24c-0.267-0.106-0.746-0.213-1.119-0.213c-0.16,0-0.426,0.054-0.559,0.106
c-0.373,0.187-1.677,1.146-2.05,1.545c-0.346,0.346-0.533,0.825-0.719,1.73l-0.24,1.252c-0.639,0.319-0.958,0.452-1.358,0.585
l-0.08,0.347h1.278l-0.133,0.905c-0.479,3.089-1.065,6.044-1.411,7.136c-0.293,0.933-0.772,1.438-1.332,1.438
c-0.373,0-0.533-0.106-0.825-0.453l-0.24,0.054c-0.053,0.373-0.267,1.118-0.346,1.278c0.133,0.079,0.373,0.133,0.559,0.133
c0.639,0,1.491-0.506,2.13-1.252c0.958-1.145,1.305-2.263,2.476-7.828c0.053-0.213,0.16-0.799,0.293-1.411H83.146"/>
</g>
</svg>
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <title>Edge Flip Tutorial - </title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> <script type="text/javascript" src="/assets/js/vendor/lunr.min.js"></script> <script type="text/javascript" src="/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.7.1 --> <title>Edge Flip Tutorial</title> <meta name="generator" content="Jekyll v4.2.0" /> <meta property="og:title" content="Edge Flip Tutorial" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Edge Flip Tutorial" /> <script type="application/ld+json"> {"headline":"Edge Flip Tutorial","@type":"WebPage","url":"/meshedit/local/edge_flip","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> </svg> <div class="side-bar"> <div class="site-header"> <a href="/" class="site-title lh-tight"> </a> <a href="#" id="menu-button" class="site-button"> <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg> </a> </div> <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/git/" class="nav-list-link">GitHub Setup</a></li><li class="nav-list-item"><a href="/build/" class="nav-list-link">Building Scotty3D</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/guide/" class="nav-list-link">User Guide</a><ul class="nav-list "><li class="nav-list-item "><a href="/guide/animate_mode/" class="nav-list-link">Animate</a></li><li class="nav-list-item "><a href="/guide/layout_mode/" class="nav-list-link">Layout</a></li><li class="nav-list-item "><a href="/guide/model_mode/" class="nav-list-link">Model</a></li><li class="nav-list-item "><a href="/guide/render_mode/" class="nav-list-link">Render</a></li><li class="nav-list-item "><a href="/guide/rigging_mode/" class="nav-list-link">Rig</a></li><li class="nav-list-item "><a href="/guide/simulate_mode/" class="nav-list-link">Simulate</a></li></ul></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/" class="nav-list-link">A2: MeshEdit</a><ul class="nav-list "><li class="nav-list-item "><a href="/meshedit/halfedge" class="nav-list-link">Halfedge Mesh</a></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/local/" class="nav-list-link">Local Operations</a><ul class="nav-list"><li class="nav-list-item active"> <a href="/meshedit/local/edge_flip" class="nav-list-link active">Edge Flip Tutorial</a> </li><li class="nav-list-item "> <a href="/meshedit/local/bevel/" class="nav-list-link">Bevelling</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/global/" class="nav-list-link">Global Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/global/catmull/" class="nav-list-link">Catmull-Clark Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/remesh/" class="nav-list-link">Isotropic Remeshing</a> </li><li class="nav-list-item "> <a href="/meshedit/global/linear/" class="nav-list-link">Linear Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/loop/" class="nav-list-link">Loop Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/simplify/" class="nav-list-link">Simplification</a> </li><li class="nav-list-item "> <a href="/meshedit/global/triangulate/" class="nav-list-link">Triangulation</a> </li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/" class="nav-list-link">A3: Pathtracer</a><ul class="nav-list "><li class="nav-list-item "><a href="/pathtracer/camera_rays" class="nav-list-link">(Task 1) Camera Rays</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/intersecting_objects" class="nav-list-link">(Task 2) Intersections</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/ray_triangle_intersection" class="nav-list-link">Ray Triangle Intersection</a> </li><li class="nav-list-item "> <a href="/pathtracer/ray_sphere_intersection" class="nav-list-link">Ray Sphere Intersection</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/bounding_volume_hierarchy" class="nav-list-link">(Task 3) BVH</a></li><li class="nav-list-item "><a href="/pathtracer/shadow_rays" class="nav-list-link">(Task 4) Shadow Rays</a></li><li class="nav-list-item "><a href="/pathtracer/path_tracing" class="nav-list-link">(Task 5) Path Tracing</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/materials" class="nav-list-link">(Task 6) Materials</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/dielectrics_and_transmission" class="nav-list-link">Dielectrics and Transmission</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/environment_lighting" class="nav-list-link">(Task 7) Environment Lighting</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/importance_sampling" class="nav-list-link">Environment Light Importance Sampling</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/visualization_of_normals" class="nav-list-link">Visualization of normals</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/animation/" class="nav-list-link">A4: Animation</a><ul class="nav-list "><li class="nav-list-item "><a href="/animation/splines" class="nav-list-link">Splines</a></li><li class="nav-list-item "><a href="/animation/skeleton_kinematics" class="nav-list-link">Skeleton Kinematics</a></li><li class="nav-list-item "><a href="/animation/skinning" class="nav-list-link">Skinning</a></li><li class="nav-list-item "><a href="/animation/particles" class="nav-list-link">Particles</a></li></ul></li></ul> </nav> <footer class="site-footer"> This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </footer> </div> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search " aria-label="Search " autocomplete="off"> <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> </div> <div id="search-results" class="search-results"></div> </div> </div> <div id="main-content-wrap" class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/meshedit/">A2: MeshEdit</a></li> <li class="breadcrumb-nav-list-item"><a href="/meshedit/local/">Local Operations</a></li> <li class="breadcrumb-nav-list-item"><span>Edge Flip Tutorial</span></li> </ol> </nav> <div id="main-content" class="main-content" role="main"> <h1 id="edge-flip-tutorial"> <a href="#edge-flip-tutorial" class="anchor-heading" aria-labelledby="edge-flip-tutorial"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Edge Flip Tutorial </h1> <p>Here we provide a step-by-step guide to implementing a simplified version of the <em>EdgeFlip</em> operation for a pair of triangles—the final version, however, must be implemented for general polygons (i.e., any <em>n</em>-gon). The basic strategy for implementing the other local operations is quite similar to the procedure outlined below.</p> <p><strong>Note:</strong> if you’re not familiar with C++, you should definitely take a moment to learn about the <a href="http://en.cppreference.com/w/cpp/container/vector">standard library class</a> <code class="language-plaintext highlighter-rouge">std::vector</code>, especially the method <code class="language-plaintext highlighter-rouge">push_back()</code>, which will make it easy to accumulate a list of pointers as you walk around a polygon, vertex, etc.</p> <p>We now consider the case of a triangle-triangle edge flip.</p> <h3 id="phase-0-draw-a-diagram"> <a href="#phase-0-draw-a-diagram" class="anchor-heading" aria-labelledby="phase-0-draw-a-diagram"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> PHASE 0: Draw a Diagram </h3> <p>Suppose we have a pair of triangles (a,b,c) and (c,b,d). After flipping the edge (b,c), we should now have triangles (a,d,c) and (a,b,d). A good first step for implementing any local mesh operation is to draw a diagram that clearly labels all elements affected by the operation:</p> <center><img src="edge_flip_diagram.png" /></center> <p>Here we have drawn a diagram of the region around the edge both before and after the edge operation (in this case, “flip”), labeling each type of element (halfedge, vertex, edge, and face) from zero to the number of elements. It is important to include every element affected by the operation, thinking very carefully about which elements will be affected. If elements are omitted during this phase, everything will break—even if the code written in the two phases is correct! In this example, for instance, we need to remember to include the halfedges “outside” the neighborhood, since their “twin” pointers will be affected.</p> <h3 id="phase-i-collect-elements"> <a href="#phase-i-collect-elements" class="anchor-heading" aria-labelledby="phase-i-collect-elements"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> PHASE I: Collect elements </h3> <p>Once you’ve drawn your diagram, simply collect all the elements from the “before” picture. Give them the same names as in your diagram, so that you can debug your code by comparing with the picture.</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// HALFEDGES
HalfedgeRef h0 = e0-&gt;halfedge();
HalfedgeRef h1 = h0-&gt;next();
HalfedgeRef h2 = h1-&gt;next();
HalfedgeRef h3 = h0-&gt;twin();
HalfedgeRef h4 = h3-&gt;next();
HalfedgeRef h5 = h4-&gt;next();
HalfedgeRef h6 = h1-&gt;twin();
HalfedgeRef h7 = h2-&gt;twin();
HalfedgeRef h8 = h4-&gt;twin();
HalfedgeRef h9 = h5-&gt;twin();
// VERTICES
VertexRef v0 = h0-&gt;vertex();
VertexRef v1 = h3-&gt;vertex();
// ...you fill in the rest!...
// EDGES
EdgeRef e1 = h5-&gt;edge();
EdgeRef e2 = h4-&gt;edge();
// ...you fill in the rest!...
// FACES
FaceRef f0 = h0-&gt;face();
// ...you fill in the rest!...
</code></pre></div></div> <h3 id="phase-ii-allocate-new-elements"> <a href="#phase-ii-allocate-new-elements" class="anchor-heading" aria-labelledby="phase-ii-allocate-new-elements"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> PHASE II: Allocate new elements </h3> <p>If your edge operation requires new elements, now is the time to allocate them. For the edge flip, we don’t need any new elements; but suppose that for some reason we needed a new vertex v4. At this point we would allocate the new vertex via</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>VertexRef v4 = mesh.new_vertex();
</code></pre></div></div> <p>(The name used for this new vertex should correspond to the label you give it in your “after” picture.) Likewise, new edges, halfedges, and faces can be allocated via the methods <code class="language-plaintext highlighter-rouge">mesh.new_edge()</code>, <code class="language-plaintext highlighter-rouge">mesh.new_halfedge()</code>, and <code class="language-plaintext highlighter-rouge">mesh.new_face()</code>.</p> <h3 id="phase-iii-reassign-elements"> <a href="#phase-iii-reassign-elements" class="anchor-heading" aria-labelledby="phase-iii-reassign-elements"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> PHASE III: Reassign Elements </h3> <p>Next, update the pointers for all the mesh elements that are affected by the edge operation. Be exhaustive! In other words, go ahead and specify every pointer for every element, even if it did not change. Once things are working correctly, you can always optimize by removing unnecessary assignments. But get it working correctly first! Correctness is more important than efficiency.</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>// HALFEDGES
h0-&gt;next() = h1;
h0-&gt;twin() = h3;
h0-&gt;vertex() = v2;
h0-&gt;edge() = e0;
h0-&gt;face() = f0;
h1-&gt;next() = h2;
h1-&gt;twin() = h7;
h1-&gt;vertex() = v3;
h1-&gt;edge() = e3;
h1-&gt;face() = f0;
// ...you fill in the rest!...
// ...and don't forget about the "outside" elements!...
h9-&gt;next() = h9-&gt;next(); // didn't change, but set it anyway!
h9-&gt;twin() = h4;
h9-&gt;vertex() = v1;
h9-&gt;edge() = e1;
h9-&gt;face() = h9-&gt;face(); // didn't change, but set it anyway!
// VERTICES
v0-&gt;halfedge() = h2;
v1-&gt;halfedge() = h5;
v2-&gt;halfedge() = h4;
v3-&gt;halfedge() = h3;
// EDGES
e0-&gt;halfedge() = h0; //...you fill in the rest!...
// FACES
f0-&gt;halfedge() = h0; //...you fill in the rest!...
</code></pre></div></div> <h3 id="phase-iv-delete-unused-elements"> <a href="#phase-iv-delete-unused-elements" class="anchor-heading" aria-labelledby="phase-iv-delete-unused-elements"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> PHASE IV: Delete unused elements </h3> <p>If your edge operation eliminates elements, now is the best time to deallocate them: at this point, you can be sure that they are no longer needed. For instance, since we do not need the vertex allocated in PHASE II, we could write</p> <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mesh.erase(v4);
</code></pre></div></div> <p>You should be careful that this mesh element is not referenced by any other element in the mesh. But if your “before” and “after” diagrams are correct, that should not be an issue!</p> <h3 id="design-considerations"> <a href="#design-considerations" class="anchor-heading" aria-labelledby="design-considerations"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Design considerations </h3> <p>The basic algorithm outlined above will handle most edge flips, but you should also think carefully about possible corner-cases. You should also think about other design issues, like “how much should this operation cost?” For instance, for this simple triangle-triangle edge flip it might be reasonable to:</p> <ul> <li>Ignore requests to flip boundary edges (i.e., just return immediately if either neighboring face is a boundary loop).</li> <li>Ignore requests to perform any edge flip that would make the surface non-manifold or otherwise invalidate the mesh.</li> <li>Not add or delete any elements. Since there are the same number of mesh elements before and after the flip, you should only need to reassign pointers.</li> <li>Perform only a constant amount of work – the cost of flipping a single edge should <strong>not</strong> be proportional to the size of the mesh!</li> </ul> <p>Formally proving that your code is correct in all cases is challenging, but at least try to think about what could go wrong in degenerate cases (e.g., vertices of low degree, or very small meshes like a tetrahedron). The biggest challenge in properly implementing this type of local operation is making sure that all the pointers still point to the right place in the modified mesh, and will likely be the cause of most of your crashes! To help mitigate this, Scotty3D will automatically attempt to <code class="language-plaintext highlighter-rouge">validate</code> your mesh after each operation, and will warn you if it detects abnormalities. Note that it will still crash if you leave references to deleted mesh elements!</p> </div> </div> <div class="search-overlay"></div> </div> </body> </html>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="374.264px" height="166.379px" viewBox="0 0 374.264 166.379" enable-background="new 0 0 374.264 166.379"
xml:space="preserve">
<g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="297.412,52.602 250.723,73.945 256.652,107.146
304.23,114.855 357.739,103.59 364.043,83.483 350.328,63.273 "/>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M238.238,11.479
C220.064,5.018,200.496,1.5,180.104,1.5c-20.525,0-40.22,3.564-58.494,10.107"/>
<g>
<polygon points="248.105,15.332 236.336,4.315 237.471,11.275 231.988,15.709 "/>
</g>
</g>
</g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="39.812,22.958 20.785,22.958 0.627,35.704
10.113,57.938 27.9,73.945 33.829,107.146 56.317,153.984 87.64,165.843 117.93,153.984 144.699,149.243 150.627,118.412
134.916,103.59 141.166,83.188 127.505,63.273 150.627,35.704 112.075,18.808 78.143,6.95 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="81.408" y2="114.855"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="112.075" y2="18.808"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="39.812" y2="22.958"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="27.9" y2="73.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="33.829" y2="107.146"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="56.317" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="117.93" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="81.408" y1="114.855" x2="134.916" y2="103.59"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="127.505" y2="63.273"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="74.589" y1="52.602" x2="78.143" y2="6.95"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="39.812,22.958 20.785,22.958 0.627,35.704 10.113,57.938
27.9,73.945 33.829,107.146 56.317,153.984 87.64,165.843 117.93,153.984 144.699,149.243 150.627,118.412 134.916,103.59
141.166,83.188 127.505,63.273 150.627,35.704 112.075,18.808 78.143,6.95 "/>
</g>
<g>
<g>
<defs>
<rect id="SVGID_1_" x="83.23" y="79.343" width="6" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M85.015,82.789c0.293-1.092,0.61-1.784,1.063-2.184c0.293-0.266,0.771-0.452,1.146-0.452
c0.479,0,0.771,0.319,0.771,0.825c0,0.692-0.56,1.438-1.384,1.837c-0.453,0.24-1.013,0.399-1.731,0.56L85.015,82.789
M88.449,85.372l-0.398,0.267c-0.825,0.612-1.598,0.932-2.156,0.932c-0.745,0-1.226-0.586-1.226-1.543
c0-0.399,0.055-0.826,0.133-1.278l1.307-0.319c0.266-0.08,0.69-0.24,1.091-0.399c1.358-0.586,1.971-1.332,1.971-2.317
c0-0.745-0.531-1.225-1.331-1.225c-1.039,0-2.797,1.092-3.407,2.104c-0.48,0.799-0.959,2.689-0.959,3.755
c0,1.252,0.691,1.971,1.838,1.971c0.903,0,1.811-0.452,3.273-1.625L88.449,85.372z"/>
</g>
</g>
<g>
<path d="M147.586,12.816c0.906-0.026,1.438-0.054,2.317-0.054c0.852,0,1.544,0.134,1.544,0.319l0.133,1.198h0.586l0.213-2.263
l-0.105-0.106c-0.585-0.054-0.878-0.08-1.491-0.08c-0.373,0-0.852,0.026-1.73,0.053c-1.145,0.027-1.598,0.027-2.05,0.027
c-0.56,0-1.251-0.027-2.981-0.054v0.586l0.586,0.054c0.691,0.053,0.746,0.159,0.746,1.544v7.136c0,0.533-0.08,0.772-0.32,0.906
l-0.506,0.292v0.347c1.571-0.026,1.571-0.026,1.944-0.026h0.532c1.624,0.026,2.264,0.053,3.062,0.053
c0.826,0,1.332-0.026,2.236-0.053l0.08-0.134l0.188-2.529h-0.639l-0.347,1.518c0,0-0.025,0.026-0.053,0.026
c-0.506,0.16-0.958,0.24-1.837,0.24c-0.666,0-1.278-0.026-2.104-0.054v-4.233c0.453-0.054,0.72-0.054,1.065-0.054h1.065
c0.586,0,0.852,0.16,0.904,0.586l0.08,0.799h0.639l-0.026-1.73c0-0.16,0-0.187,0.026-1.704h-0.639l-0.08,0.905
c-0.025,0.267-0.24,0.346-0.904,0.346h-1.065c-0.506,0-0.746,0-1.065-0.026v-3.835"/>
<path d="M156.48,15.186l-1.118,0.373c-0.506,0.134-0.799,0.187-1.812,0.319v0.586l0.72,0.027c0.373,0.026,0.426,0.186,0.426,1.118
v3.488c0,0.852-0.08,0.985-0.586,1.012l-0.56,0.026v0.586l2.051-0.026c0.213,0,0.266,0,2.423,0.026v-0.586l-0.64-0.026
c-0.666-0.026-0.745-0.134-0.745-1.012v-3.143c0-0.506,0.639-1.038,1.251-1.038c0.398,0,0.691,0.213,0.904,0.586l0.399-0.16
l0.08-2.05c-0.16-0.054-0.373-0.107-0.585-0.107c-0.453,0-0.746,0.214-1.358,0.853l-0.691,0.772v-1.518L156.48,15.186"/>
<path d="M164.042,20.857c-0.319,0.399-0.904,0.719-1.357,0.719c-0.533,0-0.826-0.399-0.826-1.012c0-0.771,0.346-1.092,1.464-1.385
l0.719-0.213L164.042,20.857 M164.042,21.604l-0.08,1.012l0.08,0.106c0.985-0.026,1.251-0.026,1.438-0.026
c0.186,0,0.453,0,1.411,0.026v-0.586l-0.479-0.053c-0.346-0.054-0.426-0.214-0.453-0.959v-0.319
c-0.025-0.533-0.025-0.959-0.025-1.358c0-0.426,0-0.932,0.025-1.544c0.027-0.187,0.027-0.347,0.027-0.453
c0-1.411-0.958-2.264-2.556-2.264c-0.666,0-1.332,0.187-1.917,0.56l-0.853,0.506v1.092l0.479,0.106l0.346-0.799
c0.053-0.106,0.506-0.213,0.932-0.213c1.065,0,1.571,0.56,1.625,1.864l-1.411,0.293c-1.997,0.426-2.716,1.038-2.716,2.396
c0,1.277,0.666,1.97,1.864,1.97c0.347,0,0.613-0.079,0.771-0.187L164.042,21.604z"/>
<path d="M173.042,17.503l0.133-1.944c-0.639-0.266-1.118-0.373-1.971-0.373c-2.13,0-3.302,0.879-3.302,2.45
c0,1.065,0.586,1.73,1.678,1.997l1.384,0.319c0.72,0.187,0.985,0.453,0.985,1.012c0,0.746-0.559,1.226-1.464,1.226
c-0.746,0-1.251-0.24-1.757-0.826l-0.08-1.092h-0.64l-0.105,2.237c0.905,0.319,1.625,0.452,2.477,0.452
c1.997,0,3.355-1.118,3.355-2.742c0-1.146-0.612-1.729-2.024-2.051l-1.305-0.293c-0.612-0.133-0.878-0.399-0.878-0.878
c0-0.64,0.532-1.039,1.384-1.039c0.639,0,1.358,0.293,1.385,0.612l0.16,0.933H173.042"/>
<path d="M178.26,18.354h-0.053c-0.105,0-0.532-0.026-0.771-0.053h-0.506c0.053-1.571,0.426-2.21,1.357-2.21
c0.905,0,1.278,0.639,1.305,2.21L178.26,18.354 M181.617,17.982c0-1.678-1.198-2.797-3.009-2.797c-0.56,0-0.958,0.134-1.384,0.373
l-0.772,0.453c-1.039,0.612-1.491,1.57-1.491,3.089c0,2.503,1.278,3.86,3.622,3.86c0.905,0,1.519-0.159,2.529-0.692l0.346-0.771
l-0.186-0.24c-0.746,0.427-1.226,0.56-1.864,0.56c-0.825,0-1.598-0.426-1.997-1.118c-0.266-0.453-0.346-0.826-0.398-1.571h2.104
c0.905,0,1.598-0.08,2.503-0.319v-0.827H181.617z"/>
<path d="M186.489,12.816c0.905-0.026,1.438-0.054,2.317-0.054c0.852,0,1.543,0.134,1.543,0.319l0.134,1.198h0.586l0.213-2.263
l-0.106-0.106c-0.586-0.054-0.879-0.08-1.49-0.08c-0.372,0-0.854,0.026-1.73,0.053c-1.146,0.027-1.598,0.027-2.05,0.027
c-0.562,0-1.252-0.027-3.01-0.054v0.586l0.611,0.054c0.692,0.053,0.745,0.159,0.745,1.544v7.136c0,0.533-0.079,0.772-0.317,0.906
l-0.506,0.292v0.347c1.569-0.026,1.569-0.026,1.942-0.026h0.533c1.623,0.026,2.236,0.053,3.062,0.053
c0.826,0,1.306-0.026,2.237-0.053l0.079-0.134l0.187-2.529h-0.639l-0.347,1.518c0,0-0.026,0.026-0.055,0.026
c-0.506,0.16-0.957,0.24-1.837,0.24c-0.665,0-1.277-0.026-2.104-0.054v-4.233c0.452-0.054,0.72-0.054,1.064-0.054h1.064
c0.586,0,0.853,0.16,0.906,0.586l0.08,0.799h0.639l-0.054-1.73c0-0.16,0-0.187,0.054-1.704h-0.639l-0.08,0.905
c-0.027,0.267-0.24,0.346-0.906,0.346h-1.064c-0.506,0-0.745,0-1.064-0.026L186.489,12.816"/>
<path d="M198.232,20.139c0,0.719-0.746,1.305-1.625,1.305c-1.146,0-1.863-1.092-1.863-2.822c0-1.598,0.559-2.396,1.704-2.396
c0.665,0,1.251,0.293,1.784,0.985V20.139 M200.149,11.325l-0.106-0.08l-1.145,0.347c-0.48,0.133-1.014,0.239-1.944,0.319v0.586
l0.854,0.053c0.346,0,0.426,0.16,0.426,1.092v1.943l-0.32-0.106c-0.452-0.186-0.879-0.293-1.277-0.293
c-0.506,0-0.959,0.16-1.411,0.427l-1.146,0.745c-0.905,0.612-1.332,1.518-1.332,2.876c0,2.264,1.172,3.728,3.036,3.728
c0.373,0,0.64-0.079,0.799-0.187l1.651-1.357l-0.08,1.198l0.08,0.106c0.932-0.026,1.251-0.026,1.411-0.026
c0.133,0,0.426,0,0.878,0.026c0.106,0,0.399,0,0.746,0v-0.586l-0.533-0.026c-0.506-0.026-0.585-0.16-0.585-1.012L200.149,11.325
L200.149,11.325z"/>
<path d="M206.113,22.908c1.944,0,2.424,0.266,2.424,1.278c0,1.092-1.064,1.917-2.504,1.917c-1.41,0-2.342-0.666-2.342-1.651
c0-0.586,0.346-1.118,0.824-1.357C204.756,22.988,205.342,22.908,206.113,22.908 M205.795,15.985c0.824,0,1.306,0.691,1.306,1.943
c0,1.118-0.428,1.704-1.279,1.704c-0.824,0-1.33-0.692-1.33-1.891C204.49,16.598,204.942,15.985,205.795,15.985z M210.188,16.837
l0.08-1.012c-0.64,0.053-0.959,0.08-1.306,0.08c-0.133,0-0.318,0-0.559-0.027c-0.666-0.479-1.412-0.692-2.424-0.692
c-2.023,0-3.436,1.198-3.436,2.85c0,0.586,0.188,1.118,0.585,1.544c0.293,0.293,0.533,0.453,1.093,0.64l-1.146,0.853
c-0.16,0.105-0.266,0.453-0.266,0.771c0,0.56,0.293,0.854,1.092,1.065l-1.279,0.772c-0.239,0.133-0.426,0.532-0.426,0.984
c0,1.358,1.332,2.237,3.436,2.237c2.771,0,4.66-1.438,4.66-3.542c0-1.357-0.746-1.97-2.371-1.97h-0.372
c-1.57,0.026-2.13,0.053-2.316,0.053c-0.506,0-0.744-0.159-0.744-0.479c0-0.239,0.133-0.426,0.452-0.612
c0.292,0,0.452,0.026,0.639,0.026c1.092,0,2.13-0.372,2.771-1.012c0.479-0.506,0.691-1.064,0.691-1.837
c0-0.267,0-0.453-0.08-0.772L210.188,16.837z"/>
<path d="M214.661,18.354h-0.054c-0.105,0-0.531-0.026-0.771-0.053h-0.506c0.053-1.571,0.426-2.21,1.357-2.21
c0.904,0,1.277,0.639,1.305,2.21L214.661,18.354 M218.016,17.982c0-1.678-1.197-2.797-3.009-2.797
c-0.56,0-0.959,0.134-1.385,0.373l-0.746,0.453c-1.063,0.612-1.518,1.57-1.518,3.089c0,2.503,1.276,3.86,3.621,3.86
c0.905,0,1.518-0.159,2.529-0.692l0.348-0.771l-0.188-0.24c-0.746,0.427-1.225,0.56-1.862,0.56c-0.826,0-1.599-0.426-1.998-1.118
c-0.267-0.453-0.347-0.826-0.398-1.571h2.104c0.903,0,1.598-0.08,2.502-0.319V17.982z"/>
</g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="262.635,22.958 243.608,22.958 223.45,35.704
232.936,57.938 250.723,73.945 256.652,107.146 279.141,153.984 310.463,165.843 340.754,153.984 367.521,149.243 373.451,118.412
357.739,103.59 364.043,83.483 350.328,63.273 373.451,35.704 334.898,18.808 300.966,6.95 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="297.412" y1="52.602" x2="334.898" y2="18.808"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="297.412" y1="52.602" x2="262.635" y2="22.958"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="297.412" y1="52.602" x2="250.723" y2="73.945"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="114.855" x2="256.652" y2="107.146"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="114.855" x2="279.141" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="114.855" x2="340.754" y2="153.984"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="304.23" y1="114.855" x2="357.739" y2="103.59"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="297.412" y1="52.602" x2="350.328" y2="63.273"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="297.412" y1="52.602" x2="300.966" y2="6.95"/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="262.635,22.958 243.608,22.958 223.45,35.704
232.936,57.938 250.723,73.945 256.652,107.146 279.141,153.984 310.463,165.843 340.754,153.984 367.521,149.243 373.451,118.412
357.739,103.59 364.043,83.483 350.328,63.273 373.451,35.704 334.898,18.808 300.966,6.95 "/>
<g>
<g>
<defs>
<rect id="SVGID_3_" x="296.465" y="76.019" width="10" height="17"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M304.107,82.128c0.08-0.293,0.186-0.666,0.266-0.879l-0.053-0.106l-0.107,0.026
c-0.397,0.08-0.559,0.106-1.33,0.106h-0.268l0.346-1.783c0.24-1.358,0.693-1.971,1.412-1.971c0.479,0,0.906,0.239,1.146,0.612
l0.159-0.054c0.08-0.266,0.24-0.745,0.373-1.064l0.08-0.24c-0.268-0.106-0.746-0.213-1.119-0.213
c-0.159,0-0.426,0.054-0.559,0.106c-0.373,0.187-1.678,1.146-2.051,1.545c-0.346,0.346-0.533,0.825-0.719,1.73l-0.24,1.252
c-0.64,0.319-0.957,0.452-1.357,0.585l-0.08,0.347h1.279l-0.135,0.905c-0.479,3.089-1.064,6.044-1.41,7.136
c-0.293,0.934-0.773,1.438-1.332,1.438c-0.373,0-0.533-0.105-0.824-0.453l-0.24,0.055c-0.053,0.373-0.268,1.118-0.346,1.277
c0.133,0.08,0.371,0.134,0.56,0.134c0.639,0,1.489-0.507,2.131-1.252c0.957-1.146,1.305-2.263,2.475-7.828
c0.055-0.213,0.16-0.799,0.293-1.411L304.107,82.128"/>
</g>
</g>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="349.881px" height="119.336px" viewBox="0 0 349.881 119.336" enable-background="new 0 0 349.881 119.336"
xml:space="preserve">
<g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" points="52.667,118.824 19.741,90.492 0.667,45.513 29.396,35.193 31.167,16.367
54.48,0.658 68.487,16.367 100.167,6.158 107.579,35.193 136.333,50.825 117.234,77.493 109.333,99.158 90.182,116.492 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="52.667,118.824 19.741,90.492 0.667,45.513 29.396,35.193
31.167,16.367 54.48,0.658 68.487,16.367 100.167,6.158 107.579,35.193 136.333,50.825 117.234,77.493 109.333,99.158
90.182,116.492 "/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="68.487" y2="16.367"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="107.579" y2="35.193"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="117.234" y2="77.493"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="90.182" y2="116.492"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="52.667" y2="118.824"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="19.741" y2="90.492"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="76.167" y1="55.658" x2="29.396" y2="35.193"/>
<circle cx="76.167" cy="55.658" r="3.671"/>
</g>
<g>
<defs>
<rect id="SVGID_1_" x="76.774" y="40.104" width="8" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M81.86,41.181l0.16,0.293c0.16-0.079,0.293-0.133,0.426-0.133
c0.426,0,0.692,0.373,0.692,1.012c0,2.344-1.544,4.926-2.929,4.926c-0.799,0-1.278-0.665-1.278-1.704
c0-1.65,0.613-3.115,2.184-5.032l-0.16-0.293c-0.32,0.133-0.533,0.187-0.985,0.187c-0.426,0-1.118-0.026-1.571-0.08l-0.187-0.026
c-0.106,0-0.187,0-0.187,0c-0.186,0-0.346,0.026-0.506,0.106c-0.24,0.426-0.399,1.012-0.612,1.864h0.346l0.266-0.666
c0.133-0.267,0.426-0.426,0.826-0.426c0.08,0,0.213,0,0.426,0c0.133,0.026,0.24,0.026,0.453,0.026c0.32,0,0.586-0.026,0.985-0.08
c-1.757,1.917-2.423,3.249-2.423,4.819c0,1.226,0.719,2.104,1.758,2.104c0.666,0,1.251-0.292,1.997-0.932
c0.746-0.692,1.491-1.757,1.997-2.849c0.346-0.799,0.612-1.864,0.612-2.503c0-0.905-0.399-1.545-0.985-1.545
c-0.213,0-0.399,0.054-0.506,0.187L81.86,41.181"/>
</g>
</g>
<g>
<g>
<polygon opacity="0.4" fill="#1B1F8A" points="265.477,118.824 232.551,90.492 213.477,45.513 242.206,35.193 243.977,16.367
267.291,0.658 281.298,16.367 312.977,6.158 320.39,35.193 349.145,50.825 330.045,77.493 322.145,99.158 302.992,116.492 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="265.477,118.824 232.551,90.492 213.477,45.513
242.206,35.193 243.977,16.367 267.291,0.658 281.298,16.367 312.977,6.158 320.39,35.193 349.145,50.825 330.045,77.493
322.145,99.158 302.992,116.492 "/>
</g>
<g>
<defs>
<rect id="SVGID_3_" x="275.648" y="54.78" width="10" height="17"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M283.29,60.89c0.08-0.293,0.187-0.666,0.267-0.879l-0.054-0.106l-0.106,0.026
c-0.399,0.08-0.559,0.106-1.331,0.106h-0.267l0.346-1.783c0.24-1.358,0.693-1.971,1.412-1.971c0.479,0,0.905,0.239,1.145,0.612
l0.16-0.054c0.08-0.266,0.239-0.745,0.373-1.064l0.08-0.24c-0.268-0.106-0.746-0.213-1.119-0.213c-0.16,0-0.426,0.054-0.559,0.106
c-0.373,0.187-1.678,1.146-2.051,1.545c-0.346,0.346-0.533,0.825-0.719,1.73l-0.24,1.252c-0.639,0.319-0.958,0.452-1.357,0.585
l-0.08,0.347h1.278l-0.134,0.905c-0.479,3.089-1.064,6.044-1.41,7.136c-0.293,0.933-0.773,1.438-1.332,1.438
c-0.373,0-0.533-0.106-0.825-0.453l-0.239,0.054c-0.054,0.373-0.268,1.118-0.347,1.278c0.134,0.079,0.372,0.133,0.56,0.133
c0.639,0,1.49-0.506,2.13-1.252c0.958-1.145,1.305-2.263,2.476-7.828c0.054-0.213,0.16-0.799,0.293-1.411H283.29"/>
</g>
</g>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M227.278,19.637
c-18.175-6.461-37.743-9.979-58.134-9.979c-20.525,0-40.219,3.564-58.494,10.107"/>
<g>
<polygon points="237.145,23.491 225.375,12.474 226.51,19.434 221.028,23.868 "/>
</g>
</g>
</g>
<g>
<g>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="71.827,29.386 70.906,28.996
70.126,29.622 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="2.1108,2.1108" x1="68.479" y1="30.941" x2="52.832" y2="43.482"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="52.008,44.142 51.228,44.768
51.287,45.766 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="2.1247,2.1247" x1="51.413" y1="47.887" x2="52.609" y2="68.036"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="52.672,69.097 52.731,70.095
53.515,70.716 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.9964,1.9964" points="
55.08,71.956 66.643,81.125 82.216,82.129 98.52,69.629 "/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="99.312,69.021 100.105,68.412
100.061,67.414 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.97,1.97" x1="99.973" y1="65.445" x2="98.965" y2="42.813"/>
<polyline fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" points="98.921,41.83 98.876,40.831
97.956,40.441 "/>
<line fill="none" stroke="#000000" stroke-width="0.5" stroke-miterlimit="10" stroke-dasharray="1.8914,1.8914" x1="96.213" y1="39.704" x2="72.698" y2="29.754"/>
</g>
</g>
<g>
<path d="M132.008,20.924c0.906-0.053,1.438-0.053,2.317-0.053c0.852,0,1.544,0.133,1.544,0.319l0.133,1.171h0.586l0.213-2.236
l-0.106-0.133c-0.585-0.027-0.878-0.054-1.491-0.054c-0.373,0-0.852,0.026-1.73,0.026c-1.145,0.027-1.598,0.027-2.05,0.027
c-0.56,0-1.251,0-2.982-0.027v0.586l0.586,0.054c0.692,0.053,0.746,0.159,0.746,1.544v7.137c0,0.532-0.08,0.771-0.32,0.879
l-0.506,0.292v0.373c1.571-0.053,1.571-0.053,1.944-0.053h0.533c1.624,0.053,2.263,0.079,3.062,0.079
c0.826,0,1.332-0.026,2.237-0.079l0.08-0.134l0.187-2.503h-0.639l-0.346,1.491c0,0.026-0.026,0.026-0.053,0.054
c-0.506,0.159-0.958,0.213-1.837,0.213c-0.666,0-1.278,0-2.104-0.026v-4.261c0.453-0.026,0.719-0.054,1.065-0.054h1.065
c0.586,0,0.852,0.187,0.905,0.613l0.08,0.771h0.639l-0.027-1.704c0-0.187,0-0.187,0.027-1.704h-0.639l-0.08,0.905
c-0.026,0.267-0.24,0.347-0.905,0.347h-1.065c-0.506,0-0.746,0-1.065-0.054V20.924"/>
<path d="M140.902,23.294l-1.118,0.346c-0.506,0.16-0.799,0.213-1.811,0.347v0.559l0.719,0.054c0.373,0.026,0.426,0.187,0.426,1.118
v3.488c0,0.852-0.08,0.959-0.586,1.012l-0.559,0.026v0.586l2.05-0.053c0.213,0,0.266,0,2.423,0.053v-0.586l-0.639-0.026
c-0.666-0.053-0.746-0.133-0.746-1.012v-3.169c0-0.479,0.639-1.012,1.251-1.012c0.399,0,0.692,0.187,0.905,0.586l0.399-0.16
l0.08-2.05c-0.16-0.08-0.373-0.106-0.585-0.106c-0.453,0-0.746,0.187-1.358,0.852l-0.692,0.746v-1.491L140.902,23.294"/>
<path d="M148.464,28.966c-0.32,0.399-0.905,0.691-1.358,0.691c-0.533,0-0.826-0.372-0.826-0.984c0-0.772,0.346-1.092,1.464-1.412
l0.719-0.186V28.966 M148.464,29.711l-0.08,0.985l0.08,0.133c0.985-0.026,1.251-0.053,1.438-0.053c0.186,0,0.453,0.026,1.411,0.053
v-0.586l-0.479-0.053c-0.346-0.054-0.426-0.213-0.453-0.959v-0.346c-0.026-0.506-0.026-0.959-0.026-1.332
c0-0.426,0-0.932,0.026-1.544c0.027-0.213,0.027-0.346,0.027-0.453c0-1.411-0.958-2.263-2.556-2.263
c-0.666,0-1.332,0.187-1.917,0.532l-0.852,0.506v1.118l0.479,0.106l0.346-0.799c0.053-0.106,0.506-0.213,0.932-0.213
c1.065,0,1.571,0.56,1.625,1.864l-1.411,0.293c-1.997,0.399-2.716,1.038-2.716,2.37c0,1.305,0.666,1.97,1.864,1.97
c0.347,0,0.613-0.053,0.772-0.187L148.464,29.711z"/>
<path d="M157.464,25.611l0.133-1.943c-0.639-0.267-1.119-0.373-1.971-0.373c-2.13,0-3.302,0.852-3.302,2.449
c0,1.039,0.586,1.704,1.678,1.997l1.384,0.319c0.719,0.187,0.985,0.453,0.985,1.013c0,0.745-0.559,1.225-1.464,1.225
c-0.746,0-1.251-0.24-1.757-0.825l-0.08-1.119h-0.639l-0.106,2.264c0.905,0.319,1.625,0.426,2.477,0.426
c1.997,0,3.355-1.092,3.355-2.716c0-1.145-0.612-1.73-2.024-2.05l-1.305-0.293c-0.612-0.134-0.878-0.399-0.878-0.905
c0-0.612,0.532-1.012,1.384-1.012c0.639,0,1.358,0.292,1.385,0.612l0.16,0.932H157.464"/>
<path d="M162.683,26.436h-0.053c-0.106,0-0.532,0-0.772-0.026l-0.506-0.026c0.053-1.571,0.426-2.184,1.358-2.184
c0.905,0,1.278,0.612,1.305,2.184L162.683,26.436 M166.039,26.09c0-1.704-1.198-2.796-3.009-2.796
c-0.559,0-0.958,0.106-1.384,0.373l-0.772,0.452c-1.039,0.612-1.491,1.571-1.491,3.062c0,2.529,1.278,3.86,3.622,3.86
c0.905,0,1.518-0.159,2.529-0.665l0.346-0.772l-0.186-0.239c-0.746,0.426-1.225,0.559-1.864,0.559
c-0.825,0-1.598-0.452-1.997-1.118c-0.266-0.453-0.346-0.825-0.399-1.571h2.104c0.905,0,1.598-0.08,2.503-0.319V26.09z"/>
<path d="M172.109,20.551v-0.586c-0.666,0-1.278,0-1.464,0.027c-0.533,0-0.905,0-1.119,0c-0.213,0-0.213,0-2.503-0.027v0.586
l0.666,0.054c0.373,0.026,0.612,0.319,0.985,1.145l3.781,9.08h1.226c0.159-0.426,0.213-0.586,0.292-0.772
c0.08-0.239,0.134-0.426,0.188-0.479c0-0.054,0.053-0.187,0.105-0.32l3.303-7.908c0.213-0.506,0.426-0.719,0.745-0.745l0.532-0.054
v-0.586c-1.703,0.027-1.703,0.027-1.863,0.027s-0.426,0-0.879,0c-0.133-0.027-0.532-0.027-0.932-0.027v0.586l0.719,0.054
c0.373,0.026,0.586,0.159,0.586,0.399c0,0.239-0.16,0.745-0.479,1.571l-2.263,5.618l-2.503-6.151
c-0.32-0.825-0.32-0.852-0.32-1.145c0-0.134,0.187-0.293,0.399-0.293L172.109,20.551"/>
<path d="M181.27,26.436h-0.054c-0.106,0-0.532,0-0.772-0.026l-0.506-0.026c0.054-1.571,0.426-2.184,1.358-2.184
c0.905,0,1.278,0.612,1.331,2.184L181.27,26.436 M184.625,26.09c0-1.704-1.172-2.796-2.982-2.796c-0.56,0-0.986,0.106-1.412,0.373
l-0.745,0.452c-1.038,0.612-1.519,1.571-1.519,3.062c0,2.529,1.279,3.86,3.648,3.86c0.906,0,1.491-0.159,2.504-0.665l0.346-0.772
l-0.187-0.239c-0.745,0.426-1.226,0.559-1.864,0.559c-0.825,0-1.598-0.452-1.996-1.118c-0.24-0.453-0.347-0.825-0.373-1.571h2.076
c0.906,0,1.625-0.08,2.504-0.319V26.09z"/>
<path d="M188.698,23.294l-1.118,0.346c-0.506,0.16-0.799,0.213-1.784,0.347v0.559l0.692,0.054c0.373,0.026,0.426,0.187,0.426,1.118
v3.488c0,0.852-0.08,0.959-0.586,1.012l-0.532,0.026v0.586l2.05-0.053c0.188,0,0.24,0,2.396,0.053v-0.586l-0.639-0.026
c-0.666-0.053-0.745-0.133-0.745-1.012v-3.169c0-0.479,0.639-1.012,1.278-1.012c0.372,0,0.665,0.187,0.904,0.586l0.373-0.16
l0.08-2.05c-0.16-0.08-0.373-0.106-0.586-0.106c-0.453,0-0.745,0.187-1.357,0.852l-0.692,0.746v-1.491L188.698,23.294"/>
<path d="M196.66,29.818l-0.133-0.293c-0.32,0.16-0.48,0.213-0.719,0.213c-0.746,0-0.986-0.266-0.986-1.038v-3.781h1.678
l0.133-1.038l-1.811,0.106v-0.933c0-0.852,0.027-1.357,0.188-2.156l-0.24-0.16c-0.612,0.293-1.119,0.479-1.918,0.799
c0.027,0.825,0.055,1.118,0.055,1.465v0.958l-1.039,0.666v0.347l1.012-0.054v4.127c0,1.411,0.586,1.997,1.971,1.997
c0.479,0,0.879-0.106,1.038-0.266L196.66,29.818"/>
<path d="M200.787,26.436h-0.08c-0.079,0-0.506,0-0.745-0.026l-0.506-0.026c0.026-1.571,0.426-2.184,1.331-2.184
s1.305,0.612,1.332,2.184L200.787,26.436 M204.143,26.09c0-1.704-1.199-2.796-3.01-2.796c-0.559,0-0.984,0.106-1.41,0.373
l-0.746,0.452c-1.039,0.612-1.491,1.571-1.491,3.062c0,2.529,1.251,3.86,3.622,3.86c0.904,0,1.49-0.159,2.529-0.665l0.346-0.772
l-0.187-0.239c-0.745,0.426-1.225,0.559-1.863,0.559c-0.825,0-1.624-0.452-1.997-1.118c-0.268-0.453-0.373-0.825-0.4-1.571h2.078
c0.904,0,1.624-0.08,2.529-0.319V26.09z"/>
<path d="M207.977,27.448l-1.73,2.21c-0.32,0.399-0.613,0.56-1.092,0.586v0.533h1.438c0.453-0.72,0.639-0.959,0.826-1.226
l1.012-1.411l1.598,2.689l1.225-0.053c0.639,0.026,0.771,0.026,1.225,0.053v-0.586c-0.479-0.053-0.799-0.346-1.357-1.251
l-1.412-2.423l1.545-1.812c0.479-0.559,0.639-0.665,1.225-0.691v-0.586h-1.491l-1.73,2.396l-0.825-1.358
c-0.373-0.612-0.666-0.959-0.985-1.225c-0.56,0.133-1.731,0.399-2.317,0.506l0.134,0.586c0.08-0.027,0.187-0.027,0.239-0.027
c0.506,0,0.799,0.214,1.225,0.933L207.977,27.448"/>
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="397.95px" height="144.156px" viewBox="0 0 397.95 144.156" enable-background="new 0 0 397.95 144.156"
xml:space="preserve">
<g>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M264.146,11.479
C245.972,5.018,226.403,1.5,206.012,1.5c-20.525,0-40.219,3.564-58.494,10.107"/>
<g>
<polygon points="274.013,15.332 262.243,4.315 263.377,11.275 257.896,15.709 "/>
</g>
</g>
</g>
</g>
<g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="19.999,42.64 66.167,8.241 141.754,17.293
169.364,64.819 155.87,106.417 105.324,136.203 19.999,143.576 0.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="19.999,42.64 66.167,8.241 141.754,17.293 169.364,64.819
155.87,106.417 105.324,136.203 19.999,143.576 0.536,101.028 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" x1="19.999" y1="42.64" x2="105.324" y2="136.203"/>
<g>
<g>
<defs>
<rect id="SVGID_1_" x="69.27" y="80.946" width="6" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M71.054,84.393c0.293-1.093,0.612-1.784,1.065-2.185c0.293-0.266,0.772-0.451,1.145-0.451
c0.479,0,0.772,0.318,0.772,0.824c0,0.692-0.559,1.438-1.384,1.838c-0.453,0.24-1.012,0.398-1.731,0.56L71.054,84.393
M74.489,86.976l-0.399,0.268c-0.825,0.611-1.598,0.932-2.157,0.932c-0.746,0-1.225-0.586-1.225-1.545
c0-0.398,0.053-0.825,0.133-1.277l1.305-0.318c0.266-0.08,0.692-0.24,1.091-0.4c1.358-0.586,1.971-1.332,1.971-2.316
c0-0.744-0.533-1.225-1.332-1.225c-1.039,0-2.796,1.092-3.408,2.104c-0.479,0.799-0.958,2.689-0.958,3.756
c0,1.25,0.692,1.969,1.837,1.969c0.905,0,1.811-0.451,3.275-1.623L74.489,86.976z"/>
</g>
</g>
</g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="247.999,42.64 294.167,8.241 369.754,17.293
397.364,64.819 383.87,106.417 333.325,136.203 247.999,143.576 228.536,101.028 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="247.999,42.64 294.167,8.241 369.754,17.293 397.364,64.819
383.87,106.417 333.325,136.203 247.999,143.576 228.536,101.028 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" x1="228.536" y1="101.028" x2="383.87" y2="106.417"/>
<g>
<path d="M308.053,92.393c0.294-1.093,0.613-1.784,1.066-2.185c0.293-0.266,0.771-0.451,1.146-0.451
c0.479,0,0.771,0.318,0.771,0.824c0,0.692-0.559,1.438-1.385,1.838c-0.451,0.24-1.012,0.398-1.73,0.56L308.053,92.393
M311.489,94.976l-0.4,0.268c-0.823,0.611-1.598,0.932-2.155,0.932c-0.746,0-1.226-0.586-1.226-1.545
c0-0.398,0.053-0.825,0.133-1.277l1.306-0.318c0.267-0.08,0.692-0.24,1.093-0.4c1.357-0.586,1.971-1.332,1.971-2.316
c0-0.744-0.533-1.225-1.332-1.225c-1.039,0-2.795,1.092-3.408,2.104c-0.479,0.799-0.959,2.689-0.959,3.756
c0,1.25,0.693,1.969,1.838,1.969c0.906,0,1.811-0.451,3.275-1.623L311.489,94.976z"/>
</g>
<g>
<path d="M176.153,11.725c0.906-0.026,1.438-0.054,2.317-0.054c0.852,0,1.544,0.134,1.544,0.319l0.133,1.198h0.586l0.213-2.263
l-0.106-0.106c-0.585-0.054-0.878-0.08-1.491-0.08c-0.373,0-0.852,0.026-1.73,0.053c-1.145,0.027-1.598,0.027-2.05,0.027
c-0.56,0-1.251-0.027-2.982-0.054v0.586l0.586,0.054c0.692,0.053,0.746,0.159,0.746,1.544v7.136c0,0.533-0.08,0.771-0.32,0.906
l-0.506,0.291v0.348c1.571-0.027,1.571-0.027,1.944-0.027h0.533c1.624,0.027,2.263,0.053,3.062,0.053
c0.826,0,1.332-0.025,2.237-0.053l0.08-0.133l0.187-2.529h-0.639l-0.346,1.518c0,0-0.026,0.025-0.053,0.025
c-0.506,0.16-0.958,0.24-1.837,0.24c-0.666,0-1.278-0.025-2.104-0.053v-4.234c0.453-0.054,0.719-0.054,1.065-0.054h1.065
c0.586,0,0.852,0.16,0.905,0.586l0.08,0.799h0.639l-0.027-1.731c0-0.16,0-0.187,0.027-1.704h-0.639l-0.08,0.905
c-0.026,0.267-0.24,0.346-0.905,0.346h-1.065c-0.506,0-0.746,0-1.065-0.026V11.725"/>
<path d="M187.789,19.047c0,0.719-0.746,1.305-1.624,1.305c-1.119,0-1.837-1.092-1.837-2.822c0-1.597,0.559-2.396,1.678-2.396
c0.692,0,1.251,0.293,1.784,0.985V19.047 M189.733,10.234l-0.133-0.08l-1.145,0.347c-0.453,0.133-1.012,0.239-1.917,0.319v0.586
l0.826,0.053c0.373,0,0.426,0.16,0.426,1.092v1.943l-0.319-0.106c-0.453-0.186-0.879-0.293-1.278-0.293
c-0.506,0-0.958,0.16-1.384,0.427l-1.145,0.745c-0.905,0.612-1.332,1.518-1.332,2.876c0,2.264,1.172,3.727,3.036,3.727
c0.346,0,0.612-0.078,0.772-0.186l1.651-1.357l-0.08,1.197l0.08,0.107c0.959-0.027,1.251-0.027,1.438-0.027
c0.106,0,0.399,0,0.852,0.027c0.106,0,0.399,0,0.746,0v-0.586l-0.533-0.027c-0.479-0.025-0.559-0.16-0.559-1.012V10.234z"/>
<path d="M195.671,21.816c1.944,0,2.423,0.266,2.423,1.279c0,1.092-1.065,1.916-2.477,1.916s-2.37-0.666-2.37-1.65
c0-0.586,0.346-1.119,0.825-1.357C194.313,21.896,194.899,21.816,195.671,21.816 M195.352,14.894c0.852,0,1.305,0.691,1.305,1.943
c0,1.118-0.426,1.704-1.278,1.704c-0.825,0-1.331-0.691-1.331-1.89C194.047,15.506,194.5,14.894,195.352,14.894z M199.772,15.746
l0.08-1.012c-0.666,0.053-0.959,0.08-1.305,0.08c-0.133,0-0.32,0-0.586-0.027c-0.639-0.479-1.385-0.692-2.423-0.692
c-2.023,0-3.435,1.198-3.435,2.85c0,0.585,0.213,1.119,0.585,1.544c0.293,0.293,0.533,0.453,1.092,0.639l-1.118,0.852
c-0.16,0.107-0.266,0.453-0.266,0.773c0,0.559,0.266,0.852,1.065,1.064l-1.278,0.773c-0.239,0.133-0.426,0.531-0.426,0.984
c0,1.357,1.331,2.236,3.435,2.236c2.796,0,4.66-1.438,4.66-3.541c0-1.357-0.746-1.971-2.344-1.971h-0.399
c-1.571,0.027-2.13,0.053-2.316,0.053c-0.479,0-0.746-0.158-0.746-0.479c0-0.24,0.16-0.426,0.479-0.613
c0.267,0,0.426,0.027,0.612,0.027c1.119,0,2.13-0.373,2.77-1.012c0.506-0.506,0.719-1.065,0.719-1.837
c0-0.267-0.026-0.453-0.08-0.772L199.772,15.746z"/>
<path d="M204.218,17.263h-0.054c-0.105,0-0.532-0.026-0.771-0.053h-0.506c0.053-1.571,0.426-2.21,1.357-2.21
c0.906,0,1.278,0.639,1.305,2.21L204.218,17.263 M207.573,16.891c0-1.678-1.197-2.797-3.008-2.797
c-0.533,0-0.959,0.134-1.385,0.373l-0.746,0.453c-1.064,0.612-1.518,1.57-1.518,3.089c0,2.502,1.278,3.859,3.648,3.859
c0.904,0,1.49-0.158,2.502-0.691l0.347-0.771l-0.187-0.24c-0.745,0.426-1.225,0.559-1.863,0.559c-0.826,0-1.598-0.426-1.998-1.117
c-0.266-0.453-0.346-0.826-0.372-1.572h2.077c0.904,0,1.624-0.08,2.502-0.318V16.891z"/>
<path d="M212.287,11.725c0.772-0.026,1.305-0.026,1.837-0.026c1.065,0,1.758,0.106,1.784,0.292l0.106,1.198h0.586l0.213-2.263
l-0.08-0.106c-0.612-0.054-0.904-0.08-1.518-0.08c-0.373,0-0.959,0.026-2.236,0.053c-0.746,0.027-1.145,0.027-1.465,0.027
c-0.453,0-0.453,0-2.822-0.054v0.586l0.586,0.054c0.719,0.053,0.771,0.159,0.771,1.544v6.498c0,1.41-0.026,1.438-0.771,1.518
l-0.586,0.027v0.639c1.917-0.027,1.917-0.027,2.477-0.027c0.506,0,0.506,0,2.636,0.027v-0.639l-0.745-0.027
c-0.746-0.053-0.772-0.133-0.772-1.518v-2.983c0.452-0.026,0.719-0.026,1.065-0.026h0.825c0.585,0,0.853,0.16,0.905,0.586
l0.08,0.773h0.639l-0.053-1.706c0-0.186,0-0.398,0.053-1.624h-0.639l-0.08,0.825c-0.053,0.267-0.24,0.347-0.905,0.347h-0.825
c-0.533,0-0.746,0-1.065-0.054V11.725"/>
<path d="M220.488,10.154L219.37,10.5c-0.479,0.133-1.012,0.239-1.943,0.319v0.586l0.852,0.053c0.346,0,0.399,0.16,0.399,1.092
v7.456c0,0.852-0.08,0.986-0.56,1.012l-0.559,0.027v0.586l2.05-0.027c0.319,0,1.092,0,2.157,0.027v-0.586l-0.56-0.027
c-0.506-0.025-0.585-0.16-0.585-1.012v-9.772L220.488,10.154"/>
<path d="M224.934,10.367c-0.665,0-1.197,0.506-1.197,1.172s0.532,1.225,1.197,1.225c0.64,0,1.199-0.559,1.199-1.198
C226.133,10.9,225.6,10.367,224.934,10.367 M225.813,14.094l-1.118,0.373c-0.506,0.134-0.905,0.213-1.571,0.293
c-0.053,0-0.133,0-0.239,0.026v0.586l0.719,0.027c0.373,0.026,0.427,0.186,0.427,1.118v3.488c0,0.852-0.08,0.986-0.586,1.012
l-0.56,0.027v0.586l2.05-0.027c0.32,0,1.092,0,2.157,0.027v-0.586l-0.56-0.027c-0.479-0.025-0.559-0.16-0.559-1.012v-5.804
L225.813,14.094z"/>
<path d="M231.192,16.332c0.346-0.532,0.852-0.799,1.518-0.799c1.225,0,1.943,0.958,1.943,2.555c0,1.652-0.719,2.689-1.863,2.689
c-0.666,0-1.172-0.266-1.598-0.877V16.332 M231.032,14.094l-1.117,0.373c-0.533,0.134-0.826,0.187-1.625,0.293l-0.187,0.026v0.586
l0.72,0.027c0.372,0.026,0.426,0.186,0.426,1.118v7.535c0,0.854-0.08,0.986-0.586,1.012l-0.56,0.027v0.586l2.05-0.027
c0.214,0,0.24,0,2.317,0.027v-0.586l-0.72-0.027c-0.479,0-0.559-0.158-0.559-1.012v-2.449c0.772,0.213,1.012,0.266,1.411,0.266
c0.532,0,1.092-0.293,2.157-1.145c0.106-0.08,0.213-0.16,0.293-0.213c1.038-0.799,1.624-2.023,1.624-3.461
c0-1.678-1.226-2.956-2.902-2.956c-0.612,0-1.065,0.187-1.624,0.64l-0.959,0.772v-1.305L231.032,14.094z"/>
</g>
</svg>
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <title>Local Operations - </title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> <script type="text/javascript" src="/assets/js/vendor/lunr.min.js"></script> <script type="text/javascript" src="/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.7.1 --> <title>Local Operations</title> <meta name="generator" content="Jekyll v4.2.0" /> <meta property="og:title" content="Local Operations" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="Local Operations" /> <script type="application/ld+json"> {"headline":"Local Operations","@type":"WebPage","url":"/meshedit/local/","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> </svg> <div class="side-bar"> <div class="site-header"> <a href="/" class="site-title lh-tight"> </a> <a href="#" id="menu-button" class="site-button"> <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg> </a> </div> <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/git/" class="nav-list-link">GitHub Setup</a></li><li class="nav-list-item"><a href="/build/" class="nav-list-link">Building Scotty3D</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/guide/" class="nav-list-link">User Guide</a><ul class="nav-list "><li class="nav-list-item "><a href="/guide/animate_mode/" class="nav-list-link">Animate</a></li><li class="nav-list-item "><a href="/guide/layout_mode/" class="nav-list-link">Layout</a></li><li class="nav-list-item "><a href="/guide/model_mode/" class="nav-list-link">Model</a></li><li class="nav-list-item "><a href="/guide/render_mode/" class="nav-list-link">Render</a></li><li class="nav-list-item "><a href="/guide/rigging_mode/" class="nav-list-link">Rig</a></li><li class="nav-list-item "><a href="/guide/simulate_mode/" class="nav-list-link">Simulate</a></li></ul></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/" class="nav-list-link">A2: MeshEdit</a><ul class="nav-list "><li class="nav-list-item "><a href="/meshedit/halfedge" class="nav-list-link">Halfedge Mesh</a></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/local/" class="nav-list-link active">Local Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/local/edge_flip" class="nav-list-link">Edge Flip Tutorial</a> </li><li class="nav-list-item "> <a href="/meshedit/local/bevel/" class="nav-list-link">Bevelling</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/global/" class="nav-list-link">Global Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/global/catmull/" class="nav-list-link">Catmull-Clark Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/remesh/" class="nav-list-link">Isotropic Remeshing</a> </li><li class="nav-list-item "> <a href="/meshedit/global/linear/" class="nav-list-link">Linear Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/loop/" class="nav-list-link">Loop Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/simplify/" class="nav-list-link">Simplification</a> </li><li class="nav-list-item "> <a href="/meshedit/global/triangulate/" class="nav-list-link">Triangulation</a> </li></ul></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/" class="nav-list-link">A3: Pathtracer</a><ul class="nav-list "><li class="nav-list-item "><a href="/pathtracer/camera_rays" class="nav-list-link">(Task 1) Camera Rays</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/intersecting_objects" class="nav-list-link">(Task 2) Intersections</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/ray_triangle_intersection" class="nav-list-link">Ray Triangle Intersection</a> </li><li class="nav-list-item "> <a href="/pathtracer/ray_sphere_intersection" class="nav-list-link">Ray Sphere Intersection</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/bounding_volume_hierarchy" class="nav-list-link">(Task 3) BVH</a></li><li class="nav-list-item "><a href="/pathtracer/shadow_rays" class="nav-list-link">(Task 4) Shadow Rays</a></li><li class="nav-list-item "><a href="/pathtracer/path_tracing" class="nav-list-link">(Task 5) Path Tracing</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/materials" class="nav-list-link">(Task 6) Materials</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/dielectrics_and_transmission" class="nav-list-link">Dielectrics and Transmission</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/environment_lighting" class="nav-list-link">(Task 7) Environment Lighting</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/importance_sampling" class="nav-list-link">Environment Light Importance Sampling</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/visualization_of_normals" class="nav-list-link">Visualization of normals</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/animation/" class="nav-list-link">A4: Animation</a><ul class="nav-list "><li class="nav-list-item "><a href="/animation/splines" class="nav-list-link">Splines</a></li><li class="nav-list-item "><a href="/animation/skeleton_kinematics" class="nav-list-link">Skeleton Kinematics</a></li><li class="nav-list-item "><a href="/animation/skinning" class="nav-list-link">Skinning</a></li><li class="nav-list-item "><a href="/animation/particles" class="nav-list-link">Particles</a></li></ul></li></ul> </nav> <footer class="site-footer"> This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </footer> </div> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search " aria-label="Search " autocomplete="off"> <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> </div> <div id="search-results" class="search-results"></div> </div> </div> <div id="main-content-wrap" class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/meshedit/">A2: MeshEdit</a></li> <li class="breadcrumb-nav-list-item"><span>Local Operations</span></li> </ol> </nav> <div id="main-content" class="main-content" role="main"> <h1 id="local-mesh-operations"> <a href="#local-mesh-operations" class="anchor-heading" aria-labelledby="local-mesh-operations"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Local Mesh Operations </h1> <p>Many of the actions that need to be implemented in the MeshEdit mode are local mesh operations (like edge collapse, face bevel, etc.).</p> <p>A good recipe for ensuring that all pointers are still valid after a local remeshing operation is:</p> <ol> <li>Draw a picture of all the elements (vertices, edges, faces, halfedges) that will be needed from the original mesh, and all the elements that should appear in the modified mesh.</li> <li>Allocate any new elements that are needed in the modified mesh, but do not appear in the original mesh.</li> <li>For every element in the “modified” picture, set <strong>all</strong> of its pointers – even if they didn’t change. For instance, for each halfedge, make sure to set <code class="language-plaintext highlighter-rouge">next</code>, <code class="language-plaintext highlighter-rouge">twin</code>, <code class="language-plaintext highlighter-rouge">vertex</code>, <code class="language-plaintext highlighter-rouge">edge</code>, and <code class="language-plaintext highlighter-rouge">face</code> to the correct values in the new (modified) picture. For each vertex, make sure to set its <code class="language-plaintext highlighter-rouge">halfedge</code> pointer. Etc. A convenience method <code class="language-plaintext highlighter-rouge">Halfedge::set_neighbors()</code> has been created for this purpose.</li> <li>Deallocate any elements that are no longer used in the modified mesh, which can be done by calling <code class="language-plaintext highlighter-rouge">Halfedge_Mesh::erase()</code>.</li> </ol> <p>The reason for setting all the pointers (and not just the ones that changed) is that it is very easy to miss a pointer, causing your code to crash.</p> <h3 id="interface-with-global-mesh-operations"> <a href="#interface-with-global-mesh-operations" class="anchor-heading" aria-labelledby="interface-with-global-mesh-operations"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Interface with global mesh operations </h3> <p>To facilitate user interaction, as well as global mesh processing operations (described below), local mesh operations should return the following values when possible. However, should it happen that the specified values are not available, or that the operation should not work on the given input, we need a way to signify the failure case. To do so, each local operation actually returns a <code class="language-plaintext highlighter-rouge">std::optional</code> value parameterized on the type of element it returns. For example, <code class="language-plaintext highlighter-rouge">Halfedge_Mesh::erase_vertex</code> returns a <code class="language-plaintext highlighter-rouge">std::optional&lt;Halfedge_Mesh::Face&gt;</code>. An <code class="language-plaintext highlighter-rouge">optional</code> can hold a value of the specified type, or, similarly to a pointer, a null value (<code class="language-plaintext highlighter-rouge">std::nullopt</code>). See <code class="language-plaintext highlighter-rouge">student/meshedit.cpp</code> for specific examples.</p> <p>Also, remember that in any case, <em>the program should not crash!</em> So for instance, you should never return a pointer to an element that was deleted.</p> <p>See the <a href="/Scotty3D/guide/model">User Guide</a> for demonstrations of each local operation.</p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::flip_edge</code> - should return the edge that was flipped</li> </ul> <p><img src="flip_edge.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::split_edge</code> - should return the inserted vertex</li> </ul> <p><img src="split_edge.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::collapse_edge</code> - should return the new vertex, corresponding to the collapsed edge</li> </ul> <p><img src="collapse_edge.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::collapse_face</code> - should return the new vertex, corresponding to the collapsed face</li> </ul> <p><img src="collapse_face.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::erase_vertex</code> - should return the new face, corresponding to the faces originally containing the vertex</li> </ul> <p><img src="erase_vertex.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::erase_edge</code> - should return the new face, corresponding to the faces originally containing the edge</li> </ul> <p><img src="erase_edge.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::bevel_vertex</code> - should return the new face, corresponding to the beveled vertex</li> </ul> <p><img src="bevel_vertex.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::bevel_edge</code> - should return the new face, corresponding to the beveled edge</li> </ul> <p><img src="bevel_edge.svg" alt="" /></p> <ul> <li><code class="language-plaintext highlighter-rouge">Halfedge_Mesh::bevel_face</code> - should return the new, inset face</li> </ul> <p><img src="bevel_face.svg" alt="" /></p> </div> </div> <div class="search-overlay"></div> </div> </body> </html>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.4, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="263.926px" height="141.333px" viewBox="0 0 263.926 141.333" enable-background="new 0 0 263.926 141.333"
xml:space="preserve">
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="43.931,2 0.598,68 47.265,139.333 78.598,61.333 "/>
<g>
<g>
<path fill="none" stroke="#000000" stroke-width="3" stroke-miterlimit="10" d="M191.836,21.504
c-18.175-6.461-37.742-9.979-58.135-9.979c-20.524,0-40.22,3.564-58.494,10.107"/>
<g>
<polygon points="201.702,25.356 189.934,14.34 191.068,21.3 185.586,25.733 "/>
</g>
</g>
</g>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="43.931,2 0.598,68 47.265,139.333 78.598,61.333 "/>
<line fill="none" stroke="#000000" stroke-width="4" stroke-linecap="round" stroke-miterlimit="10" x1="43.931" y1="2" x2="47.265" y2="139.333"/>
<g>
<g>
<g>
<defs>
<rect id="SVGID_1_" x="52.827" y="64.676" width="6" height="8"/>
</defs>
<clipPath id="SVGID_2_">
<use xlink:href="#SVGID_1_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_2_)" d="M54.612,68.122c0.293-1.092,0.61-1.784,1.063-2.184c0.293-0.267,0.771-0.453,1.146-0.453
c0.479,0,0.771,0.32,0.771,0.826c0,0.691-0.561,1.438-1.385,1.836c-0.452,0.24-1.013,0.399-1.73,0.561L54.612,68.122
M58.047,70.705l-0.398,0.267c-0.825,0.612-1.598,0.932-2.156,0.932c-0.745,0-1.226-0.586-1.226-1.543
c0-0.398,0.055-0.825,0.133-1.277l1.307-0.318c0.267-0.08,0.69-0.24,1.092-0.399c1.357-0.587,1.971-1.332,1.971-2.317
c0-0.745-0.531-1.225-1.331-1.225c-1.039,0-2.797,1.092-3.407,2.104c-0.479,0.799-0.959,2.689-0.959,3.756
c0,1.252,0.691,1.971,1.838,1.971c0.903,0,1.812-0.452,3.273-1.625L58.047,70.705z"/>
</g>
</g>
</g>
<polygon opacity="0.2" fill="#1B1F8A" enable-background="new " points="227.26,2 183.926,68 230.593,139.333 261.926,61.333 "/>
<polygon fill="none" stroke="#000000" stroke-miterlimit="10" points="227.26,2 183.926,68 230.593,139.333 261.926,61.333 "/>
<g>
<defs>
<rect id="SVGID_3_" x="98.486" y="19.982" width="72" height="16"/>
</defs>
<clipPath id="SVGID_4_">
<use xlink:href="#SVGID_3_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_4_)" d="M102.586,21.816c0.906-0.026,1.438-0.054,2.317-0.054c0.853,0,1.544,0.134,1.544,0.319
l0.133,1.198h0.586l0.213-2.263l-0.105-0.106c-0.586-0.054-0.879-0.08-1.492-0.08c-0.372,0-0.852,0.026-1.73,0.053
c-1.145,0.027-1.598,0.027-2.05,0.027c-0.56,0-1.251-0.027-2.982-0.054v0.586l0.586,0.054c0.692,0.053,0.745,0.159,0.745,1.544
v7.136c0,0.533-0.08,0.772-0.319,0.906l-0.506,0.292v0.347c1.571-0.026,1.571-0.026,1.944-0.026h0.532
c1.624,0.026,2.263,0.053,3.062,0.053c0.826,0,1.332-0.026,2.237-0.053l0.079-0.134l0.188-2.529h-0.64l-0.347,1.518
c0,0-0.025,0.026-0.053,0.026c-0.506,0.16-0.959,0.24-1.837,0.24c-0.666,0-1.278-0.026-2.104-0.054v-4.233
c0.453-0.054,0.72-0.054,1.066-0.054h1.064c0.586,0,0.852,0.16,0.905,0.586l0.08,0.799h0.64l-0.027-1.73
c0-0.16,0-0.187,0.027-1.704h-0.64l-0.08,0.905c-0.026,0.267-0.239,0.346-0.905,0.346h-1.064c-0.506,0-0.746,0-1.066-0.026V21.816"
/>
<path clip-path="url(#SVGID_4_)" d="M114.223,29.139c0,0.719-0.746,1.305-1.624,1.305c-1.118,0-1.837-1.092-1.837-2.822
c0-1.598,0.559-2.396,1.678-2.396c0.691,0,1.251,0.293,1.783,0.985V29.139 M116.166,20.325l-0.133-0.08l-1.145,0.347
c-0.453,0.133-1.012,0.239-1.918,0.319v0.586l0.826,0.053c0.373,0,0.426,0.16,0.426,1.092v1.943l-0.319-0.106
c-0.452-0.186-0.879-0.293-1.278-0.293c-0.506,0-0.959,0.16-1.385,0.427l-1.145,0.745c-0.905,0.612-1.332,1.518-1.332,2.876
c0,2.264,1.172,3.728,3.036,3.728c0.347,0,0.612-0.079,0.772-0.187l1.65-1.357l-0.08,1.198l0.08,0.106
c0.959-0.026,1.252-0.026,1.438-0.026c0.107,0,0.4,0,0.853,0.026c0.106,0,0.399,0,0.745,0v-0.586l-0.532-0.026
c-0.479-0.026-0.56-0.16-0.56-1.012V20.325z"/>
<path clip-path="url(#SVGID_4_)" d="M122.104,31.908c1.944,0,2.423,0.266,2.423,1.278c0,1.092-1.064,1.917-2.477,1.917
c-1.41,0-2.369-0.666-2.369-1.651c0-0.586,0.346-1.118,0.825-1.357C120.746,31.988,121.332,31.908,122.104,31.908 M121.785,24.985
c0.852,0,1.305,0.691,1.305,1.943c0,1.118-0.426,1.704-1.278,1.704c-0.825,0-1.331-0.692-1.331-1.891
C120.48,25.598,120.934,24.985,121.785,24.985z M126.205,25.837l0.08-1.012c-0.666,0.053-0.959,0.08-1.305,0.08
c-0.133,0-0.32,0-0.586-0.027c-0.639-0.479-1.385-0.692-2.424-0.692c-2.023,0-3.434,1.198-3.434,2.85
c0,0.586,0.213,1.118,0.585,1.544c0.293,0.293,0.532,0.453,1.092,0.64l-1.118,0.852c-0.16,0.106-0.266,0.453-0.266,0.772
c0,0.56,0.266,0.853,1.064,1.065l-1.278,0.772c-0.239,0.133-0.426,0.532-0.426,0.984c0,1.358,1.331,2.237,3.435,2.237
c2.797,0,4.66-1.438,4.66-3.542c0-1.357-0.746-1.97-2.344-1.97h-0.398c-1.572,0.026-2.131,0.053-2.316,0.053
c-0.48,0-0.746-0.159-0.746-0.479c0-0.239,0.16-0.426,0.479-0.612c0.268,0,0.427,0.026,0.613,0.026c1.118,0,2.13-0.372,2.77-1.012
c0.506-0.506,0.719-1.064,0.719-1.837c0-0.267-0.027-0.453-0.08-0.772L126.205,25.837z"/>
<path clip-path="url(#SVGID_4_)" d="M130.652,27.354h-0.054c-0.106,0-0.532-0.026-0.772-0.053h-0.506
c0.054-1.571,0.426-2.21,1.358-2.21c0.905,0,1.278,0.639,1.305,2.21L130.652,27.354 M134.007,26.982
c0-1.678-1.198-2.797-3.009-2.797c-0.532,0-0.959,0.134-1.385,0.373l-0.745,0.453c-1.065,0.612-1.519,1.57-1.519,3.089
c0,2.503,1.279,3.86,3.648,3.86c0.905,0,1.491-0.159,2.503-0.692l0.347-0.771l-0.187-0.24c-0.745,0.427-1.226,0.56-1.864,0.56
c-0.825,0-1.598-0.426-1.997-1.118c-0.267-0.453-0.347-0.826-0.372-1.571h2.076c0.905,0,1.625-0.08,2.503-0.319V26.982z"/>
<path clip-path="url(#SVGID_4_)" d="M135.818,28.473c0,1.198-0.054,1.838-0.214,2.743c1.146,0.532,2.104,0.745,3.302,0.745
c2.822,0,4.66-1.491,4.66-3.781c0-1.411-0.826-2.369-2.396-2.796l-1.811-0.479c-1.172-0.293-1.678-0.799-1.678-1.598
c0-1.092,0.879-1.864,2.131-1.864c0.824,0,1.544,0.293,2.156,0.879l0.08,1.305h0.666c0-1.038,0.079-1.811,0.213-2.264l-0.08-0.187
c-1.065-0.372-1.891-0.532-2.93-0.532c-2.636,0-4.207,1.252-4.207,3.382c0,1.385,0.826,2.37,2.316,2.822l2.211,0.666
c0.904,0.266,1.331,0.772,1.331,1.518c0,1.198-1.012,2.051-2.396,2.051c-1.065,0-2.104-0.479-2.583-1.226l-0.133-1.385H135.818"/>
<path clip-path="url(#SVGID_4_)" d="M147.906,26.423c0.347-0.532,0.879-0.799,1.545-0.799c1.225,0,1.943,0.958,1.943,2.556
c0,1.651-0.719,2.689-1.863,2.689c-0.693,0-1.199-0.266-1.625-0.878V26.423 M147.746,24.186l-1.091,0.373
c-0.56,0.134-0.825,0.187-1.624,0.293l-0.188,0.026v0.586l0.72,0.027c0.372,0.026,0.399,0.186,0.399,1.118v7.535
c0,0.853-0.08,0.985-0.559,1.012l-0.561,0.027v0.585l2.051-0.026c0.213,0,0.24,0,2.316,0.026v-0.585l-0.719-0.027
c-0.506,0-0.586-0.159-0.586-1.012v-2.449c0.799,0.213,1.039,0.266,1.412,0.266c0.559,0,1.117-0.293,2.184-1.145
c0.105-0.08,0.186-0.16,0.266-0.213c1.064-0.799,1.624-2.024,1.624-3.462c0-1.678-1.225-2.956-2.876-2.956
c-0.611,0-1.064,0.187-1.624,0.64l-0.985,0.772v-1.305L147.746,24.186z"/>
<path clip-path="url(#SVGID_4_)" d="M157.546,20.245l-1.146,0.347c-0.479,0.133-1.012,0.239-1.943,0.319v0.586l0.852,0.053
c0.347,0,0.426,0.16,0.426,1.092v7.456c0,0.852-0.079,0.985-0.585,1.012l-0.56,0.026v0.586l2.051-0.026
c0.319,0,1.092,0,2.156,0.026v-0.586l-0.559-0.026c-0.506-0.026-0.586-0.16-0.586-1.012v-9.772L157.546,20.245"/>
<path clip-path="url(#SVGID_4_)" d="M162.072,20.458c-0.666,0-1.198,0.506-1.198,1.172s0.532,1.225,1.198,1.225
c0.639,0,1.172-0.559,1.172-1.198C163.244,20.991,162.738,20.458,162.072,20.458 M162.924,24.186l-1.092,0.373
c-0.506,0.134-0.904,0.213-1.57,0.293c-0.053,0-0.133,0-0.24,0.026v0.586l0.72,0.027c0.372,0.026,0.426,0.186,0.426,1.118v3.488
c0,0.852-0.08,0.985-0.586,1.012l-0.56,0.026v0.586l2.051-0.026c0.32,0,1.092,0,2.156,0.026v-0.586l-0.559-0.026
c-0.506-0.026-0.586-0.16-0.586-1.012v-5.805L162.924,24.186z"/>
<path clip-path="url(#SVGID_4_)" d="M169.928,30.736l-0.107-0.319c-0.318,0.159-0.479,0.213-0.744,0.213
c-0.746,0-0.986-0.239-0.986-1.038v-3.781h1.678l0.133-1.039l-1.811,0.106v-0.932c0-0.825,0.054-1.357,0.188-2.156l-0.214-0.16
c-0.639,0.319-1.145,0.506-1.944,0.799c0.054,0.825,0.054,1.118,0.054,1.465v0.958l-1.038,0.666v0.373l1.012-0.08v4.127
c0,1.411,0.586,2.023,1.971,2.023c0.506,0,0.905-0.133,1.038-0.293L169.928,30.736"/>
</g>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="227.259" y1="2" x2="230.593" y2="139.333"/>
<line fill="none" stroke="#000000" stroke-miterlimit="10" x1="183.926" y1="68" x2="261.926" y2="61.333"/>
<circle cx="228.925" cy="64.675" r="5.318"/>
<g>
<defs>
<rect id="SVGID_5_" x="216.107" y="70.946" width="8" height="8"/>
</defs>
<clipPath id="SVGID_6_">
<use xlink:href="#SVGID_5_" overflow="visible"/>
</clipPath>
<path clip-path="url(#SVGID_6_)" d="M221.193,72.022l0.16,0.293c0.16-0.079,0.293-0.133,0.426-0.133
c0.426,0,0.693,0.373,0.693,1.012c0,2.344-1.545,4.926-2.93,4.926c-0.799,0-1.278-0.665-1.278-1.704
c0-1.65,0.612-3.115,2.184-5.032l-0.159-0.293c-0.32,0.133-0.533,0.187-0.986,0.187c-0.426,0-1.117-0.026-1.57-0.08l-0.187-0.026
c-0.106,0-0.187,0-0.187,0c-0.186,0-0.346,0.026-0.506,0.106c-0.24,0.426-0.399,1.012-0.612,1.864h0.347l0.266-0.666
c0.133-0.267,0.426-0.426,0.826-0.426c0.079,0,0.213,0,0.426,0c0.133,0.026,0.239,0.026,0.452,0.026
c0.319,0,0.586-0.026,0.985-0.08c-1.758,1.917-2.424,3.249-2.424,4.819c0,1.226,0.72,2.104,1.758,2.104
c0.666,0,1.252-0.292,1.998-0.932c0.745-0.692,1.49-1.757,1.996-2.849c0.347-0.799,0.613-1.864,0.613-2.503
c0-0.905-0.4-1.545-0.986-1.545c-0.213,0-0.398,0.054-0.506,0.187L221.193,72.022"/>
</g>
</svg>
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <title>(Task 3) BVH - </title> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> <link rel="stylesheet" href="/assets/css/just-the-docs-default.css"> <script type="text/javascript" src="/assets/js/vendor/lunr.min.js"></script> <script type="text/javascript" src="/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.7.1 --> <title>(Task 3) BVH</title> <meta name="generator" content="Jekyll v4.2.0" /> <meta property="og:title" content="(Task 3) BVH" /> <meta property="og:locale" content="en_US" /> <meta name="twitter:card" content="summary" /> <meta property="twitter:title" content="(Task 3) BVH" /> <script type="application/ld+json"> {"headline":"(Task 3) BVH","@type":"WebPage","url":"/pathtracer/bounding_volume_hierarchy","@context":"https://schema.org"}</script> <!-- End Jekyll SEO tag --> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> </svg> <div class="side-bar"> <div class="site-header"> <a href="/" class="site-title lh-tight"> </a> <a href="#" id="menu-button" class="site-button"> <svg viewBox="0 0 24 24" class="icon"><use xlink:href="#svg-menu"></use></svg> </a> </div> <nav role="navigation" aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/git/" class="nav-list-link">GitHub Setup</a></li><li class="nav-list-item"><a href="/build/" class="nav-list-link">Building Scotty3D</a></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/guide/" class="nav-list-link">User Guide</a><ul class="nav-list "><li class="nav-list-item "><a href="/guide/animate_mode/" class="nav-list-link">Animate</a></li><li class="nav-list-item "><a href="/guide/layout_mode/" class="nav-list-link">Layout</a></li><li class="nav-list-item "><a href="/guide/model_mode/" class="nav-list-link">Model</a></li><li class="nav-list-item "><a href="/guide/render_mode/" class="nav-list-link">Render</a></li><li class="nav-list-item "><a href="/guide/rigging_mode/" class="nav-list-link">Rig</a></li><li class="nav-list-item "><a href="/guide/simulate_mode/" class="nav-list-link">Simulate</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/" class="nav-list-link">A2: MeshEdit</a><ul class="nav-list "><li class="nav-list-item "><a href="/meshedit/halfedge" class="nav-list-link">Halfedge Mesh</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/local/" class="nav-list-link">Local Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/local/edge_flip" class="nav-list-link">Edge Flip Tutorial</a> </li><li class="nav-list-item "> <a href="/meshedit/local/bevel/" class="nav-list-link">Bevelling</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/meshedit/global/" class="nav-list-link">Global Operations</a><ul class="nav-list"><li class="nav-list-item "> <a href="/meshedit/global/catmull/" class="nav-list-link">Catmull-Clark Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/remesh/" class="nav-list-link">Isotropic Remeshing</a> </li><li class="nav-list-item "> <a href="/meshedit/global/linear/" class="nav-list-link">Linear Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/loop/" class="nav-list-link">Loop Subdivision</a> </li><li class="nav-list-item "> <a href="/meshedit/global/simplify/" class="nav-list-link">Simplification</a> </li><li class="nav-list-item "> <a href="/meshedit/global/triangulate/" class="nav-list-link">Triangulation</a> </li></ul></li></ul></li><li class="nav-list-item active"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/" class="nav-list-link">A3: Pathtracer</a><ul class="nav-list "><li class="nav-list-item "><a href="/pathtracer/camera_rays" class="nav-list-link">(Task 1) Camera Rays</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/intersecting_objects" class="nav-list-link">(Task 2) Intersections</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/ray_triangle_intersection" class="nav-list-link">Ray Triangle Intersection</a> </li><li class="nav-list-item "> <a href="/pathtracer/ray_sphere_intersection" class="nav-list-link">Ray Sphere Intersection</a> </li></ul></li><li class="nav-list-item active"><a href="/pathtracer/bounding_volume_hierarchy" class="nav-list-link active">(Task 3) BVH</a></li><li class="nav-list-item "><a href="/pathtracer/shadow_rays" class="nav-list-link">(Task 4) Shadow Rays</a></li><li class="nav-list-item "><a href="/pathtracer/path_tracing" class="nav-list-link">(Task 5) Path Tracing</a></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/materials" class="nav-list-link">(Task 6) Materials</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/dielectrics_and_transmission" class="nav-list-link">Dielectrics and Transmission</a> </li></ul></li><li class="nav-list-item "><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/pathtracer/environment_lighting" class="nav-list-link">(Task 7) Environment Lighting</a><ul class="nav-list"><li class="nav-list-item "> <a href="/pathtracer/importance_sampling" class="nav-list-link">Environment Light Importance Sampling</a> </li></ul></li><li class="nav-list-item "><a href="/pathtracer/visualization_of_normals" class="nav-list-link">Visualization of normals</a></li></ul></li><li class="nav-list-item"><a href="#" class="nav-list-expander"><svg viewBox="0 0 24 24"><use xlink:href="#svg-arrow-right"></use></svg></a><a href="/animation/" class="nav-list-link">A4: Animation</a><ul class="nav-list "><li class="nav-list-item "><a href="/animation/splines" class="nav-list-link">Splines</a></li><li class="nav-list-item "><a href="/animation/skeleton_kinematics" class="nav-list-link">Skeleton Kinematics</a></li><li class="nav-list-item "><a href="/animation/skinning" class="nav-list-link">Skinning</a></li><li class="nav-list-item "><a href="/animation/particles" class="nav-list-link">Particles</a></li></ul></li></ul> </nav> <footer class="site-footer"> This site uses <a href="https://github.com/pmarsceill/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </footer> </div> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search " aria-label="Search " autocomplete="off"> <label for="search-input" class="search-label"><svg viewBox="0 0 24 24" class="search-icon"><use xlink:href="#svg-search"></use></svg></label> </div> <div id="search-results" class="search-results"></div> </div> </div> <div id="main-content-wrap" class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/pathtracer/">A3: Pathtracer</a></li> <li class="breadcrumb-nav-list-item"><span>(Task 3) BVH</span></li> </ol> </nav> <div id="main-content" class="main-content" role="main"> <h1 id="task-3-bounding-volume-hierarchy"> <a href="#task-3-bounding-volume-hierarchy" class="anchor-heading" aria-labelledby="task-3-bounding-volume-hierarchy"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> (Task 3) Bounding Volume Hierarchy </h1> <p>In this task you will implement a bounding volume hierarchy that accelerates ray-scene intersection. Most of this work will be in <code class="language-plaintext highlighter-rouge">student/bvh.inl</code>. Note that this file has an unusual extension (<code class="language-plaintext highlighter-rouge">.inl</code> = inline) because it is an implementation file for a template class. This means <code class="language-plaintext highlighter-rouge">bvh.h</code> must <code class="language-plaintext highlighter-rouge">#include</code> it, so all code that sees <code class="language-plaintext highlighter-rouge">bvh.h</code> will also see <code class="language-plaintext highlighter-rouge">bvh.inl</code>.</p> <p>First, take a look at the definition for our <code class="language-plaintext highlighter-rouge">BVH</code> in <code class="language-plaintext highlighter-rouge">rays/bvh.h</code>. We represent our BVH using a vector of <code class="language-plaintext highlighter-rouge">Node</code>s, <code class="language-plaintext highlighter-rouge">nodes</code>, as an implicit tree data structure in the same fashion as heaps that you probably have seen in some other courses. A <code class="language-plaintext highlighter-rouge">Node</code> has the following fields:</p> <ul> <li><code class="language-plaintext highlighter-rouge">BBox bbox</code>: the bounding box of the node (bounds all primitives in the subtree rooted by this node)</li> <li><code class="language-plaintext highlighter-rouge">size_t start</code>: start index of primitives in the <code class="language-plaintext highlighter-rouge">BVH</code>’s primitive array</li> <li><code class="language-plaintext highlighter-rouge">size_t size</code>: range of index in the primitive list (number of primitives in the subtree rooted by the node)</li> <li><code class="language-plaintext highlighter-rouge">size_t l</code>: the index of the left child node</li> <li><code class="language-plaintext highlighter-rouge">size_t r</code>: the index of the right child node</li> </ul> <p>The BVH class also maintains a vector of all primitives in the BVH. The fields start and size in the BVH <code class="language-plaintext highlighter-rouge">Node</code> refer the range of contained primitives in this array. The primitives in this array are not initially in any particular order, and you will need to <em>rearrange the order</em> as you build the BVH so that your BVH can accurately represent the spacial hierarchy.</p> <p>The starter code constructs a valid BVH, but it is a trivial BVH with a single node containing all scene primitives. Once you are done with this task, you can check the box for BVH in the left bar under “Visualize” when you start render to visualize your BVH and see each levels.</p> <p>Finally, note that the BVH visualizer will start drawing from <code class="language-plaintext highlighter-rouge">BVH::root_idx</code>, so be sure to set this to the proper index (probably 0 or <code class="language-plaintext highlighter-rouge">nodes.size() - 1</code>, depending on your implementation) when you build the BVH.</p> <h2 id="step-0-bounding-box-calculation"> <a href="#step-0-bounding-box-calculation" class="anchor-heading" aria-labelledby="step-0-bounding-box-calculation"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Step 0: Bounding Box Calculation </h2> <p>Implement <code class="language-plaintext highlighter-rouge">BBox::hit</code> in <code class="language-plaintext highlighter-rouge">student/bbox.cpp</code>. Also if you haven’t already, implement <code class="language-plaintext highlighter-rouge">Triangle::bbox</code> in <code class="language-plaintext highlighter-rouge">student/tri_mesh.cpp</code> (<code class="language-plaintext highlighter-rouge">Triangle::bbox</code> should be fairly straightforward). We recommend checking out this <a href="https://www.scratchapixel.com/lessons/3d-basic-rendering/minimal-ray-tracer-rendering-simple-shapes/ray-box-intersection">Scratchapixel article</a>.</p> <h2 id="step-1-bvh-construction"> <a href="#step-1-bvh-construction" class="anchor-heading" aria-labelledby="step-1-bvh-construction"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Step 1: BVH Construction </h2> <p>Your job is to construct a <code class="language-plaintext highlighter-rouge">BVH</code> using the <a href="http://15462.courses.cs.cmu.edu/fall2017/lecture/acceleratingqueries/slide_025">Surface Area Heuristic</a> discussed in class. Tree construction would occur when the BVH object is constructed. Below is the pseudocode by which your BVH construction procedure should generally follow (copied from lecture slides).</p> <center><img src="BVH_construction_pseudocode.png" /></center> <h2 id="step-2-ray-bvh-intersection"> <a href="#step-2-ray-bvh-intersection" class="anchor-heading" aria-labelledby="step-2-ray-bvh-intersection"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Step 2: Ray-BVH Intersection </h2> <p>Implement the ray-BVH intersection routine <code class="language-plaintext highlighter-rouge">Trace BVH&lt;Primitive&gt;::hit(const Ray&amp; ray)</code>. You may wish to consider the node visit order optimizations we discussed in class. Once complete, your renderer should be able to render all of the test scenes in a reasonable amount of time. <a href="visualization_of_normals.md">Visualization of normals</a> may help with debugging.</p> <center><img src="ray_bvh_pseudocode.png" /></center> <h2 id="visualization"> <a href="#visualization" class="anchor-heading" aria-labelledby="visualization"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Visualization </h2> <p>In Render mode, simply check the box for “BVH”, and you would be able to see the BVH you generated in task 3 when you <strong>start rendering</strong>. You can click on the horizontal bar to see each level of your BVH.</p> <center><img src="new_results/bvh_button.png" style="height:120px" /></center> <h2 id="sample-bvhs"> <a href="#sample-bvhs" class="anchor-heading" aria-labelledby="sample-bvhs"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Sample BVHs </h2> <p>The BVH constructed for Spot the Cow on the 10th level.</p> <center><img src="new_results/bvh.png" style="height:320px" /></center> <p>The BVH constructed for a scene composed of several cubes and spheres on the 0th and 1st levels.</p> <center><img src="new_results/l0.png" style="height:220px" /><img src="new_results/l2.png" style="height:220px" /></center> <p>The BVH constructed for the Stanford Bunny on the 10th level.</p> <center><img src="new_results/bvh_bunny_10.png" style="height:320px" /></center> </div> </div> <div class="search-overlay"></div> </div> </body> </html>
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment