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

Ответы:

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
Хороший учебник по 3D Math: amazon.com/Primer-Graphics-Development-Wordware-Library/dp/… .
Рикки А.Х.
Я не читал этот, но мне сказали, что это тоже довольно хорошо 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
Mussi
источник