Для выпуклого четырёхугольника ABCD разработайте критерий существования диагонали, делящей фигуру на два треугольника равной площади; предложите алгоритм проверки и докажите необходимость и достаточность условий
Критерий (коротко). Для выпуклого четырёхугольника ABCDABCDABCD диагональ ACACAC делит фигуру на два треугольника равной площади тогда и только тогда, когда расстояния от вершин BBB и DDD до прямой ACACAC равны. Аналогично для диагонали BDBDBD: она делит на равные площади тогда и только тогда, когда расстояния от AAA и CCC до прямой BDBDBD равны. Следовательно, искомая диагональ существует тогда и только тогда, когда выполнено хотя бы одно из двух равенств. Доказательство (необходимость и достаточность) для ACACAC. 1) Пусть ACACAC делит на равные площади: SABC=SCDAS_{ABC}=S_{CDA}SABC=SCDA. Пусть hB,hDh_B,h_DhB,hD — расстояния от BBB и DDD до прямой ACACAC. Так как обе треугольники имеют общий основание ACACAC, их площади равны: SABC=12∣AC∣ hB,SCDA=12∣AC∣ hD.
S_{ABC}=\tfrac12|AC|\;h_B,\qquad S_{CDA}=\tfrac12|AC|\;h_D. SABC=21∣AC∣hB,SCDA=21∣AC∣hD.
Отсюда hB=hDh_B=h_DhB=hD. Это необходимость. 2) Обратное: если hB=hDh_B=h_DhB=hD, то подставляя в формулы выше получаем SABC=SCDAS_{ABC}=S_{CDA}SABC=SCDA. Это достаточность. Эквивалентная алгебраическая форма (удобна для проверки). Векторная/детерминантная формула площади треугольника: SPQR=12∣det(Q−P, R−P)∣.
S_{PQR}=\tfrac12\bigl|\det(Q-P,\;R-P)\bigr|. SPQR=21det(Q−P,R−P).
Поэтому равенство площадей для диагонали ACACAC эквивалентно ∣det(B−A, C−A)∣=∣det(D−C, A−C)∣
\bigl|\det(B-A,\;C-A)\bigr|=\bigl|\det(D-C,\;A-C)\bigr| det(B−A,C−A)=det(D−C,A−C)
или (однообразно) ∣det(C−A, B−A)∣=∣det(C−A, D−A)∣.
\bigl|\det(C-A,\;B-A)\bigr|=\bigl|\det(C-A,\;D-A)\bigr|. det(C−A,B−A)=det(C−A,D−A).
Аналогично для диагонали BDBDBD: ∣det(D−B, A−B)∣=∣det(D−B, C−B)∣.
\bigl|\det(D-B,\;A-B)\bigr|=\bigl|\det(D-B,\;C-B)\bigr|. det(D−B,A−B)=det(D−B,C−B). Алгоритм проверки (практически): 1. Ввод координат A(xA,yA),B(xB,yB),C(xC,yC),D(xD,yD)A(x_A,y_A),B(x_B,y_B),C(x_C,y_C),D(x_D,y_D)A(xA,yA),B(xB,yB),C(xC,yC),D(xD,yD). 2. Вычислить T1=∣det(C−A, B−A)∣=∣(xC−xA)(yB−yA)−(yC−yA)(xB−xA)∣T_1=\bigl|\det(C-A,\;B-A)\bigr|=| (x_C-x_A)(y_B-y_A)-(y_C-y_A)(x_B-x_A)|T1=det(C−A,B−A)=∣(xC−xA)(yB−yA)−(yC−yA)(xB−xA)∣. Вычислить T2=∣det(C−A, D−A)∣T_2=\bigl|\det(C-A,\;D-A)\bigr|T2=det(C−A,D−A). Если T1=T2T_1=T_2T1=T2 (с учётом числовой погрешности), то ACACAC — искомая диагональ. 3. Иначе вычислить U1=∣det(D−B, A−B)∣U_1=\bigl|\det(D-B,\;A-B)\bigr|U1=det(D−B,A−B) и U2=∣det(D−B, C−B)∣U_2=\bigl|\det(D-B,\;C-B)\bigr|U2=det(D−B,C−B). Если U1=U2U_1=U_2U1=U2, то BDBDBD — искомая диагональ. 4. Если ни одно равенство не выполнено, диагональ, делящая на равные площади, отсутствует. Замечания: - В выпуклом четырёхугольнике высоты положительны и формулы корректны. - При численной проверке сравнивайте с допуском (например, ∣T1−T2∣<ε|T_1-T_2|<\varepsilon∣T1−T2∣<ε).
Доказательство (необходимость и достаточность) для ACACAC.
1) Пусть ACACAC делит на равные площади: SABC=SCDAS_{ABC}=S_{CDA}SABC =SCDA . Пусть hB,hDh_B,h_DhB ,hD — расстояния от BBB и DDD до прямой ACACAC. Так как обе треугольники имеют общий основание ACACAC, их площади равны:
SABC=12∣AC∣ hB,SCDA=12∣AC∣ hD. S_{ABC}=\tfrac12|AC|\;h_B,\qquad S_{CDA}=\tfrac12|AC|\;h_D.
SABC =21 ∣AC∣hB ,SCDA =21 ∣AC∣hD . Отсюда hB=hDh_B=h_DhB =hD . Это необходимость.
2) Обратное: если hB=hDh_B=h_DhB =hD , то подставляя в формулы выше получаем SABC=SCDAS_{ABC}=S_{CDA}SABC =SCDA . Это достаточность.
Эквивалентная алгебраическая форма (удобна для проверки). Векторная/детерминантная формула площади треугольника:
SPQR=12∣det(Q−P, R−P)∣. S_{PQR}=\tfrac12\bigl|\det(Q-P,\;R-P)\bigr|.
SPQR =21 det(Q−P,R−P) . Поэтому равенство площадей для диагонали ACACAC эквивалентно
∣det(B−A, C−A)∣=∣det(D−C, A−C)∣ \bigl|\det(B-A,\;C-A)\bigr|=\bigl|\det(D-C,\;A-C)\bigr|
det(B−A,C−A) = det(D−C,A−C) или (однообразно)
∣det(C−A, B−A)∣=∣det(C−A, D−A)∣. \bigl|\det(C-A,\;B-A)\bigr|=\bigl|\det(C-A,\;D-A)\bigr|.
det(C−A,B−A) = det(C−A,D−A) . Аналогично для диагонали BDBDBD:
∣det(D−B, A−B)∣=∣det(D−B, C−B)∣. \bigl|\det(D-B,\;A-B)\bigr|=\bigl|\det(D-B,\;C-B)\bigr|.
det(D−B,A−B) = det(D−B,C−B) .
Алгоритм проверки (практически):
1. Ввод координат A(xA,yA),B(xB,yB),C(xC,yC),D(xD,yD)A(x_A,y_A),B(x_B,y_B),C(x_C,y_C),D(x_D,y_D)A(xA ,yA ),B(xB ,yB ),C(xC ,yC ),D(xD ,yD ).
2. Вычислить T1=∣det(C−A, B−A)∣=∣(xC−xA)(yB−yA)−(yC−yA)(xB−xA)∣T_1=\bigl|\det(C-A,\;B-A)\bigr|=| (x_C-x_A)(y_B-y_A)-(y_C-y_A)(x_B-x_A)|T1 = det(C−A,B−A) =∣(xC −xA )(yB −yA )−(yC −yA )(xB −xA )∣.
Вычислить T2=∣det(C−A, D−A)∣T_2=\bigl|\det(C-A,\;D-A)\bigr|T2 = det(C−A,D−A) .
Если T1=T2T_1=T_2T1 =T2 (с учётом числовой погрешности), то ACACAC — искомая диагональ.
3. Иначе вычислить U1=∣det(D−B, A−B)∣U_1=\bigl|\det(D-B,\;A-B)\bigr|U1 = det(D−B,A−B) и U2=∣det(D−B, C−B)∣U_2=\bigl|\det(D-B,\;C-B)\bigr|U2 = det(D−B,C−B) .
Если U1=U2U_1=U_2U1 =U2 , то BDBDBD — искомая диагональ.
4. Если ни одно равенство не выполнено, диагональ, делящая на равные площади, отсутствует.
Замечания:
- В выпуклом четырёхугольнике высоты положительны и формулы корректны.
- При численной проверке сравнивайте с допуском (например, ∣T1−T2∣<ε|T_1-T_2|<\varepsilon∣T1 −T2 ∣<ε).