Как мне найти точку на линии?


11

У меня есть две точки (А, В) и длину д. Как я могу найти точку C?

пример

Ответы:


26

Вычислить вектор Vиз Aв Bи нормализовать его.

V = (B - A) / |B - A|

Поскольку вектор нормализован, он будет иметь длину один и будет указывать направление Bотносительно A. Если вы затем масштабируете вектор, у dвас будет смещение от AдоC

V' = d * V

которую вы можете просто добавить Aк yield C:

C = V' + A

Кстати: кто-нибудь может порекомендовать мне книгу, где я могу узнать о таких вещах? :)
eempee 10.10.11


Я не читал этот, но мне сказали, что это тоже довольно хорошо amazon.com/Matmatics-Programming-Computer-Graphics-Second/dp/…
Рикки А.Х.

1
Смотрите этот вопрос: gamedev.stackexchange.com/questions/1210/...

Кстати, это последние два шага в алгоритмах пересечения лучей: вы выясните, как далеко вдоль луча находится точка пересечения, а затем вы получите координаты точки geomalgorithms.com/a05-_intersect-1.html#Plane-Intersections
jhocking

1

Если ваш d является отношением вместо длины, например, 0.5 помещает его на равное расстояние от A и B, вы можете сделать следующее и избежать нормализации:

C = A * (1 - ratio) + B * ratio
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.