【Python】数行で書ける点列の積算距離計算【コードアーカイブス】

二次元座標系で表現された点列の積算距離を効率的に計算する方法を紹介します。

通常 積算距離の計算を行う場合は、for文やwhile文を使用して点列のセグメント間距離を計算した上で、その累積和を愚直に計算する必要がありますが、Pythonのnumpyパッケージを使用することで、積算距離計算は数行で記述することが可能です。

入出力


(入力)

input_points

※numpy.adarray型としていますが、通常のリスト型でも同様の結果が得られます。

(出力)

output_points

必要パッケージ


  • numpy

解法


以下①~②の手順で、積算間距離を計算する

  1. セグメント間距離を計算する
  2. 各要素までのセグメント間距離の累積和を計算する

コード


Point1: numpyパッケージのdiff関数のprependに配列の第一要素を指定することで、セグメント間距離を0オリジン(前方差分)とすることができる
Point2: numpyパッケージのcumsum関数を使用することで、上記②のセグメント間距離の累積和は一行で求めることができる
※セグメント間距離の解法・コードは下記のページで紹介しています。
関連記事

二次元座標系で表現された点列の各セグメント間の距離を効率的に計算する方法を紹介します。 通常 配列要素間の演算を行う場合は、for文やwhile文を使用して愚直に計算する必要がありますが、Pythonのnumpyパッケージを使用するこ[…]

eye_catch

特記事項


①入力点列が曲線の場合は、積算距離=曲線長は成立しません。

入力点列をアップサンプリングすることで、積算距離は曲線長に漸近します。

 

Pythonコードアーカイブス目次

 

広告