Дано четырёхугольник ABCD, в котором суммы противоположных углов равны 180°; исследуйте критерии и методы отличия выпуклого вписанного четырёхугольника от самопересекающегося и приведите примеры
Ключевая замечание: условие «суммы противоположных углов равны 180∘180^\circ180∘» эквивалентно тому, что все четыре вершины лежат на одной окружности (чётко для простого и для пересекающегося четырёхугольника — рассматриваем вершины на окружности). Различие между выпуклым вписанным и самопересекающимся сводится к порядку вершин на окружности и к проверке пересечений сторон. Критерии и методы отличия 1) Порядок точек на окружности. - Если при обходе окружности вершины встречаются в том же порядке, в котором соединяются отрезками A→B→C→D→AA\to B\to C\to D\to AA→B→C→D→A, то четырёхугольник простой и выпуклый. - Если порядок на окружности отличается (например, при обходе окружности встречается A,C,B,DA,C,B,DA,C,B,D или другое «перемешивание»), то при соединении в данном порядке получится самопересекающийся (перекрёстный) четырёхугольник. Практически: найдите центр окружности OOO и полярные углы точек относительно OOO. Если углы возрастают (или убывают) последовательно как A,B,C,DA,B,C,DA,B,C,D — выпуклый; иначе — пересекающийся. 2) Проверка пересечения противоположных сторон (алгоритмически самый простой тест). - В выпуклом простом четырёхугольнике противоположные стороны не пересекаются. - В самопересекающемся ровно одна пара противоположных сторон пересекается (например, отрезки ABABAB и CDCDCD пересекаются или BCBCBC и DADADA пересекаются). Тест пересечения отрезков P1P2P_1P_2P1P2 и P3P4P_3P_4P3P4 (ориентации): вычислите ориентации orient(P1,P2,P3)\operatorname{orient}(P_1,P_2,P_3)orient(P1,P2,P3), orient(P1,P2,P4)\operatorname{orient}(P_1,P_2,P_4)orient(P1,P2,P4), orient(P3,P4,P1)\operatorname{orient}(P_3,P_4,P_1)orient(P3,P4,P1), orient(P3,P4,P2)\operatorname{orient}(P_3,P_4,P_2)orient(P3,P4,P2), где для точек (xi,yi)(x_i,y_i)(xi,yi)orient(P,Q,R)=(xQ−xP)(yR−yQ)−(yQ−yP)(xR−xQ).\displaystyle \operatorname{orient}(P,Q,R)= (x_Q-x_P)(y_R-y_Q)-(y_Q-y_P)(x_R-x_Q).orient(P,Q,R)=(xQ−xP)(yR−yQ)−(yQ−yP)(xR−xQ).
Отрезки пересекаются в общем положении тогда и только тогда, когда первые две ориентации имеют разные знаки, и вторые две — разные знаки. 3) Ориентации углов (векторный признак выпуклости). - Четырёхугольник выпуклый тогда и только тогда, когда ориентации всех четырёх тройок смежных вершин (A,B,C),(B,C,D),(C,D,A),(D,A,B)(A,B,C),(B,C,D),(C,D,A),(D,A,B)(A,B,C),(B,C,D),(C,D,A),(D,A,B) имеют один и тот же знак (все положительные — круговой обход против часовой, или все отрицательные — по часовой). - Если знаки не одинаковы (например, меняются), то фигура самопересекающаяся. 4) Поведение диагоналей. - В выпуклом четырёхугольнике диагонали ACACAC и BDBDBD пересекаются и точка пересечения лежит внутри фигуры. - В самопересекающем диагонали могут пересекаться, но пересечение не является «внутри» в смысле простой области; проще опираться на тест пересечения сторон (п.2). Примеры (координаты на единичной окружности) 1) Выпуклый вписанный: - Возьмём вершины под углами 0∘,60∘,180∘,240∘0^\circ,60^\circ,180^\circ,240^\circ0∘,60∘,180∘,240∘: A=(cos0∘,sin0∘)=(1,0),A=(\cos 0^\circ,\sin 0^\circ)=(1,0),A=(cos0∘,sin0∘)=(1,0),B=(cos60∘,sin60∘)=(12,32),B=(\cos 60^\circ,\sin 60^\circ)=(\tfrac12,\tfrac{\sqrt3}{2}),B=(cos60∘,sin60∘)=(21,23),C=(cos180∘,sin180∘)=(−1,0),C=(\cos 180^\circ,\sin 180^\circ)=(-1,0),C=(cos180∘,sin180∘)=(−1,0),D=(cos240∘,sin240∘)=(−12,−32).D=(\cos 240^\circ,\sin 240^\circ)=(-\tfrac12,-\tfrac{\sqrt3}{2}).D=(cos240∘,sin240∘)=(−21,−23).
Порядок по окружности A→B→C→DA\to B\to C\to DA→B→C→D совпадает с перечислением — выпуклый. 2) Самопересекающийся (вписанный, но перекрёстный): - Те же четыре точки, но другой порядок: A=(1,0), B=(−1,0), C=(12,32), D=(−12,−32).A=(1,0),\; B=(-1,0),\; C=(\tfrac12,\tfrac{\sqrt3}{2}),\; D=(-\tfrac12,-\tfrac{\sqrt3}{2}).A=(1,0),B=(−1,0),C=(21,23),D=(−21,−23).
При соединении A→B→C→D→AA\to B\to C\to D\to AA→B→C→D→A отрезки ABABAB и CDCDCD пересекутся — получаем самопересекающийся четырёхугольник. Углы по-прежнему в сумме дают 180∘\;180^\circ180∘ для противоположных пар, потому что все точки на одной окружности. Краткая инструкция для проверки по данным координатам: - Найдите центр окружности (если неизвестен) или постройте окружность через три вершины и проверьте четвёртую — это гарантирует вписанность. - Проверьте порядок углов точек относительно центра (сортировка по аргументам) и сравните с порядком вершин. - Или примените тест пересечения противоположных сторон по ориентациям — если пересечение есть, то самопересекающийся; если нет и при этом вершины на окружности — выпуклый. Это даёт полный набор практических критериев и методов для различения выпуклого вписанного и самопересекающегося четырёхугольника при условии, что противоположные углы суммируютcя до 180∘\;180^\circ180∘.
Критерии и методы отличия
1) Порядок точек на окружности.
- Если при обходе окружности вершины встречаются в том же порядке, в котором соединяются отрезками A→B→C→D→AA\to B\to C\to D\to AA→B→C→D→A, то четырёхугольник простой и выпуклый.
- Если порядок на окружности отличается (например, при обходе окружности встречается A,C,B,DA,C,B,DA,C,B,D или другое «перемешивание»), то при соединении в данном порядке получится самопересекающийся (перекрёстный) четырёхугольник.
Практически: найдите центр окружности OOO и полярные углы точек относительно OOO. Если углы возрастают (или убывают) последовательно как A,B,C,DA,B,C,DA,B,C,D — выпуклый; иначе — пересекающийся.
2) Проверка пересечения противоположных сторон (алгоритмически самый простой тест).
- В выпуклом простом четырёхугольнике противоположные стороны не пересекаются.
- В самопересекающемся ровно одна пара противоположных сторон пересекается (например, отрезки ABABAB и CDCDCD пересекаются или BCBCBC и DADADA пересекаются).
Тест пересечения отрезков P1P2P_1P_2P1 P2 и P3P4P_3P_4P3 P4 (ориентации): вычислите ориентации
orient(P1,P2,P3)\operatorname{orient}(P_1,P_2,P_3)orient(P1 ,P2 ,P3 ), orient(P1,P2,P4)\operatorname{orient}(P_1,P_2,P_4)orient(P1 ,P2 ,P4 ),
orient(P3,P4,P1)\operatorname{orient}(P_3,P_4,P_1)orient(P3 ,P4 ,P1 ), orient(P3,P4,P2)\operatorname{orient}(P_3,P_4,P_2)orient(P3 ,P4 ,P2 ),
где для точек (xi,yi)(x_i,y_i)(xi ,yi ) orient(P,Q,R)=(xQ−xP)(yR−yQ)−(yQ−yP)(xR−xQ).\displaystyle \operatorname{orient}(P,Q,R)= (x_Q-x_P)(y_R-y_Q)-(y_Q-y_P)(x_R-x_Q).orient(P,Q,R)=(xQ −xP )(yR −yQ )−(yQ −yP )(xR −xQ ). Отрезки пересекаются в общем положении тогда и только тогда, когда первые две ориентации имеют разные знаки, и вторые две — разные знаки.
3) Ориентации углов (векторный признак выпуклости).
- Четырёхугольник выпуклый тогда и только тогда, когда ориентации всех четырёх тройок смежных вершин (A,B,C),(B,C,D),(C,D,A),(D,A,B)(A,B,C),(B,C,D),(C,D,A),(D,A,B)(A,B,C),(B,C,D),(C,D,A),(D,A,B) имеют один и тот же знак (все положительные — круговой обход против часовой, или все отрицательные — по часовой).
- Если знаки не одинаковы (например, меняются), то фигура самопересекающаяся.
4) Поведение диагоналей.
- В выпуклом четырёхугольнике диагонали ACACAC и BDBDBD пересекаются и точка пересечения лежит внутри фигуры.
- В самопересекающем диагонали могут пересекаться, но пересечение не является «внутри» в смысле простой области; проще опираться на тест пересечения сторон (п.2).
Примеры (координаты на единичной окружности)
1) Выпуклый вписанный:
- Возьмём вершины под углами 0∘,60∘,180∘,240∘0^\circ,60^\circ,180^\circ,240^\circ0∘,60∘,180∘,240∘:
A=(cos0∘,sin0∘)=(1,0),A=(\cos 0^\circ,\sin 0^\circ)=(1,0),A=(cos0∘,sin0∘)=(1,0), B=(cos60∘,sin60∘)=(12,32),B=(\cos 60^\circ,\sin 60^\circ)=(\tfrac12,\tfrac{\sqrt3}{2}),B=(cos60∘,sin60∘)=(21 ,23 ), C=(cos180∘,sin180∘)=(−1,0),C=(\cos 180^\circ,\sin 180^\circ)=(-1,0),C=(cos180∘,sin180∘)=(−1,0), D=(cos240∘,sin240∘)=(−12,−32).D=(\cos 240^\circ,\sin 240^\circ)=(-\tfrac12,-\tfrac{\sqrt3}{2}).D=(cos240∘,sin240∘)=(−21 ,−23 ). Порядок по окружности A→B→C→DA\to B\to C\to DA→B→C→D совпадает с перечислением — выпуклый.
2) Самопересекающийся (вписанный, но перекрёстный):
- Те же четыре точки, но другой порядок: A=(1,0), B=(−1,0), C=(12,32), D=(−12,−32).A=(1,0),\; B=(-1,0),\; C=(\tfrac12,\tfrac{\sqrt3}{2}),\; D=(-\tfrac12,-\tfrac{\sqrt3}{2}).A=(1,0),B=(−1,0),C=(21 ,23 ),D=(−21 ,−23 ). При соединении A→B→C→D→AA\to B\to C\to D\to AA→B→C→D→A отрезки ABABAB и CDCDCD пересекутся — получаем самопересекающийся четырёхугольник. Углы по-прежнему в сумме дают 180∘\;180^\circ180∘ для противоположных пар, потому что все точки на одной окружности.
Краткая инструкция для проверки по данным координатам:
- Найдите центр окружности (если неизвестен) или постройте окружность через три вершины и проверьте четвёртую — это гарантирует вписанность.
- Проверьте порядок углов точек относительно центра (сортировка по аргументам) и сравните с порядком вершин.
- Или примените тест пересечения противоположных сторон по ориентациям — если пересечение есть, то самопересекающийся; если нет и при этом вершины на окружности — выпуклый.
Это даёт полный набор практических критериев и методов для различения выпуклого вписанного и самопересекающегося четырёхугольника при условии, что противоположные углы суммируютcя до 180∘\;180^\circ180∘.