簡體   English   中英

如何計算沿插值路徑的均勻距離(Python2.7)?

[英]How to calculate even distance along an interpolated path (Python2.7)?

我有一個(長)列表的x,y元組,它們共同描述了一條路徑(即盡管非恆定速度,以恆定速率采樣的鼠標活動)。

我的目標是以恆定速率為該路徑制作動畫。 所以我有彎曲的段和直的段,並且任何兩點之間的delta-d不保證是相同的。

鑒於以下數據:

[(0,0), (0,2), (4,6).... ]其中列表的長度是〜1k-2k點,除了蠻力計數線段長度之外還有什么方法每個點,然后指定每個n長度的“框架”?

如果使用Numpy數組來表示數據,則可以向量化計算。 這就像你將獲得的那樣高效。

我敢肯定,有一種優雅的方式可以用熊貓做到這一點,但在此之前,如果你能忍受一些錯誤,這是一個簡單的想法。 你可以用幾種不同的方式做到這一點,但這里是它的要點:

將每個元組視為鏈表中的節點。 在每個點之間定義所需的長度D 當您在列表中移動時,如果下一個節點與當前節點不是距離D ,則相應地調整其x,y坐標(或根據需要插入/刪除節點),使其與當前節點之間的距離為D連接節點的線段。

就像我說的那樣,你將不得不忍受一些錯誤,因為你的原始點將被調整/刪除。 如果在此之前生成點以創建更多分辨率,則可以減少錯誤。

如果你使用的近似值表示例如tuple1和下一個元組之間的點之間的路徑,tuple2是一條直線,那么:

abs(complex(tuple2[0]-tuple1[0], tuple2[1]-tuple1[1]))

給出這兩個點之間的長度,其總和將是總長度。 除以總時間將得到以單位時間遍歷的長度。 所以仍然是蠻力,但也許是一種更有效的方法,特別是如果在列表理解中使用和sum函數一起使用。 作為標記。 注意,如果您可以提高采樣分辨率,則近似值會提高。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM