Если у нас есть блок, не выровненный по осям, как нам лучше всего проверить, находится ли точка внутри него? (Я использую three.js, поэтому любая утилита оттуда может помочь. Three.js содержит концепцию ограничивающей рамки, но это ограничивающая рамка, выровненная по оси)
Как определить, находится ли точка внутри коробки (three.js)?
20.09.2017
- Как ваш ящик, не выровненный по оси, помещается в невыровненный? Вы используете преобразование или это геометрия, которая явно позиционируется в такой ориентации? 20.09.2017
- Подходов много. Что лучше - зависит от того, как определяется этот ящик. 20.09.2017
- @ TheJim01 Я создаю коробку, перевожу ее и поворачиваю. 20.09.2017
Ответы:
1
Если ваш блок представляет собой THREE.BoxGeometry, который вращается, перемещается и масштабируется, вы можете использовать его матрицу преобразования m
, чтобы определить, пересекает ли он вашу точку v
:
- преобразовать
v
и коробку обратнымm
- проверьте, находится ли преобразованный
v
внутри преобразованного блока (который теперь выровнен по оси)
Вот код:
var box = <Your non-aligned box>
var point = <Your point>
box.geometry.computeBoundingBox(); // This is only necessary if not allready computed
box.updateMatrixWorld(true); // This might be necessary if box is moved
var boxMatrixInverse = new THREE.Matrix4().getInverse(box.matrixWorld);
var inverseBox = box.clone();
var inversePoint = point.clone();
inverseBox.applyMatrix(boxMatrixInverse);
inversePoint.applyMatrix4(boxMatrixInverse);
var bb = new THREE.Box3().setFromObject(inverseBox);
var isInside = bb.containsPoint(inversePoint);
А вот и работающая демонстрация: https://jsfiddle.net/holgerl/q0z979uy/
20.09.2017
Новые материалы
Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..
Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом
Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..
Советы по коду Laravel #2
1-) Найти
// You can specify the columns you need
// in when you use the find method on a model
User::find(‘id’, [‘email’,’name’]);
// You can increment or decrement
// a field in..
Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv)
Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..
3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации —
2. Используя квадратичную формулу —
3. Заполнив квадрат —
Давайте поймем это, решив это простое уравнение:
Мы пытаемся сделать LHS,..
Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..
Демистификация рекурсии
КОДЕКС
Демистификация рекурсии
Упрощенная концепция ошеломляющей
О чем весь этот шум?
Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..