<div dir="ltr">This NIST Conformance example is an interesting, tricky case. Good catch!<div><br></div><div>Yes I think the spine flip was unintentional, and the internal polygons were artifacts from the Extrusion spine doubling back over itself. Those artifacts aren't easily noticeable unless you are checking for no endcaps and looking around inside the extruded hull.</div><div><br></div><div>Looking at version control, the Extrusion values used in the example match the originals.</div><div><ul><li><meta content='12 June 2002' name='modified'/></li><li>spine='0 -1 0 0 -2 0 0 0 0 0 1 0 0 2 0 0 3 -1 0 3 -2 0 3 -3 0 3 -4 0 3 -5 0 3 -6'</li><li><a href="https://sourceforge.net/p/x3d/code/180/tree/www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test-YZextrusion.x3d">https://sourceforge.net/p/x3d/code/180/tree/www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test-YZextrusion.x3d</a></li></ul></div><div>Given that the artifacts were unintentional, I have gone ahead and simplified this model: removed the extra layer of complication introduced by the Transform rotation/translation, added a Viewpoint for easy inspection, refactored the spine to be similar but much simpler.</div><div><ul><li><span class="gmail-attribute" style="font-family:"Times New Roman";font-size:medium"><font color="#000000">X3D Example Archives: Conformance Nist, Geometry, Extrusion, test YZextrusion</font></span></li><li><span class="gmail-attribute" style="font-family:"Times New Roman";font-size:medium"><font color="#000000"><<span class="element" style="color:navy">meta</span> <span class="gmail-attribute" style="color:green">name</span>='<span class="gmail-value" style="color:teal">modified</span>' <span class="gmail-attribute" style="color:green">content</span>='<span class="gmail-value" style="color:teal">13 July 2025</span>'/></font></span></li><li><span class="gmail-attribute" style="color:green;font-family:"Times New Roman";font-size:medium">spine</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">='</span><span class="gmail-value" style="color:teal;font-family:"Times New Roman";font-size:medium">0 -3 0 0 0 0 0 1 0 0 2 0 0 3 -1 0 3 -5</span><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">'</span></li><li><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium"><a href="https://www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test_YZextrusionIndex.html">https://www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test_YZextrusionIndex.html</a></span></li><li><span style="color:rgb(0,0,0);font-family:"Times New Roman";font-size:medium">version-control diff at </span><a href="https://sourceforge.net/p/x3d/code/37160/">https://sourceforge.net/p/x3d/code/37160/</a></li></ul><div>Have fun with X3D Extrusion! 😀</div></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Thu, Jul 10, 2025 at 10:12 PM Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Extrusions are useful but have many edge cases.</div><div><br></div><div>Looking into how to improve a bit x3dom's implementation I came across:</div><div><br></div><div><a href="https://www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test_YZextrusionIndex.html" target="_blank">https://www.web3d.org/x3d/content/examples/ConformanceNist/Geometry/Extrusion/test_YZextrusionIndex.html</a></div><div><br></div><div>The beginning of the spine here has a weird 180 degree flip in direction, from -1 to -2 back to 0 on the y axis.</div><div><br></div><div>I am wondering if adding this flip was unintentional since it is not mentioned in the description?</div><div><br></div><div>Removing the colinearity of these first spine points to isolate the effect of flipping direction results in:</div><div><br></div><div><a href="https://andreasplesch.github.io/Library/Viewer/index.html?url=data:text/plain;base64,PFgzRD4KICA8U2NlbmU+CiAgICAgIDxTaGFwZT4KICAgICAgICA8QXBwZWFyYW5jZT4KICAgICAgICAgIDxNYXRlcmlhbC8+CiAgICAgICAgPC9BcHBlYXJhbmNlPgogICAgICAgIDxFeHRydXNpb24gYmVnaW5DYXA9J2ZhbHNlJyBjcm9zc1NlY3Rpb249JzEgMCAwLjc1IDAuNjYgMC41IDAuODcgMC4yNSAwLjk3IDAgMSAtMC4yNSAwLjk3IC0wLjUgMC44NyAtMC43NSAwLjY2IC0xIDAgLTAuNzUgLTAuNjYgLTAuNSAtMC44NyAtMC4yNSAtMC45NyAwLjI1IC0wLjk3IDAuNSAtMC44NyAwLjc1IC0wLjY2IDEgMCcgZW5kQ2FwPSdmYWxzZScgc29saWQ9J2ZhbHNlJyBzcGluZT0nMCAwIC0xLCAwIDAuMDEgLTIsIDAgMCAwJy8+CiAgICAgIDwvU2hhcGU+CiAgICAgIDwvU2NlbmU+CjwvWDNEPg==" target="_blank">https://andreasplesch.github.io/Library/Viewer/index.html?url=data:text/plain;base64,PFgzRD4KICA8U2NlbmU+CiAgICAgIDxTaGFwZT4KICAgICAgICA8QXBwZWFyYW5jZT4KICAgICAgICAgIDxNYXRlcmlhbC8+CiAgICAgICAgPC9BcHBlYXJhbmNlPgogICAgICAgIDxFeHRydXNpb24gYmVnaW5DYXA9J2ZhbHNlJyBjcm9zc1NlY3Rpb249JzEgMCAwLjc1IDAuNjYgMC41IDAuODcgMC4yNSAwLjk3IDAgMSAtMC4yNSAwLjk3IC0wLjUgMC44NyAtMC43NSAwLjY2IC0xIDAgLTAuNzUgLTAuNjYgLTAuNSAtMC44NyAtMC4yNSAtMC45NyAwLjI1IC0wLjk3IDAuNSAtMC44NyAwLjc1IC0wLjY2IDEgMCcgZW5kQ2FwPSdmYWxzZScgc29saWQ9J2ZhbHNlJyBzcGluZT0nMCAwIC0xLCAwIDAuMDEgLTIsIDAgMCAwJy8+CiAgICAgIDwvU2hhcGU+CiAgICAgIDwvU2NlbmU+CjwvWDNEPg==</a></div><div><br></div><div>x_ite interpretes this differently. Extreme spine direction reversals are probably out of spec. scope so I think the Nist Conformance example may have a typo.</div><div><br></div><div>Another, not well defined but potentially useful edge case is a spine with only coincident points:</div><div><br></div><div><a href="https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/create3000/Library/8f64c4caf4fcc9fc9e429d213caef2feba008efb/Tests/Components/Geometry3D/Extrusion/Rotations.x3d" target="_blank">https://create3000.github.io/x_ite/playground/?url=https://raw.githubusercontent.com/create3000/Library/8f64c4caf4fcc9fc9e429d213caef2feba008efb/Tests/Components/Geometry3D/Extrusion/Rotations.x3d</a></div><div><br></div><div>The extrusions are solely based on changes in orientations.</div><div><br></div><div>Since there is no way to define a unique SCP, these extrusions are undefined. It may be worth defining this edge case explicitly by declaring the SCP axes to align with the local coordinate system. But I think this would require a spec. amendment. Would it be worth considering ?</div><div><br></div><div>Andreas</div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Andreas Plesch<br>Waltham, MA 02453</div></div></div></div>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div>