Поиск идеальных соотношений сторон монитора.
Задача: найти такие конфигурации мониторов, для которых существуют разрешения, при которых ширина вертикальной и горизонтальной чёрной рамки одинакова.
Очевидно, что для квадратных мониторов существует множество разрешений, удовлетворяющих заданному условию. Достаточно, чтобы разрешение по горизонтали было вдвое больше разрешения по вертикали. Но количество возможных решений для мониторов с конфигурациями, отличающимися от квадрата, сильно ограничено. Более того, идеальное разрешение существует не для всех конфигураций мониторов.
Для поиска решений я буду использовать перебор всевозможных разрешений, благо, их не так много.
-- Вычисление идеальных разрешений для мониторов разных размеров
-- Не проверяются квадратные мониторы с размерами 1x1, 2x2, 3x3 и т.д.
-- максимальный размер монитора
local msw,msh = 8,6
-- максимальное разрешение GPU
local max_gpu_res, max_gpu_area = 160, 160*50
-- максимальная ошибка, допустимая при округлении разрешения по вертикали
local max_error = 1e-3
-- перебор всех допустимых размеров мониторов кроме квадратных
for sw = 1, msw do
for sh = 1, msh do
if sw~=sh then
local ratio_wh = 2*(16*sw-4.5)/(16*sh-4.5)
-- перебор всех разрешений монитора
for gw = 1, max_gpu_res do
local gh_float = gw / ratio_wh
local gh = (gh_float+0.5)//1
-- печать допустимых разрешений с ошибкой в пределах погрешности
if math.abs(gh_float-gh) <= max_error
and gh <= max_gpu_res
and gh*gw <= max_gpu_area then
print( ("%dx%d: %dx%d=%d (%2.0f%%)\terror=%.0e"):format(
sw,sh, gw,gh,gw*gh,gw*gh/max_gpu_area*100, gh_float-gh ))
end
end
end
end
end
Найденные решения:
1x2: 46x55=2530 (32%) error=7e-15
1x3: 46x87=4002 (50%) error=0e+00
1x4: 46x119=5474 (68%) error=0e+00
1x5: 46x151=6946 (87%) error=0e+00
2x1: 110x23=2530 (32%) error=0e+00
3x6: 58x61=3538 (44%) error=0e+00
6x3: 122x29=3538 (44%) error=0e+00
7x2: 86x11=946 (12%) error=0e+00
Как видно, выбор среди идеальных конфигураций невелик. Найдено 5 вертикальных конфигураций и 3 горизонтальные.
При этом наиболее полное использование возможностей монитора (87% от максимального разрешения) имеет вертикальный монитор размером 1x5. А остальные и того меньше. Стоит ли жертвовать площадью экрана ради максимального уменьшения ширины рамки?
Скорее всего, большинство пользователей не захочет микрометром выверять толщину рамки и воспользуется кодом от @ECS, максимизируя разрешение.
Все остальные варианты будут разной степени компромиссом между максимальным разрешением и минимальными рамками. Например, @Fingercomp минимизировал ширину полос для монитора 8x3, и получил разрешение, близкое к максимально возможному для выбранной конфигурации. Для других конфигураций выбор может оказаться более сложным, что легко увидеть на примере монитора 1x2:
1x2: 46x55=2530 (32%) error=7e-15
1x2: 51x61=3111 (39%) error=-2e-02
1x2: 56x67=3752 (47%) error=-4e-02
1x2: 77x92=7084 (89%) error=7e-02
Итог: Существуют идеальные соотношения сторон монитора, обеспечивающие равную ширину вертикальных и горизонтальных чёрных полос по краям изображения. Но таких вариантов очень мало, а их практическая применимость маловероятна.