2013-04-02 3 views
-2

Dans la 2D. J'ai calculé la distance 7,071068 de coordonnées:Comment trouver le second point en ajoutant la distance au premier point?

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

Mais maintenant la question est que je veux trouver Deuxième point en ajoutant la distance en premier Point. Comment faire cela?

+3

Il existe un nombre infini de points qui sont 7,07 unités de (10,10). Vous ne pouvez pas en choisir un en fonction de la distance. – Kevin

+0

@Kevin, quelle autre base est requise? – Ganesh

+2

Connaissez-vous la direction? Si vous ne le faites pas, alors la solution est un cercle entier. Même si vous savez que la solution est entière, il y aura au moins 4 points qui correspondent. –

Répondre

2

Il ne suffit pas d'avoir la distance entre 2 points pour trouver un point donné à l'autre. Vous avez un cercle complet qui s'occupe de cette demande (distance).

Vous devez également l'angle entre les deux points (appelons-le phi)

Si nous appelons distance d, de trouver P2 de P1:

X2 = X1 + d * cos (phi)

Y2 = Y1 + d * sin (phi)

1

Fondamentalement, vous êtes à la recherche de solutions entières à:

dx * dx + dy * dy = 7,071068 * 7,071068

d2 = 7.071068 7.071068 * = 50

Les racines entières sont 7 et 1 (49 + 1 = 50).

La méthode la plus simple pour trouver les racines entières est la force brute. Notez que d2 doit être entier et que certaines valeurs de d2 ont plus d'une solution. d2 = 25 a les solutions (5 et 0) et (3 et 4). D'autres valeurs pour d2 n'ont pas de solutions entières, par ex. d2 = 3.

Certains pseudo-code pour le résolveur de force brute:

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 
    } 
} 
Questions connexes