ポリゴンを膨張および収縮させるためのアルゴリズム
1. 序章
このチュートリアルでは、ポリゴンを膨張または収縮させるためのアルゴリズムについて説明します。
2. 一般的な形での相似変換
簡単にするために、正方形から始めましょう。 形状を大きくしたり小さくしたりして、形状を拡大縮小するというアイデアは、おそらくご存知でしょう。 このアイデアは、技術的には、相似変換または空間の均一拡張の名前を取ります。
頂点のセットで定義されたポリゴンから始めます。 次に、相似変換の中心と呼ぶ点を特定します。 相似比、任意の実数を選択した後、変換されたポリゴン内の対応する新しい頂点を次のように計算できます。
頂点の座標がわかっている場合、対応するホモセティック変換された画像は次のように計算できます。
3. 特殊なケースとしての均一なスケーリング
相似中心の座標がである特別な場合では、相似は原点に関連して行われます。 これにより、変換されたポリゴンの画像の計算が大幅に簡素化されます。 したがって、前の式は次のようになります。
この特殊なタイプの相似変換は、均一スケーリングの名前を取ります。 この場合、係数は、変換のスケーリング係数の名前を想定しています。
4. ホモセティックに変形する形状とオフセットする形状
関連する問題は、形状またはポリゴンのオフセットを伴う問題です。 場合によっては、仮想的にポリゴンを変換したいだけでなく、結果の形状に追加の制約を課したい場合があります。 たとえば、新しい形状の周囲のすべての点が、元の形状の周囲の最も近い点と等距離にあるという追加の制約を満たすことができます。
たとえば、元の形状が円であり、その中心を中心にスケーリングする場合、相似変換はこの規則を尊重します。
ただし、相似変換は一般にこの制約を満たさないことに注意してください。 これは、変換されたポリゴンの各コーナーポイントまたは頂点が、実際には、変換された形状の他のポイントよりも、一般にその逆像から遠く離れているためです。
制限された条件を満たす変換は、地理空間分析ではポリゴンバッファリングとしても知られている、ポリゴンのオフセットの名前を取ります。
5. ポリゴンをオフセットする手順
既知の頂点でポリゴンをオフセットするには、次のタスクを順番に実行するアルゴリズムが必要です。 まず、各頂点を取得して複製します。 次に、新しい各頂点を、その前にある古い頂点と時計回りの順序で接続します。
これにより、互いに独立して移動できるセグメントを定義できます。 任意の長さを選択した後、次に、その軸に沿ってセグメントをシフトします。
セグメント間の垂直性の定義を覚えておくことで、最初に各セグメントの傾きを次のように計算できます。
このセグメントに垂直な線はすべて、の逆数の逆数である勾配を持っています。 勾配のあるセグメントの頂点ごとに、新しい座標は次の2つの方程式を満たす必要があります。
為に 。 これらは2つの未知数の2つの方程式であり、各頂点の新しい座標を見つけるために解くことができます。
6. ドットの接続
残りの最後のステップは、変換されたセグメントを相互に接続するで構成されます。 これは、半径が円周の円弧を作成することで実行できます。 各円弧は、元の各頂点を中心とし、複製された頂点の2つの画像内にバインドされます。
このアニメーションは、ポリゴンの定義から最終的な形状まで、インフレーションの完全な手順を示しています。
この手順は凹多角形でも機能することに注意してください。ただし、すべてのオフセット頂点が変換された多角形の外側にあることを確認するために注意を払う必要があります。 そうでない場合は、それらとポリゴン内にあるすべての線を削除する必要があります。 その方法について復習が必要な場合は、ジオフェンスに関するチュートリアルを参照できます。
この手順は、必要な変更を加えて、ポリゴンを収縮させるためにも機能します。 この場合、セグメントを移動する方向を反転する必要があります。 これは、前に定義した因子の符号を交換することで実行できます。 次に、もう一度、新しくオフセットされたポリゴンの形状の外側にあるすべてのポイントを削除します。
7. 結論
この記事では、相似変換とオフセットを利用してポリゴンを膨張または収縮させる方法を学習しました。