<div dir="ltr"><div>Good example. Checkout what happens to the blue extrusion if you change the spine to become slightly non-collinear: spine='0 0 0, 0 1 0, 0 0 0.01' .</div><div>Here is x3dom :</div><div><a href="https://andreasplesch.github.io/Library/Viewer/index.html?url=data:text/plain;base64,PFgzRD4KICA8U2NlbmU+CiAgICAgICAgPFNoYXBlPgogICAgICAgICAgPEFwcGVhcmFuY2U+CiAgICAgICAgICAgIDxNYXRlcmlhbCBkaWZmdXNlQ29sb3I9JzAuMSAwIDAuOCcvPgogICAgICAgICAgPC9BcHBlYXJhbmNlPgogICAgICAgICAgPEV4dHJ1c2lvbiBiZWdpbkNhcD0nZmFsc2UnIGVuZENhcD0nZmFsc2UnIHNjYWxlPScxIDEgMS4yIDEuMiAxLjQgMS40JyBzb2xpZD0nZmFsc2UnIHNwaW5lPScwIDAgMCAwIDEgMCAwIDAgMC4wMScvPgogICAgICAgIDwvU2hhcGU+CiAgPC9TY2VuZT4KPC9YM0Q+">https://andreasplesch.github.io/Library/Viewer/index.html?url=data:text/plain;base64,PFgzRD4KICA8U2NlbmU+CiAgICAgICAgPFNoYXBlPgogICAgICAgICAgPEFwcGVhcmFuY2U+CiAgICAgICAgICAgIDxNYXRlcmlhbCBkaWZmdXNlQ29sb3I9JzAuMSAwIDAuOCcvPgogICAgICAgICAgPC9BcHBlYXJhbmNlPgogICAgICAgICAgPEV4dHJ1c2lvbiBiZWdpbkNhcD0nZmFsc2UnIGVuZENhcD0nZmFsc2UnIHNjYWxlPScxIDEgMS4yIDEuMiAxLjQgMS40JyBzb2xpZD0nZmFsc2UnIHNwaW5lPScwIDAgMCAwIDEgMCAwIDAgMC4wMScvPgogICAgICAgIDwvU2hhcGU+CiAgPC9TY2VuZT4KPC9YM0Q+</a></div><div><br></div><div>I believe x_ite looks the same (the playground does not seem to accept data urls). This unexpected result may (or may not) be what the spec. requires. If so, should there be such a large difference in the result for very small changes ?</div><div><br></div><div>-Andreas</div><div><br></div><div><br></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Jul 11, 2025 at 9:49 AM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de">holger.seelig@yahoo.de</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>There is also an Extrusion edge case page on web3D.org, which shows equal results both in Castle and X_ITE. X3DOM fails in one case. Please zoom out to view all objects.<div><br></div><div><a href="https://www.web3d.org/x3d/content/Basic/X3dSpecifications/ExtrusionEdgeCasesIndex.html" target="_blank">https://www.web3d.org/x3d/content/Basic/X3dSpecifications/ExtrusionEdgeCasesIndex.html</a></div><div><br></div><div>Best regards,</div><div>Holger</div><div><br id="m_-1699584245004307553lineBreakAtBeginningOfMessage"><div>
<div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none"><div dir="auto" style="text-align:start;text-indent:0px"><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">—</div><div style="color:rgb(0,0,0);letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Holger Seelig<br><a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</a><br><br></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 11.07.2025 um 12:46 schrieb Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>>:</div><br><div><div dir="auto"><div dir="auto"><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#NumberOfDistinctSpinePoints" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#NumberOfDistinctSpinePoints</a></div><div dir="auto"><br></div><div dir="auto">says at least 2 non-coincident points are required. The question was if it would make sense to define also the one point case. The Rotations example may suggest that it does.</div><div dir="auto"><br></div><div dir="auto"><div dir="ltr">Andreas <br></div></div><br><div class="gmail_quote" dir="auto"><div dir="ltr" class="gmail_attr">On Fri, Jul 11, 2025, 5:35 AM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de" target="_blank">holger.seelig@yahoo.de</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><div>The specification of Extrusion has a section „<span>Coincident spine points</span>“ which describes the case when there are coincident spine points and different orientation or scale values:</div><div><br></div><div>13.3.5.4.4 Coincident spine points</div><div><br></div><a href="https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#CoincidentSpinePoints" rel="noreferrer" target="_blank">https://www.web3d.org/specifications/X3Dv4Draft/ISO-IEC19775-1v4.1-CD/Part01/components/geometry3D.html#CoincidentSpinePoints</a><br id="m_-1699584245004307553m_8759070379740609254lineBreakAtBeginningOfMessage"><div>
<div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div dir="auto" style="text-align:start;text-indent:0px"><div><br></div><div><font>And this is a test for this case for coincident spine points and only orientations, as Andreas already mentioned:</font></div><div><br></div><div><a href="https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Extrusion/Rotations.x3d" rel="noreferrer" target="_blank">https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Extrusion/Rotations.x3d</a></div><div><br></div><div>Same with coincident spine points and only scales:</div><div><br></div><div><a href="https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Extrusion/Scales.x3d" rel="noreferrer" target="_blank">https://create3000.github.io/x_ite/playground/?url=https://create3000.github.io/Library/Tests/Components/Extrusion/Scales.x3d</a></div><div><br></div><div>Best regards,</div><div>Holger</div><div><br></div><div><font><span>—</span></font></div><div style="letter-spacing:normal;text-transform:none;white-space:normal;word-spacing:0px;text-decoration:none">Holger Seelig<br><a href="mailto:holger.seelig@yahoo.de" rel="noreferrer" target="_blank">holger.seelig@yahoo.de</a><br><br></div></div></div></div></div></div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 11.07.2025 um 07:11 schrieb Andreas Plesch via x3d-public <<a href="mailto:x3d-public@web3d.org" rel="noreferrer" target="_blank">x3d-public@web3d.org</a>>:</div><br><div><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" rel="noreferrer" 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==" rel="noreferrer" 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" rel="noreferrer" 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" rel="noreferrer" 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></div></blockquote></div><br></div></blockquote></div></div>
</div></blockquote></div><br></div></div></blockquote></div><div><br clear="all"></div><br><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>