Я создал в PyGame трассировщик лучей на базе процессора, который использует тайл на поток для рендеринга каждого раздела экрана. В настоящее время я разделяю экран между строками по вертикали, это не дает мне наилучшего распределения: я хочу разделить потоки на равные прямоугольники, охватывающие как направления X, так и Y. Например: если мое разрешение x = 640, y = 320 и у меня 4 потока, мне нужен список из 4 полей, представляющих границы тайла в форме (x_min, y_min, x_max, y_max) , в данном случае результатом будет [(0, 0, 320, 160), (320, 0, 640, 160), (0, 160, 320, 320), (320, 160, 640, 320)].
Проблема в том, что я не понимаю, как автоматически разделить количество потоков на двумерную сетку: я хочу извлечь два ближайших целых числа, которые умножаются, чтобы соответствовать настройке потока. . Если это число нельзя разделить поровну, перейдите к ближайшему числу, которое может... например, никакие два целых числа не могут умножиться, чтобы получить 7, вместо этого используйте 6 или 8. Я попробовал math.sqrt, но он работает только для идеально делящихся чисел, например 16, даже при округлении он не дает точных результатов для таких значений, как 32. Какое самое простое решение?
Примеры: 4 = 2 * 2, 6 = 2 * 3, 8 = 2 * 4, 9 = 3 * 3, 16 = 4 * 4 , 24 = 4 * 6, 32 = 4 * 8, 64 = 8 * 8.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ven-number
Извлеките два ближайших числа, которые умножаются, чтобы получить заданное число. ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение