如何在Python中转换图形

2024-10-02 12:32:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在有两组不同的图。在

一个图形从(100100)到(174200)

另一张图是从(560544)到(649631)

使用距离公式,它们的距离大致相同,但坡度不同

对于从(560544)到(649631)的图,我有一些点在中间,这不是一条直线。在

我没有(100100)到(174200)之间的任何一个点。在

我想模仿(560544)到(649631)的路径,但我希望起点是(100100),终点是(174200)。在

这些是我在这两者之间的要点

http://i.imgur.com/ZlBbgEh.png

这是我现在用python编写的代码

with open(file[0], newline='') as f:
    reader = csv.reader(f)
    next(reader)
    for row in reader:
        print(int(row[0]) - 460, int(row[1]) - 444, duration=float(row[2]))

这将创建起点(100100),但不会更改终点。在

有什么办法吗?在


Tags: 路径comhttp图形距离直线reader公式
2条回答

Derek Halden代码的通用版本-适用于任何数据:

with open(file[0], newline='') as f:
    reader = csv.reader(f)
    next(reader)
    points = [ tuple(map(float, row)) for row in reader ]
old_start_x, old_start_y = points[0][0:2] # first point
old_end_x, old_end_y = points[-1][0:2]    # last point
new_start_x, new_start_y, new_end_x, new_end_y =  100, 100, 174, 200
for x, y, d in points:
    print( new_start_x + (x - old_start_x)*(new_end_x-new_start_x)/(old_end_x-old_start_x),
           new_start_y + (y - old_start_y)*(new_end_y-new_start_y)/(old_end_y-old_start_y),
           d)

我想,以下是你想要的:

with open(file[0], newline='') as f:
    reader = csv.reader(f)
    next(reader)
    for row in reader:
        print((int(row[0]) - 560)*(74/87) + 100, (int(row[1]) - 544)*(100/89) + 100, duration=float(row[2]))

基本上要符合问题的范围。 如果两个图中的所有点都从(0,0)开始,则需要将其缩放为74/87的倍数,以便从74的端点到达87的端点。 和100/89从89到100的终点。之后,你需要调高100,回到一切开始的地方。在

相关问题 更多 >

    热门问题