Моя проблема исходит из конкретного приложения: если вы хотите установить прямоугольное окно EFGH вместо существующего прямоугольного отверстия ABCD, и вы хотите прийти с самым большим возможное окно (вы хотите построить металлическую раму для существующего здания, где отверстие почти идеально, но не полностью ...)Простой алгоритм для поиска самого большого прямоугольника в четырехграннике
Я хочу реализовать это в python 2.7, но сначала мне нужен протокол, который охватывает все случаи - может быть, библиотека python, которую я не знаю (стройная?), может помочь в этом?
A________D
| a d |
| |
| |
| b c |
B________C
E_______H
| |
| |
| |
F_______G
Вы почти прямоугольной четырехугольник ABCD (отверстие)
Вы знаете все стороны AB, BC, CD, AD
и диагоналей AC, BD
, что благодаря теореме Аль Каши и некоторые тригонометрию вы также знаете все 4 угла a, b, c, d
Как вы вычисляете ширину и высоту самого большого прямоугольника EFGH (окно, которое вы хотите построить, которое будет прямоугольным), которое может вписываться в t он четырехугольник, если сторона FG
прямоугольника параллельная сторона BC
четырехугольника?
(BC
соответствует горизонтальной нижней части отверстия, на которой FG
- нижняя часть окна-стойки).
A__________D
|E________H|
|| ||
|| ||
|| ||
|| ||
BF________GC
Я не думал о чем-то простом, как поворот на 90 °! Однако можете ли вы переписать это, используя фактические имена моих баллов? Потому что я не уверен, что понимаю вашу идею (BC уже горизонтальна ...). Возможно, вы имели в виду AB или CD от "BC"? –