Как найти координаты луча, который делит фигуру на равные по площади части? В three.js использую Shape. На его основе строю контур с использование кривых Безье.
Необходимо найти Y координату по которой делится фигура по этому контуру на равные по площади части.
Пока приходит на мысль только триангуляция фигуры, деление пополам и подсчет площади по каждую сторону, и так двигаться в направлении к части с большей площадью пока площадь обеих частей не будет одинакова с допустимой погрешностью

21 Авг 2019 в 06:06
203 +1
0
Ответы
1

Для нахождения координаты Y, которая разделит фигуру на равные по площади части, вам действительно придется использовать методы триангуляции и подсчета площадей. Опишу примерный алгоритм, который вы можете использовать в Three.js:

Создайте контур фигуры с использованием кривых Безье и представьте его в виде переменной shape.

Триангулируйте фигуру, используя алгоритм триангуляции, доступный в Three.js (например, TriangulateShape).

Начните деление фигуры пополам по оси Y, начав с пробной координаты Y1.

Посчитайте суммарную площадь треугольников, находящихся выше Y1 и ниже Y1.

Если площади равны с заданной погрешностью, то Y1 - искомая координата Y.

Если площади не равны, сдвигайте координату Y1 в сторону части с большей площади и пересчитывайте площади.

Повторяйте шаги 5-6 до тех пор, пока площади не станут равными.

Это довольно сложный и вычислительно затратный алгоритм, но он позволит вам найти нужную координату Y. Не забудьте учесть особенности кривых Безье при расчете площадей треугольников.

20 Апр 2024 в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир