2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Площадь пересечения секторов круга
Сообщение24.07.2015, 20:12 


24/07/15
8
Граждане, помогите плз. с таким вопросом
Есть круг c центром $O$, на окружности которого отмечены точки $A$, $B$, $C$, $D$ и $R$
Радиусы к точкам $A$, $B$, $C$, $D$ образуют два сектора. Первый сектор $AOB$ ограничен радиусами $OA$ и $OB$, второй сектор $COD$ - радиусами $OC$ и $OD$. Нужно найти площадь наложения этих секторов друг на друга.

Известны углы радиусов $OA$, $OB$, $OC$, $OD$ относительно радиуса $OR$ - его принимаем за систему отсчета, $0^{\circ}$.
Секторы могут накладываться друг на друга, могут не накладываться. Точки $A$, $B$, $C$, $D$ могут быть расположены на окружности в любом порядке.

Если $\angle ROA <\angle ROB$ и $\angle ROC <\angle ROD$, то всё считается - берем $\max (\min (\angle ROB,\angle ROD) - \max (\angle ROA,\angle ROC),0)$ - дальше по формуле площади сектора.

Но вот что делать, если $\angle ROA = 300^{\circ}$, а $\angle ROB=60^{\circ}$? т.е. сектор повернут как бы "через $0^{\circ}$" (радиус $OR$ оказывается внутри одного или двух секторов)? По идее, надо как-то повернуть оба сектора на некоторый угол, чтобы возникла ситуация, когда они не проходят "через $0^{\circ}$". На какой именно угол нужно повернуть?

Вообще, насколько понимаю, возможны следующие разновидности наложений секторов:
  1. Если оба сектора не проходят через $0^{\circ}$, то это можно описать как
    1. сектора не накладываются друг на друга.
    2. сектора накладываются друг на друга одним участком (тогда считаем угол сектора наложения по формуле, приведенной выше).
  2. Если один или оба сектора проходят через $0^{\circ}$, то тут уже такие варианты:
    1. сектора не накладываются друг на друга.
    2. сектора накладываются друг на друга одним участком
    3. сектора накладываются двумя участками (например, $\angle ROA=90^{\circ}, \angle ROB = 15^{\circ}, \angle ROC=60^{\circ} и \angle ROD=30^{\circ}$)

В общем, голову поломал уже, плиз хелп.

 Профиль  
                  
 
 Posted automatically
Сообщение24.07.2015, 20:48 
Супермодератор
Аватара пользователя


20/11/12
5728
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
Причина переноса: формулы не оформлены $\TeX$ом

MaxZ
Наберите все формулы и термы $\TeX$ом.
Инструкции по оформлению формул здесь или здесь (или в этом видеоролике).
См. также тему Что такое карантин, и что нужно делать, чтобы там оказаться.
После исправлений сообщите в теме Сообщение в карантине исправлено, и тогда тема будет возвращена.

 Профиль  
                  
 
 Posted automatically
Сообщение26.07.2015, 13:16 


20/03/14
12041
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение26.07.2015, 13:45 


29/09/06
4552
Под сектором Вы понимаете штуку с раствором меньше $180^\circ$ (что вовсе не для всех обязательно, поэтому стоит оговорить).
Вам, возможно, помогут переопределения углов типа
если $\alpha - \beta < -180$, то $\alpha=\alpha+360$ либо $\beta=\beta-360$.
Например, так:
Код:
if (a - b < -180) {
    if (a <= 0) {a = a+360;} else {b=b-360;}
} else if  (a - b > +180) {
    if (a >= 0) {a = a-360;} else {b=b+360;}
}

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение26.07.2015, 14:19 
Заслуженный участник
Аватара пользователя


09/09/14
6328
Алексей К. в сообщении #1040625 писал(а):
Под сектором Вы понимаете штуку с раствором меньше $180^\circ$ (что вовсе не для всех обязательно, поэтому стоит оговорить).

Вряд ли -- в таком случае не получить два участка наложения.

С другой стороны, здесь тоже не понятно:
MaxZ в сообщении #1040235 писал(а):
сектора накладываются двумя участками (например, $\angle ROA=90^{\circ}, \angle ROB = 15^{\circ}, \angle ROC=60^{\circ} и \angle ROD=30^{\circ}$)

Если бы $A$ и $B$ поменять местами, тогда было бы два участка, а так весь первый сектор попал внутрь второго.

Какую помощь Вы ожидаете? Проверить, что у Вас все случаи разобраны? или ещё что-то?

MaxZ в сообщении #1040235 писал(а):
На какой именно угол нужно повернуть?

Зачем? Если варианты и так можно перебрать, то не нужно усложнять.

MaxZ в сообщении #1040235 писал(а):
В общем, голову поломал уже, плиз хелп.

Может, тупо и методично перебрать все варианты $>,\ <$ между точками? В полном переборе их будет 24 варианта. Как-то не очень весело. Зато надёжно :D А откуда пришла задача?

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение26.07.2015, 15:11 


29/09/06
4552
grizzly в сообщении #1040628 писал(а):
Вряд ли -- в таком случае не получить два участка наложения.
Видимо, до этого места не дочитал.

Но тогда надо определиться, какой из двух вариантов сектора ($AB$ --- 100 градусов или 260?) рассматривается.
Либо это известно заранее --- тогда в алгоритме надо этот факт зафиксировать. Например, этот случай
MaxZ в сообщении #1040235 писал(а):
Но вот что делать, если $\angle ROA = 300^{\circ}$, а $\angle ROB=60^{\circ}$?
описывать
или как $60\to 300\; (+240)$
или как $300\to 420\; (+120)$.

Либо это заранее не известно --- тогда не избежать перебора вариантов $AB\cap CD$, $AB\cap DC$, $BA\cap CD$, $BA\cap DC$.

В любом случае полезно обеспечить договорённости:
а) значения углов, например, неотрицательны: $\varphi_i\geqslant 0$ (или $\varphi_i>-180^\circ$ --- смотря по тому, как работает Ваша функция atan2(y,x)).
б) сектор заметается против часовой стрелки: значения углов поправляются так, что конечное значение всегда больше начального (+120, +240).

По-моему, это упростит анализ (на этот раз думать мешает обилие лисичек, поберёзовиков и помидоров).

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение26.07.2015, 19:39 


24/07/15
8
Спасибо за комментарии.
Сектор может быть развернут на любой угол менее 360, предположим, с шагом в 1.
Вот как я считаю:
  1. если $\angle ROA<\angle ROB$ и $\angle ROC<\angle ROD$, то угол сектора пересечения $\gamma = \max (\min (\angle ROB,\angle ROD)-\max (\angle ROA,\angle ROB),0)$.
  2. если $\angle ROA>\angle ROB$ и $\angle ROC<\angle ROD$, то угол сектора пересечения $\gamma = \max (\angle ROA-\angle ROD,0)+\max (\angle ROB-\angle ROC,0)$.
  3. если $\angle ROA<\angle ROB$ и $\angle ROC>\angle ROD$, то угол сектора пересечения $\gamma = \max (\angle ROD-\angle ROA,0)+\max (\angle ROC-\angle ROB,0)$ (здесь, по сравнению с предыдущим случаем, уменьшаемое и вычитаемое меняются местами).
  4. если $\angle ROA>\angle ROB$ и $\angle ROC>\angle ROD$ (оба сектора пересекают $0^\circ$), то.... вот тут и затык.
Алексей К. в сообщении #1040639 писал(а):
б) сектор заметается против часовой стрелки: значения углов поправляются так, что конечное значение всегда больше начального (+120, +240).
Вот в этом направлении никак не получается додумать до конца: какой из углов нужно взять как поправочный? Ведь оба сектора должны повернуться синхронно, чтобы конечное значение в обоих секторах было больше начального. Мне кажется, что именно здесь и лежит решение по упрощению алгоритма - условно, если мы повернем сектора на некий угол (скорее всего, это будет один из начальных углов?), то тогда надобность в проверке условий по п.2,3,4 отпадет, и мы будем решать только п.1

Вопрос именно в том, как упростить - как говорится, нутром чую, что можно не перебирать все эти варианты расположения точек. Но никак не могу нащупать, на какой угол, как его определить.

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение26.07.2015, 20:52 
Заслуженный участник
Аватара пользователя


09/09/14
6328
MaxZ
Вам действительно кажется, что Ваш подход проще?

Давайте, я ещё раз попробую поагитировать за перебор всех вариантов.
Нас интересует порядок расположения точек при движении по окружности против часовой. У нас окружность, следовательно нам инвариантно с какой буквы начинать. Начинать будем всегда с буквы $A$. Вот полный перебор вариантов:
$ABCD$ -- нет пересечений.
$ABDC$ -- пересечение равно $AB$.
$ACBD$ -- пересечение равно $CB$.
$ACDB$ -- пересечение равно $CD$.
$ADBC$ -- пересечение равно $AD$.
$ADCB$ -- пересечение равно $CB\cup AD$.

Кажется, всё.

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение27.07.2015, 09:02 


24/07/15
8
grizzly в сообщении #1040690 писал(а):
порядок расположения точек при движении по окружности против часовой.

Наверное, всё же по часовой?
Спасибо за наводку, подумаю в этом направлении.

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение27.07.2015, 09:17 
Заслуженный участник
Аватара пользователя


09/09/14
6328
MaxZ в сообщении #1040755 писал(а):
Наверное, всё же по часовой?

Вопрос договорённости, конечно, но всегда в таких случаях ездят против часовой. Вы же углы будете против часовой отмерять, как все нормальные люди?

Если бы Вы ответили на мой первый вопрос про "откуда задача", было бы проще. Ведь в зависимости от целей, разные подходы к решению могут быть в разной степени удобны. Если Вам для компьютерной программы, например (я это предположил), то перебор небольшого количества простых вариантов обычно предпочтительнее, чем поиск сложной общей формулы.

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение27.07.2015, 10:55 


24/07/15
8
grizzly в сообщении #1040759 писал(а):
Вы же углы будете против часовой отмерять, как все нормальные люди?

ммм... нет :) я воображаю круг, где $0^\circ$ - вверху, и отмеряю градусы по часовой.

grizzly в сообщении #1040759 писал(а):
"откуда задача", было бы проще

может быть.
Изначально задача пришла из задачи, требующей решения в Excel, по определению пересечения двух смен работы оборудования, когда смены указаны только часами, без указания дат. В Excel время суток указывается как доля от 1 (сутки принимаются за 1).
В процессе размышлений над этой задачей возник 24-часовой циферблат, который прекрасно преобразовался в круг с секторами. А что находить для сектора - площадь, длину дуги или центральный угол - не так важно, всё равно всё упирается в центральный угол, который может быть преобразован в долю от $360^\circ$, т.е. долю суток в исходной задаче.

Задача в Excel решается массой способов, в том числе кучей вложенных конструкций ЕСЛИ() и так далее. Однако в итоге формулы получаются очень громоздкие, и хотелось бы эту формулу оптимизировать. Плюс к этому, не давало покоя ощущение, что должно существовать более элегантное математическое или тригонометрическое решение, чем куча проверок входных параметров (или, хотя бы, сводящее проверки к минимуму).

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение27.07.2015, 11:34 
Заслуженный участник
Аватара пользователя


09/09/14
6328
MaxZ в сообщении #1040774 писал(а):
ммм... нет :) я воображаю круг, где $0^\circ$ - вверху, и отмеряю градусы по часовой.

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

Для экселя мой вариант тоже будет проще других, я думаю. Я исхожу из следующего: когда Вы решаете задачу для (условно) практических целей и есть шанс, что Ваше решение будут использовать другие люди (начальники смен для работы или преподаватели для оценки Ваших знаний, неважно), то решение, построенное на нескольких однотипных формулах с прозрачной логикой будет восприниматься намного проще, чем одна навороченная формула. И ошибку проще будет найти / исправить и шаблон для других целей потом использовать.

 Профиль  
                  
 
 Re: Площадь пересечения секторов круга
Сообщение27.07.2015, 11:53 


24/07/15
8
grizzly в сообщении #1040783 писал(а):
Нужно предупреждать, если Вы знаете, что Ваши обозначения противоречат общепринятым в математике.

Простите, не знал, что мои обозначения противоречат общепринятым, честно.
В любом случае спасибо за подсказки.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group