私たちのシステムでは、いくつかのソース行(低精度)を参照行(高精度)に移動したいという要件があります。次の図は、通常の使用例を示しています。赤い線はソース線で、青い線は参照線です。
この場合、ソース行は部分的に移動され、結果は緑の線が示すようになります。
ソース行を完全に移動する必要がある場合があります。
結果:
現在、私たちの解決策は、ソースラインのヘッド/エンドポイントをリファレンスラインに投影し、その逆を行い、ソースとリファレンスライン上の投影されたポイントを見つけることです。これらの投影された点を使用して、ソースと参照線の必要な部分を抽出し、それらを新しいものに結合できます。
これはほとんどの場合に機能しますが、この方法が機能しない場合もあります。具体的には、どちらかの線が「C」のような形をしている場合、またはヘッドポイントがエンドポイントに非常に近い場合。次の2つの図はシナリオを示しています。
私のアルゴリズムを適用すると、結果が得られます:
現在のアルゴリズムは投影された点を見つけて線を抽出するだけなので、ある意味で理解できます。
私たちが期待したのは次のようなものです:
これを行うには、前のような特殊なケースも処理できるように、より堅牢なアルゴリズムが必要です。私はすべての点を線から別の点に投影し、投影された線の先頭/終了点に最も近い2つの投影点を見つけようとしましたが、うまくいきませんでした。それでも、予期しない結果をもたらすケースを見つけることができます。
誰かが以前に同様の問題に遭遇したことがありますか?同様の仕事をすることができるソフトウェアまたはライブラリがあればそれも素晴らしいでしょう。どんな答えでもいただければ幸いです。