Задать вопрос
Jeket
@Jeket

Как провести перпендикуляр к линии webgl (three.js)?

Изучаю мануал https://threejs.org/docs/#api/en/objects/Line
создаю line = new THREE.Line( geometry, material );

например с
geometry.vertices.push(
	new THREE.Vector3( 100, 200, 0 ),
	new THREE.Vector3( 300, 500, 0 ),
);


Необходимо провести перпендикуляр через середину линии. В мануалах ничего про это не нашел. Возможно есть готовое решение?

PS Можно вспомнить тригонометрию или черчение - построить дуги, поискать пересечения и т.п., но я сомневаюсь, что в webgl отсутствует готовый способ создания перпендикуляров.
  • Вопрос задан
  • 246 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
@choupa
Архитектор (обычный, который строит)
Существует бесконечно много перпендикуляров к отрезку и проходящих через его середину, и они образуют плоскость. Поэтому ваша постановка задачи некорректна.

Для нахождения перпендикуляра используйте свойства скалярного произведения векторов. Когда оно равно нулю, то векторы перпендикулярны.

В вашем примере направляющий вектор отрезка равен (200, 300, 0). Искомый перпендикулярный вектор пусть (a, b, c), тогда их скалярное произведение:
200a + 300b + 0с= 0

Как видите решение неоднозначно. Дополнительное условие — длина направляющего вектора. Его можно нормировать на 1. И тогда останется однопараметрическая неоднозначность, что и будет соответствовать плоскости.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы