плоскость, заданная с линией на нем -> построить прямоугольник в плоскости с линией в качестве диагонали прямоугольника (в 3D) - PullRequest
0 голосов
/ 16 января 2019

(все в 3D) Сначала дается самолет. На этой плоскости я рисую линию. Начальная и конечная точка линии дана поэтому. Что мне нужно сделать, это использовать линию в качестве диагонали прямоугольника, чтобы создать прямоугольник. Для этого мне просто нужны две другие недостающие точки, которые также находятся в той же плоскости, что и я.

Как я могу определить недостающие две точки?

Например, в 2D, если у вас есть точки B (6 | 4) и C (1 | 2), вы можете заключить, что A включен (1 | 4) и D включен (6 | 2).

Но я изо всех сил пытаюсь найти метод / алгоритм для этого в трехмерном мире.

PS: Если я использовал неправильный тег, пожалуйста, скажите мне другое предложение, спасибо!

1 Ответ

0 голосов
/ 16 января 2019

Чтобы показать, что бесконечное количество прямоугольников с общей диагональю существует в одной плоскости:

У вас есть вершины A и C и плоский нормальный вектор n, и вы хотите определить вершины B и D.
Пусть B = (bx, by, bz) (неизвестно)

Условие перпендикулярности ребер AB и BC: скалярное произведение векторов равно нулю.

 (bx-ax) * (bx-сx) + (by-ay) * (by-сy) + (bz-az) * (bz-сz) = 0

Условие "B лежит в плоскости": скалярное произведение AB и нормаль равно нулю

 (bx-ax) * nx + (by-ay) * ny + (bz-az) * nz = 0

Итак, у вас есть два линейных уравнения для трех неизвестных bx, by, bz - бесконечное число решений.

Возможно, у вас могут быть какие-то дополнительные условия / ограничения для уникального определения решения (как выровненный по оси прямоугольник в вашем 2d примере)

Edit:
Произвольный возможный вариант: пусть AB ребро параллельно плоскости OXY, поэтому оно перпендикулярно оси OZ, а третье уравнение равно

 (bx-ax) * 0 + (by-ay) * 0 + (bz-az) * 1 = 0, so
 (bz - az) = 0

и вы можете подставить это выражение и решить систему для двух неизвестных bx и by

 (bx-ax) * (bx-сx) + (by-ay) * (by-сy) = 0
 (bx-ax) * nx + (by-ay) * ny = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...