Линия и точка в пространстве.

Jafa

Участник
Сообщения
159
Реакции
3
Есть точки A,Б и В

Представим что от точки А к точке Б идет лучь! Нужно найти позицию (точку пространстве X) на луче которая ближе всего к точке В

Помогите кодом или идеей!
 

Вложения

  • Без названия.png
    Без названия.png
    971 байт · Просмотры: 54

White Wolf

🍉
Сообщения
2,382
Реакции
2,187
  • Команда форума
  • #2
По сути решение задачи сводится к построению перпендикуляра от точки В к прямой АБ.
 

inklesspen

Не пишу модули под LSD :с
Сообщения
1,775
Реакции
967
Все было бы просто, если б у прямой менялось лишь 1 из координат =\
 

[[[[KaZaK]]]]

Участник
Сообщения
107
Реакции
72
new Float: flVec[2][3]; //Это, к примеру, наш вектор АБ, ну flVec[0]
new Float: flPointer[3]; //Это наша точка В
NormalizeVector(flVec[0], flVec[1]); //Нормализуем вектор flVec[0]
new Float: flDot = GetVectorDotProduct(flVec[1], flPointer); //находим длину проекции вектора АВ на нормализованный вектор АБ
if (GetVectorLength(flVec[0]) < flDot < 0.0) {
//Опустить невозможно
}
else {
new Float:flNeedPointer[3]; //Это наша точка в пространстве X
for (new i; i < 3; ++i)
flNeedPointer = (flVec[1] * flDot); //Домножаем нормализованный вектор АБ на длину проекции.
flNeedPointer - это и есть наша точка X
}
 
  • Мне нравится
Реакции: Jafa
Сверху Снизу