<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7">
</head>
<body>
<div dir="ltr" style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<span style="font-size: 12pt; letter-spacing: -0.5px;">Hi all,</span><br>
</div>
<div id="ms-outlook-mobile-body-separator-line" data-applydefaultfontstyles="true" style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt;" dir="ltr">
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">I've opened a pull request adding
a clothoid (Euler spiral) curve type to GEOS and would appreciate reviews:</span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><a href="https://github.com/libgeos/geos/pull/1566" rel="noreferrer noopener" style="margin-top: 0px; margin-bottom: 0px;">GEOS
PR #1566</a></span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><b>What it adds</b></span></p>
<ul style="list-style-type: disc;">
<li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">A Clothoid geometry following ISO/IEC 13249-3:2016 ST_Clothoid, represented by an affine placement, scale factor, and start/end distances from the inflection point.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">WKT read/write using the SQL/MM CLOTHOID syntax, including Z, M, ZM, and EMPTY.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">WKB read/write as type 22, with 1022/2022/3022 for Z/M/ZM.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">Length, envelope, and linearisation, including clothoid sections within a CompoundCurve.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">GEOSGeom_createEmptyClothoid in the C API.</span></li></ul>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Distance, intersection, and point-location
operations currently throw on clothoids rather than silently falling back to a chord, so unsupported operations fail explicitly instead of returning an incorrect result.</span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><b>Numerics</b></span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Points and headings are computed
using Fresnel integrals. Beyond |t/A| = 9, the implementation switches to asymptotic auxiliary functions. Headings are reduced using a 159-bit representation of 2ð, keeping accuracy at around 1e-16 of the curve extent even far from the inflection point.</span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Tests compare against a high-precision
reference and cover numerical edge cases and error paths.</span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);"><b>Where I'd especially appreciate
feedback</b></span></p>
<ol start="1" style="list-style-type: decimal;">
<li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">The new GEOS_CLOTHOID type ID (13), particularly its ABI implications and the effect on code switching on GeometryTypeId.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">The new virtual SimpleCurve::addLinearizedPoints, which allows CompoundCurve to linearise its sections without explicit type checks.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">Whether throwing for unsupported operations is the right default, or whether some operations should linearise first.</span></li><li style="font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); line-height: normal; margin: 0px 0px 16px;">
<span style="letter-spacing: -0.5px;" role="presentation">The C API addition and WKB encoding. ISO WKB cannot mark an empty clothoid nested inside a collection, so the reader has a specific rule for that case.</span></li></ol>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">The PR is deliberately limited to
I/O and basic curve support. ST_SpiralCurve, predicates, overlay, buffer, and GML are left for follow-up work.</span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Thanks for taking a look.</span></p>
<p style="line-height: normal; margin: 0px 0px 16px;"><span style="letter-spacing: -0.5px; font-family: Aptos, Aptos_MSFontService, -apple-system, Roboto, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">Jeroen Bloemscheer </span></p>
</div>
<hr>
<table style="width: 100%;">
<tbody>
<tr>
<td style="width: 43.4228%; vertical-align: middle;"><span style="font-family: Tahoma,Geneva, sans-serif;"><span style="font-size: 20px; color: #28324e;"><strong>Jeroen Bloemscheer</strong></span><br>
<span style="color: #41bbc8;">Geo-IT Consultant</span><br>
<span style="color: #41bbc8;">Zaltbommel</span></span><strong><span style="font-family: Tahoma,Geneva, sans-serif;"><br>
</span></strong></td>
<td style="width: 56.3087%;"><span style="font-family: Tahoma,Geneva, sans-serif;"><strong><img src="https://logos.merkator.com/footer/Signature_logo.png" alt="Merkator" width="200"><br>
</strong></span></td>
</tr>
<tr>
<td style="width: 43.4228%;"><br>
<span style="font-family: Tahoma,Geneva, sans-serif;">m: +31 (0)6 478 728 18</span><br>
<span style="font-family: Tahoma,Geneva, sans-serif; color: #000000; text-decoration: none; text-underline: none;">e: jeroen.bloemscheer@merkator.com</span><br>
<br>
</td>
<td style="width: 56.3087%;"><br>
<span style="font-family: Tahoma,Geneva, sans-serif;">Merkator BV</span><br>
<span style="font-family: Tahoma,Geneva, sans-serif;">Hogeweg 137a</span><br>
<span style="font-family: Tahoma,Geneva, sans-serif;">5301 LL Zaltbommel(NL)</span><strong><span style="font-family: Tahoma,Geneva, sans-serif;"><br>
</span></strong></td>
</tr>
<tr>
<td style="width: 43.4228%; vertical-align: top;"><span style="color: #41bbc8; font-family: Tahoma, Geneva, sans-serif; font-size: 18px;"><a style="text-decoration: none; color: #41bbc8;" href="https://www.merkator.com/" target="_blank" rel="noopener">www.merkator.com</a></span></td>
<td style="width: 56.3087%; vertical-align: top;"><a href="https://www.linkedin.com/company/2400587" target="_blank" rel="noopener"><img src="
https://wordtohtml.net/images/icons/linkedin-square-small.png" alt="LinkedIn" width="22" height="22"></a></td>
</tr>
</tbody>
</table>
<hr>
<p><span style="color: #999999;font-size: 8px;">This email (including any attachments to it) is confidential, legally privileged, subject to copyright and is sent for the personal attention of the intended recipient only. If you have received this email in
error, please advise us immediately and delete it. You are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited. Although we have taken reasonable precautions to ensure
no viruses are present in this email, we cannot accept responsibility for any loss or damage arising from the viruses in this email or attachments. We exclude any liability for the content of this email, or for the consequences of any actions taken on the
basis of the information provided in this email or its attachments, unless that information is subsequently confirmed in writing.</span></p>
</body>
</html>