On peut calculer directement l'aire du quadrilatère comme somme des aires
des triangles ABD et BCD
Aire du triangle BCD = CD.BC.sin(C)/2 (formule connue, de toute façon base×hauteur/2)
L'aire du triangle ABD à partir des coordonnées utilise le produit vectoriel :
||DB>×DA>||/2 =
( (xB - xD)(yA - yD) - (yB - yD)(xA - xD) )/2
Ce qui se simplifie car xD = yD = 0 :
Aire(ABD) = (xB.yA - yB.xA)/2 =
((CD - BC.cos(C)).AD.sin(D) - BC.sin(C).AD.cos(D))/2
et l'aire du quadrilatère, après simplifications :
S = (CD.BC.sin(C) + CD.AD.sin(D) - BC.AD.sin(C+D))/2 |
Petite controle : si les angles sont exactement 90°, on a S = CD.(BC + AD)/2, l'aire d'un trapèze
Les autres inconnues, le côté AB, obtenu directement de AB² = (xB - xA)² + (yB - yA)²
L'angle A est obtenu par Al Kashi dans le triangle ABD cos(A) = (AB² + AD² - BD²) / (2.AB.AD)
L'angle B par Al Kashi dans le triangle BCD
cos(B) = (AB² + BC² - AC²) / (2.AB.BC)
Ou même encore plus simple par A + B + C + D = 360° !
BC = (2S - CD.AD.sin(D)) / (CD.sin(C) - AD.sin(C+D)) |
x²sin(C+D) - x.CD.(sin(C) + sin(D)) + 2S = 0 |
x²sin(C+D).sin(C)/sin(D) - 2x.CD.sin(C) + 2S = 0 |
BC = -(AD - CD.cos(D))/cos(C+D)
Noter que on a C+D > 90° ! attention au signe AD > CD.cos(D) et cos(C+D) < 0
Si C = D = 90° la condition est équivalente à BC = AD (un vrai rectangle)
En substituant dans la formule de l'aire on obtient l'équation du second degré en x = AD :
x²sin(C+D) - 2x.CD.sin(C) + CD²cos(D)sin(C) - 2S.cos(C+D) = 0 |