This post is about weighted blended order-independent transparency (WBOIT) — the trick that was covered in JCGT in 2013.
Пользователь
WBOIT в OpenGL: прозрачность без сортировки
10 мин
4.7KРечь пойдёт о “Weighted blended order-independent transparency” (далее WBOIT) — приёме, описанном в JCGT в 2013 г. (ссылка).
+13
Флаги в аргументах функций
9 мин
29KПеревод
Вы когда-нибудь сталкивались с таким кодом?
Эта функция, судя по названию, что-то обрабатывает (process). Но что означают параметры? Какой параметр здесь true, а какой false? По вызывающему коду об этом нельзя судить.
Нам придется заглянуть в объявление функции, которое дает подсказку:
Очевидно, автор использует два параметра типа bool как флаги (toggles). Реализация функции может быть похожа на это:
Назначение флагов очевидно, поскольку каждый из них имеет осмысленное название. Проблема возникает в вызывающем коде.
process(true, false);
Эта функция, судя по названию, что-то обрабатывает (process). Но что означают параметры? Какой параметр здесь true, а какой false? По вызывающему коду об этом нельзя судить.
Нам придется заглянуть в объявление функции, которое дает подсказку:
void process(bool withValidation,
bool withNewEngine);
Очевидно, автор использует два параметра типа bool как флаги (toggles). Реализация функции может быть похожа на это:
void process(bool withValidation,
bool withNewEngine)
{
if (withValidation) // используется 1-й флаг
validate(); // % подтвердить
do_something_toggle_independent_1
if (withNewEngine) // используется 2-й флаг
do_something_new();
else
do_something_old();
do_something_toggle_independent_2();
}
Назначение флагов очевидно, поскольку каждый из них имеет осмысленное название. Проблема возникает в вызывающем коде.
+20
Сумма сумм арифметических прогрессий
8 мин
15KПускай у нас есть некий ряд ячеек, часть которых можно пометить как «занятые»:

Нам нужно узнать, сколько всего существует вариантов расположения занятых ячеек.

Нам нужно узнать, сколько всего существует вариантов расположения занятых ячеек.
К этой схеме сводится множество задач. Например, разбиение периода из N + 1 календарных дней на l + 1 следующих друг за другом меньших периодов. Допустим, мы хотим провести оптимизационный расчет методом «грубой силы», рассчитав целевую функцию для каждого возможного варианта разбиения периода, чтобы выбрать наилучший вариант. Чтобы заранее оценить время расчета, нужно определить количество вариантов. Это поможет принять решение, стоит ли вообще начинать расчет. Согласитесь — полезно будет заранее предупредить пользователя вашей программы, что с теми параметрами, которые он задал, расчет займет 10000 лет.
+18
Информация
- В рейтинге
- 6 135-й
- Зарегистрирован
- Активность