Site3dMath3D Class
Класс математических методов в 3D пространстве
Item Index
Methods
- checkBoxesByPosList static
- checkBoxesByObject static
- checkBoxes static
- isPlanesIntersected static
- isPlanesIntersected static
- rd static
- distBetweenPoints static
- getNormalVector static
- getPlaneCoefs static
- segmentToVector static
- getProjectionOnVector static
- getProjectionOnSegment static
- getPointOnPlane static
- getIPointLines static
- getSegmentsIntersect static
- getCoordOnVector static
- areCollinearVectors static
- distBetweenCoords static
- getMidpoint static
- areEqualArrays static
- firstInSecondArr static
- isPointOnSegment static
- isPointOnPlane static
- isPointOnRect static
- isPointOnTriangle static
- areEqualPoints static
- removePointsCopies static
- getGeometricCenter static
- checkModelMatch
- sizeBox static
- getPosFromTarget static
- getDistanceToMesh static
- isMeshProjection static
- getDistanceInfoToModelBound static
- getDistanceToModelBound static
- checkIntersect
- checkIntersect
- checkModelMatch
- getNoIntersectShiftOnXZ
- isBoundLayOnModel
- checkBound static
- subtractModelBound
- subtractImportModelPart
Methods
checkBoxesByPosList
-
posList1
-
posList2
-
options
Метод возвращает информацию о взаимном расположении двух параллелепипедов, которые задаются в виде координат восьми вершин
Parameters:
-
posList1
Number[]Координаты вершин первого параллелепипеда
-
posList2
Number[]Координаты вершин второго параллелепипеда
-
options
ObjectДополнительные параметры
Returns:
Объект результата {minDistance, minPos1, minPos2}:
- minDistance - минимальное расстояние между гранями двух параллелепипедов (если пересекаются, то -1, если совпадают, то 0)
- minPos1 - позиция линии минимального расстояния на грани первого параллелепипеда
- minPos2 - позиция линии минимального расстояния на грани второго параллелепипеда
checkBoxesByObject
-
box1
-
box2
-
options
Метод возвращает информацию о взаимном расположении двух параллелепипедов (box = {pos: [x, y, z], rot: [x, y, z], size: [x, y, z]})
Parameters:
Returns:
Объект результата {minDistance, minPos1, minPos2}:
- minDistance - минимальное расстояние между гранями двух параллелепипедов (если пересекаются, то -1, если совпадают, то 0)
- minPos1 - позиция линии минимального расстояния на грани первого параллелепипеда
- minPos2 - позиция линии минимального расстояния на грани второго параллелепипеда
checkBoxes
-
boxes
-
options
Метод возвращает информацию о взаимном расположении двух параллелепипедов (boxes = {box1, box2})
Returns:
Объект результата {minDistance, minPos1, minPos2}:
- minDistance - минимальное расстояние между гранями двух параллелепипедов (если пересекаются, то -1, если совпадают, то 0)
- minPos1 - позиция линии минимального расстояния на грани первого параллелепипеда
- minPos2 - позиция линии минимального расстояния на грани второго параллелепипеда
isPlanesIntersected
-
points1
-
points2
Метод возвращает истину, если 2 плоскости пересекаются
Parameters:
-
points1
Number[]Координаты вершин первой плоскости
-
points2
Number[]Координаты вершин второй плоскости
Returns:
Результат пересечения
isPlanesIntersected
-
points1
-
points2
Метод возвращает истину, если 2 плоскости лежат в одной плоскости
Parameters:
-
points1
Number[]Координаты вершин первой плоскости
-
points2
Number[]Координаты вершин второй плоскости
Returns:
Результат пересечения
rd
-
num
Метод округляет число до указанного числа знаков после запятой
Parameters:
-
num
NumberОкругляемое число
Returns:
Округленное число
distBetweenPoints
-
p1
-
p2
Метод возвращает расстояние между двумя точками
Parameters:
Returns:
Расстояние между двумя точками
getNormalVector
-
segment1
-
segment2
Метод возвращает радиус-вектор, перпендикулярный двум отрезкам (векторное произведение векторов, полученных из этих отрезков)
Parameters:
-
segment1
Number[]Первый отрезок ([[x, y, z], [x, y, z]])
-
segment2
Number[]Второй отрезок ([[x, y, z], [x, y, z]])
Returns:
Радиус-вектор (точка конца вектора, идущего из начала координат) ([x, y, z])
getPlaneCoefs
-
p1
-
p2
-
p3
Метод возвращает коэффициенты плоскости, заданной по трем точкам
Parameters:
Returns:
Массив коэффициентов плоскости ([A, B, C, D])
segmentToVector
-
segment
Метод возвращает радиус-вектор, полученный из отрезка
Parameters:
-
segment
Number[]Отрезок ([[x, y, z], [x, y, z]])
Returns:
Радиус-вектор (точка конца вектора, идущего из начала координат) ([x, y, z])
getProjectionOnVector
-
p
-
vec
Метод возвращает проекцию точки на прямую, образованную радиус-вектором
Parameters:
Returns:
Спроецированная точка ([x, y, z])
getProjectionOnSegment
-
p
-
segment
Метод возвращает проекцию точки на прямую, образованную отрезком
Parameters:
-
p
Number[]Проецируемая точка ([x, y, z])
-
segment
Number[]Отрезок ([[x, y, z], [x, y, z]])
Returns:
Спроецированная точка ([x, y, z])
getPointOnPlane
-
p
-
planeCoefs
Метод возвращает проекцию точки на плоскость
Parameters:
Returns:
Спроецированная точка ([x, y, z])
getIPointLines
-
segment1
-
segment2
Метод возвращает точку пересечения двух непараллельных прямых, образованных отрезками
Parameters:
-
segment1
Number[]Первый отрезок ([[x, y, z], [x, y, z]])
-
segment2
Number[]Второй отрезок ([[x, y, z], [x, y, z]])
Returns:
Точка пересечения ([x, y, z])
getSegmentsIntersect
-
segment1
-
segment2
Метод возвращает точки пересечения отрезков
Parameters:
-
segment1
Number[]Первый отрезок ([[x, y, z], [x, y, z]])
-
segment2
Number[]Второй отрезок ([[x, y, z], [x, y, z]])
Returns:
Массив точек пересечения ([], [[x, y, z]] или [[x, y, z], [x, y, z]])
getCoordOnVector
-
p
-
vec
Метод возвращает координату проекции точки на ось, образованную радиус-вектором, по этой оси
Parameters:
Returns:
Координата спроецированной точки
areCollinearVectors
-
vec1
-
vec2
Метод проверяет коллинеарность радиус-векторов
Parameters:
Returns:
Коллинеарность радиус-векторов (true или false)
distBetweenCoords
-
x1
-
x2
Метод возвращает расстояние между двумя координатами
Returns:
Расстояние между координатами
getMidpoint
-
p1
-
p2
Метод возвращает среднюю точку между двумя другими
Returns:
Средняя точка ([x, y, z])
areEqualArrays
-
arr1
-
arr2
Метод проверяет, равны ли одномерные массивы (без учета порядка элементов)
Parameters:
-
arr1
AnyПервый одномерный массив
-
arr2
AnyВторой одномерный массив
Returns:
Равенство одномерных массивов (true или false)
firstInSecondArr
-
arr1
-
arr2
Метод проверяет, входит ли первый одномерный массив во второй (без учета порядка элементов)
Parameters:
-
arr1
AnyПервый одномерный массив
-
arr2
AnyВторой одномерный массив
Returns:
Вхождение первого одномерного массива во второй (true или false)
isPointOnSegment
-
p
-
segment
-
includeEndpoints
Метод проверяет, лежит ли точка на отрезке
Parameters:
Returns:
Нахождение точки на отрезке (true или false)
isPointOnPlane
-
point
-
planeCoefs
Метод проверяет, лежит ли точка на плоскости
Parameters:
Returns:
Нахождение точки на плоскости (true или false)
isPointOnRect
-
p
-
rectPoints
Метод проверяет, лежит ли точка на прямоугольнике
Parameters:
-
p
Number[]Точка ([x, y, z])
-
rectPoints
Number[]Массив точек прямоугольника ([[x, y, z], [x, y, z], [x, y, z], [x, y, z]])
Returns:
Нахождение точки на прямоугольнике (true или false)
isPointOnTriangle
-
point
-
triangle
Метод проверяет, лежит ли точка на треугольнике
Parameters:
-
point
Number[]Точка ([x, y, z])
-
triangle
Number[]Треугольник ([[x, y, z], [x, y, z], [x, y, z]])
Returns:
Нахождение точки на треугольнике (true или false)
areEqualPoints
-
p1
-
p2
-
error
Метод проверяет равенство двух точек
Parameters:
Returns:
Равенство двух точек (true или false)
removePointsCopies
-
pointsArr
Метод удаляет копии точек из массива
Parameters:
-
pointsArr
Number[]Массив точек ([[x, y, z], ...])
Returns:
Массив уникальных точек ([[x, y, z], ...])
getGeometricCenter
-
points
Метод возвращает геометрический центр многоугольника
Parameters:
-
points
Number[]Массив точек многоугольника ([[x, y, z], ...])
Returns:
Геометрический центр многоугольника ([x, y, z])
checkModelMatch
-
posList1
-
posList2
Метод возвращает информацию о том, есть ли совпадающие стороны у двух параллелепипедов
Parameters:
-
posList1
Number[]Координаты вершин первого параллелепипеда
-
posList2
Number[]Координаты вершин второго параллелепипеда
Returns:
Объект результата {sideIndexes} или false:
- sideIndexes - Индексы сторон параллелепипедов (первый элемент массива - индексы первого параллелепипеда, а второй - второго)
sizeBox
-
box
-
size
-
boxes
Метод возвращает информацию о параллелепипеде после возможного изменения его размеров (параллелепипед находится среди других параллелепипедов)
Parameters:
-
box
Number[]Координаты вершин параллелепипеда (координата представлена массивом из трех значений x, y, z)
-
size
Number[]Желаемые размеры параллелепипеда (вдоль локальных осей x, y и z, если одно из значений 0, то данный размер остается не изменным)
-
boxes
Number[][]Координаты вершин других параллелепипедов
Returns:
Результат проверки в виде объекта:
- canFullSize - Истина, если можно применить желаемый размер
- size - Возможный размер параллелепипеда (может быть меньше желаемого в силу расположения вблизи других параллелепипедов)
- center - Координаты центра параллелепипеда (может отличаться от центра до применения нового размера в силу необходимости разместиться между других параллелепипедов вдоль осей изменения размеров)
getPosFromTarget
-
pos
-
center
Метод возвращает положение камеры относительно центра в виде массива из трех значений: [дистанция по оси Z, угол поворота вокруг оси Y, угол поворота вокруг оси X] Последовательность поворотов: сначала вокруг Y, затем вокруг X (при этом камера смотрит на центр и вращается вокруг центра)
Returns:
Положение камеры в виде ([distance, angleY, angleX])
getDistanceToMesh
-
point
-
mesh
Метод возвращает расстояние от точки до меша
Parameters:
-
point
Number[]Координаты точки
-
mesh
MeshМеш
Returns:
} Расстояние от точки до меша (-1, если точка находится внутри меша) и точка меша
isMeshProjection
-
mesh1
-
mesh2
Метод возвращает истину, если существует полная проекция первого меша на второй меш
Parameters:
-
mesh1
Object3DПервый меш
-
mesh2
Object3DВторой меш
Returns:
Результат
getDistanceInfoToModelBound
-
pos
-
model
Метод возвращает информацию о расстоянии от позиции до границ модели
Parameters:
-
pos
Number[]Позиция
-
model
Site3dModelМодель
Returns:
} Расстояние от точки до меша (-1, если точка находится внутри меша) и позиция модели
getDistanceToModelBound
-
pos
-
model
Метод возвращает расстояние от позиции до границ модели
Parameters:
-
pos
Number[]Позиция
-
model
Site3dModelМодель
Returns:
Расстояние от точки до модели (-1, если точка находится внутри модели)
checkIntersect
-
model
Метод возвращает информацию о взаимном расположении модели с другой моделью
Parameters:
-
model
Site3dModelМодель
Returns:
Объект результата {minDistance, minPos1, minPos2}:
- minDistance - минимальное расстояние между гранями двух параллелепипедов (если пересекаются, то -1, если совпадают, то 0)
- minPos1 - позиция линии минимального расстояния на грани первого параллелепипеда
- minPos2 - позиция линии минимального расстояния на грани второго параллелепипеда
checkIntersect
-
model
-
options
Метод возвращает информацию о взаимном расположении модели с другой моделью
Parameters:
-
model
Site3dModelДругая модель
-
options
ObjectДополнительные параметры
Returns:
Объект результата {minDistance, minPos1, minPos2} или false:
- minDistance - минимальное расстояние между гранями границ двух моделей (если пересекаются, то -1, если совпадают, то 0)
- minPos1 - позиция линии минимального расстояния на грани первой границы
- minPos2 - позиция линии минимального расстояния на грани второй границы
checkModelMatch
-
model
Метод возвращает информацию о том, есть ли совпадающие стороны у границ с другой моделью
Parameters:
-
model
Site3dModelДругая модель
Returns:
Объект результата {sideIndexes} или false:
- sideIndexes - Индексы сторон моделей (первый элемент массива - индексы самой модели, а второй - другой модели)
getNoIntersectShiftOnXZ
-
models
Метод возвращает минимальное смещение модели вдоль плоскости XZ, при котором она не пересекается с другими моделями
Parameters:
-
models
Site3dModel[]Массив других моделей
Returns:
Координаты смещения
isBoundLayOnModel
-
model
Метод возвращает истину, если существует полная проекция границ модели на границу другой модели или на саму модель, если отсутствует граница
Parameters:
-
model
Site3dModelМодель
Returns:
Результат
checkBound
-
bound
Метод возвращает информацию о взаимном расположении границы с другой границей
Parameters:
-
bound
Site3dModelBoundДругая границы
Returns:
Объект результата {minDistance, minPos1, minPos2}:
- minDistance - минимальное расстояние между гранями двух границ (если пересекаются, то -1, если совпадают, то 0)
- minPos1 - позиция линии минимального расстояния на грани первой границы
- minPos2 - позиция линии минимального расстояния на грани второй границы
subtractModelBound
-
model
Метод вычитает из модели геометрию границы другой модели
Parameters:
-
model
Site3dModelВычитаемая модель
subtractImportModelPart
-
model
-
partName
Метод вычитает из плоскости геометрию части импортируемой модели
Parameters:
-
model
Site3dImportModelВычитаемая модель
-
partName
StringИмя части модели (по умолчанию bound)