Войти
ПрограммированиеФорумОбщее

Задачка в 3D

#0
12:26, 1 авг. 2020

Всем привет!

Такая вот задачка:

prj task | Задачка в 3D

Известен вектор направления d, точка p1 и точка p2.
Нужно найти расстояние от точки p1 до точки p3. Собственно,
само расстояние найти не сложно, если найти координаты точки p3.

Собственно вопрос - как найти позицию точку p3? по идее, это
проекция точки p2 на вектор d.

Пробовал по такой формуле из одной статьи:

vec3 projectVector(vec3 v1, vec3 v2)
{
  return v1 * (dot(v1, v2) / length(v1));
}

Но что-то результат выходит некорректный..

Подскажите пожалуйста, как правильно решить задачу.


#1
12:54, 1 авг. 2020

DEN 3D

d.norm();
auto result = dot(d, p1) - dot(d, p2); // взять модуль если тебе не нужен знак
#2
15:50, 1 авг. 2020

Aroch

Спасибо, работает! Интересно, а как эту формулу можно объяснить с точки зрения математики?
Результаты скалярных произведений здесь что-то вроде скалярной величины проекции точки на вектор направления?

#3
16:03, 1 авг. 2020

DEN 3D
> Спасибо, работает! Интересно, а как эту формулу можно объяснить с точки зрения
> математики?
dot(normal, point) это расстояние от центра координат по направлению нормали до координаты. Или посмотри на уравнение плоскости, тоже самое.

#4
16:24, 1 авг. 2020

Aroch
Понял, спасибо..

#5
23:40, 8 авг. 2020

треугольник
R^2 = sqrt(a^2 + b^2)

усложнённая формула через синусы-косинусы просчитывается.

#6
23:58, 8 авг. 2020

Aroch
Можно былобы обойтись 1 дотом.

ПрограммированиеФорумОбщее