Найти предельную точку между 2 точками - PullRequest
4 голосов
/ 22 октября 2011
  • У меня есть координата точки A и другой точки (например, B, C или D).
  • У меня также есть расстояние между А и другой точкой.
  • Я знаю максимально допустимое расстояние между А и другой точкой (показано с помощью фиолетовой линии и воображаемого круга).
  • Вопрос: Как найти координаты красных точек (B1 или C1 или D1).
  • Пример: A = (- 1,1), E = (3, -8) , максимально допустимое расстояние = 4. Какая координата точки E1?

Вот изображение проблемы: problem

Примечание: Я нашел 2 других вопроса, которые очень похожи или одинаковы, но я не могу решить их с этими: Нахождение координат точки между двумя точками?

Как найти точку, расположенную между 2 точками, образующими сегмент, используя только частичную длину сегмента?

P.S. Это не домашнее задание. Мне нужно это из-за проблем программирования, но я забыл свои математики ...

1 Ответ

6 голосов
/ 22 октября 2011

Предполагая, что A - это вектор положения, B - это вектор положения, а maxLength - это максимальная длина, которую вы допускаете.

A и B равны Vector2 (как вы отметили этот вопрос ).

// Create a vector that describes going from A to B
var AtoB = (B - A);
// Make a vector going from A to B, but only one unit in length
var AtoBUnitLength = Vector2.Normalize(AtoB);
// Make a vector in the direction of B from A, of length maxLength
var AtoB1 = AtoBUnitLength * maxLength;
// B1 is the starting point (A) + the direction vector of the
// correct length we just created.
var B1 = A + AtoB1;

// One liner:
var B1 = A + Vector2.Normalize(B - A) * maxLength;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...