首页 > 解决方案 > 有没有办法得到一个点的坐标?

问题描述

这是一道算法题。假设我们知道 x1y1 和 x2y2 的坐标,有没有办法让 x3y3(左)和 x4y4(右)的坐标正好 90 度 - 距离 x1y1 1 米?

在此处输入图像描述

标签: algorithm

解决方案


获取 P1 和 P2 之间的差,交换 x/y 分量,将它们除以差的绝对值,然后分别从 P1 中加/减。Python 中的示例:

>>> P = namedtuple("P", "x y")
>>> p1 = P(3, 4)
>>> p2 = P(5, 3)
>>> dx = p2.x - p1.x
>>> dy = p2.y - p1.y
>>> a = (dx**2 + dy**2)**.5
>>> P(p1.x + dy/a, p1.y - dx/a)
P(x=2.552786404500042, y=3.1055728090000843)
>>> P(p1.x - dy/a, p1.y + dx/a)
P(x=3.447213595499958, y=4.894427190999916)

推荐阅读