LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

Что же, да тут прямо таки напрашивается дискретизация (путём обработки воксельных (только 2Д) квадродеревьев).

Проще говоря:

1. Вмещаем круг в квадрат
2. Разбиваем каждый квадрат на 4 части
3. Помечаем квадраты, которые своей площадью захватывают круг (или можно использовать критерий % вхождения для отбора)
4. Суммируем площади помеченных квадратов -> [результат текущей итерации]
5. Если точность недостаточная переходим к п. 2

Или вариант посложнее:

1. Находим функцию (функциональный анализ) графиком которой является полукруг с нужным нам радиусом
1a. Допустим ax^2 + bx + c
2. Вычисляем интеграл от -R до +R S(ax^2 + bx + c)dx
3. Умножаем на 2
4. PROFIT

Исходная версия KennyMinigun, :

Что же, да тут прямо таки напрашивается дискретизация (путём обработки воксельных (только 2Д) квадродеревьев).

Проще говоря:

1. Вмещаем круг в квадрат
2. Разбиваем каждый квадрат на 4 части
3. Помечаем квадраты, которые своей площадью захватывают круг (или можно использовать критерий % вхождения для отбора)
4. Суммируем площади помеченных квадратов -> [результат текущей итерации]
5. Если точность недостаточная переходим к п. 2

Или вариант посложнее:

1. Находим функцию (функциональный анализ) графиком которой является полукруг с нужным нам радиусом
1a. Допустим ax^2 + bx + c
2. Вычисляем интеграл от 0 до 2R S(ax^2 + bx + c)dx
3. Умножаем на 2
4. PROFIT