(track, accuracy=0.002)
| 6 | |
| 7 | |
| 8 | def track_sampling(track, accuracy=0.002): |
| 9 | # accuracy: 采样精度,都是归一化坐标系 |
| 10 | if len(track) <= 1: |
| 11 | return track |
| 12 | |
| 13 | total_distance = 0.0 |
| 14 | for i in range(len(track) - 1): |
| 15 | p0 = Vec2(track[i]) |
| 16 | p1 = Vec2(track[i + 1]) |
| 17 | total_distance += (p1 - p0).length |
| 18 | |
| 19 | sample_points = [] |
| 20 | for i in range(len(track) - 1): |
| 21 | p0 = Vec2(track[i]) |
| 22 | p1 = Vec2(track[i + 1]) |
| 23 | d = p1 - p0 |
| 24 | seg_length = d.length |
| 25 | d = (p1 - p0).unit() * accuracy |
| 26 | sp = p0 |
| 27 | while (sp - p0).length < seg_length: |
| 28 | sample_points.append(sp.to_list()) |
| 29 | sp = sp + d |
| 30 | |
| 31 | sample_points.append(track[-1]) |
| 32 | return sample_points |
| 33 | |
| 34 | |
| 35 | class MotionTrackHold(object): |
no test coverage detected