Чтобы показать, что бесконечное количество прямоугольников с общей диагональю существует в одной плоскости:
У вас есть вершины 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