-3

在二维。我从坐标计算了距离 7.071068:

  1. (10, 10)
  2. (15, 15)

但现在的问题是我想通过在第一点添加距离来找到第二点。这该怎么做?

4

2 回答 2

4

在给定另一个点的情况下,仅拥有 2 个点之间的距离是不够的。你有一个完整的圈子来满足这个需求(距离)。

您还需要两点之间的角度(我们称之为 phi)

如果我们调用距离 d,从 P1 中找到 P2:

X2 = X1 + d*cos(phi)

Y2 = Y1 + d*sin(phi)

于 2013-04-02T12:06:02.210 回答
1

基本上,您正在寻找以下整数解决方案:

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
  }
}
于 2013-04-02T12:29:35.233 回答