Maximum area of quadrilateral

Given four sides of quadrilateral a, b, c, d, find the maximum area of the quadrilateral possible from the given sides .

Examples:

Input : 1 2 1 2
Output : 2.00
It is optimal to construct a rectangle for maximum area .



According to Bretschneider’s formula, the area of a general quadilateral is given by K={\sqrt {(s-a)(s-b)(s-c)(s-d)-abcd\cdot \cos ^{2}\left({\frac {\alpha +\gamma }{2}}\right)}}
Here a, b, c, d are the sides of a quadilateral, s is the semiperimeter of a quadilateral and angles are two opposite angles.
So, this formula is maximized only when opposite angles sum to pi(180) then we can use a simplified form of Bretschneider’s formula to get the (maximum) area K.
K={\sqrt {(s-a)(s-b)(s-c)(s-d)}}

This formula is called as Brahmagupta’s formula .

Below is the implementation of given approach

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to find maximum are of a 
// quadrilateral
#include <bits/stdc++.h>
using namespace std;
  
double maxArea(double a, double b,
                double c, double d)
{
    // Calculating the semi-perimeter 
    // of the given quadilateral
    double semiperimeter = (a + b + c + d) / 2;
  
    // Applying Brahmagupta's formula to
    // get maximum area of quadrilateral
    return sqrt((semiperimeter - a) *
                (semiperimeter - b) * 
                (semiperimeter - c) * 
                (semiperimeter - d));
}
  
// Driver code
int main()
{
    double a = 1, b = 2, c= 1, d = 2;
    printf("%.2f\n",maxArea(a, b, c, d));
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find maximum are of a 
// quadrilateral
import java.io.*;
  
class GFG 
{
    static double maxArea(double a, double b,
                           double c, double d)
    {
        // Calculating the semi-perimeter 
        // of the given quadilateral
        double semiperimeter = (a + b + c + d) / 2;
      
        // Applying Brahmagupta's formula to
        // get maximum area of quadrilateral
        return Math.sqrt((semiperimeter - a) *
                         (semiperimeter - b) * 
                         (semiperimeter - c) * 
                         (semiperimeter - d));
    }
      
    // Driver code
    public static void main (String[] args) 
    {
        double a = 1, b = 2, c= 1, d = 2;
        System.out.println(maxArea(a, b, c, d));
    }
}
  
// This code is contributed by sunnysingh

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find maximum 
# area of a quadrilateral
import math
  
def maxArea (a , b , c , d ):
  
    # Calculating the semi-perimeter
    # of the given quadilateral
    semiperimeter = (a + b + c + d) / 2
      
    # Applying Brahmagupta's formula to
    # get maximum area of quadrilateral
    return math.sqrt((semiperimeter - a) *
                    (semiperimeter - b) *
                    (semiperimeter - c) * 
                    (semiperimeter - d))
  
# Driver code
a = 1
b = 2
c = 1
d = 2
print("%.2f"%maxArea(a, b, c, d))
  
# This code is contributed by "Sharad_Bhardwaj".

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find maximum are of a 
// quadrilateral
using System;
  
class GFG {
      
    static double maxArea(double a, double b,
                          double c, double d)
    {
          
        // Calculating the semi-perimeter 
        // of the given quadilateral
        double semiperimeter = (a + b + c + d) / 2;
      
        // Applying Brahmagupta's formula to
        // get maximum area of quadrilateral
        return Math.Sqrt((semiperimeter - a) *
                         (semiperimeter - b) * 
                         (semiperimeter - c) * 
                         (semiperimeter - d));
    }
      
    // Driver code
    public static void Main () 
    {
        double a = 1, b = 2, c= 1, d = 2;
          
        Console.WriteLine(maxArea(a, b, c, d));
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find maximum are of a 
// quadrilateral
  
function maxArea( $a, $b, $c, $d)
{
      
    // Calculating the semi-perimeter 
    // of the given quadilateral
    $semiperimeter = ($a + $b + $c + $d) / 2;
  
    // Applying Brahmagupta's formula to
    // get maximum area of quadrilateral
    return sqrt(($semiperimeter - $a) *
                ($semiperimeter - $b) * 
                ($semiperimeter - $c) * 
                ($semiperimeter - $d));
}
  
// Driver code
$a = 1; $b = 2; $c= 1; $d = 2;
echo(maxArea($a, $b, $c, $d));
  
// This code is contributed by vt_m.
?>

chevron_right



Output:

2.00


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : vt_m