Чтобы показать, что бесконечное число прямоугольников с общей диагональю существует в одной и той же плоскости:
У вас есть вершины 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 примере)
Редактировать:
Произвольно возможный вариант : пусть 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
System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath