在二维。我从坐标计算了距离 7.071068:
- (10, 10)
- (15, 15)
但现在的问题是我想通过在第一点添加距离来找到第二点。这该怎么做?
在二维。我从坐标计算了距离 7.071068:
但现在的问题是我想通过在第一点添加距离来找到第二点。这该怎么做?
在给定另一个点的情况下,仅拥有 2 个点之间的距离是不够的。你有一个完整的圈子来满足这个需求(距离)。
您还需要两点之间的角度(我们称之为 phi)
如果我们调用距离 d,从 P1 中找到 P2:
X2 = X1 + d*cos(phi)
Y2 = Y1 + d*sin(phi)
基本上,您正在寻找以下整数解决方案:
dx*dx + dy*dy = 7.071068*7.071068
d2 = 7.071068*7.071068 = 50
整数根是 7 和 1 (49 + 1 = 50)。
找到整数根的最简单方法是蛮力。请注意,d2 必须是整数,并且 d2 的某些值有多个解。d2=25 有解(5 和 0)和(3 和 4)。d2 的其他值没有整数解,例如 d2=3。
蛮力求解器的一些伪代码:
d2=50;
for (i=1; i*i < d2; i++) {
if (is_square(d2 - i*i)) {
// integer solution found, but there may be more than one solution, so keep checking
}
}