Area of largest isosceles triangle that can be inscribed in an Ellipse whose vertex coincides with one extremity of the major axis

Given an ellipse with half the major and minor axes length A & B, the task is to find the area of the largest isosceles triangle that can be inscribed in the ellipse whose vertex coincides with one extremity of the major axis.

Examples:

Input: A = 1, B = 2
Output: 2.598
Explanation:
Area of the isosceles triangle = ((3 * √3) * A * B) / 4.
Therefore, area = 2.598.

Input: A = 2, B = 3
Output: 7.794

 

Approach: The idea is based on the following mathematical formula:

Proof: 

Considering triangle APB, 
Area of APB = AB * PQ = (1 / 2) * A * B * (2 sin∅ – sin2∅)

Taking derivative: 
d(area(APB))/d∅ = ab ( cos∅ – cos2∅)

Equating the derivative to zero: 
d(area(APB))/d∅ = 0 
cos∅ = – (1 / 2) 
∅ = 2PI / 3

Therefore, area of APB = (3√3) * A * B / 4

Below is the implementation of the above approach:

C++




// C++ program for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to calculate area
// of the isosceles triangle
void triangleArea(float a, float b)
{
    // If a and b are negative
    if (a < 0 || b < 0) {
        cout << -1;
        return;
    }
 
    // Stores the area of the triangle
    float area = (3 * sqrt(3) * a * b) / (4);
 
    // Print the area
    cout << area;
}
 
// Driver code
int main()
{
    // Given value of a & b
    float a = 1, b = 2;
 
    // Function call to find the
    // area of the isosceles triangle
    triangleArea(a, b);
 
    return 0;
}


Java




// Java program for the above approach
import java.util.*;
 
class GFG
{
 
// Function to calculate area
// of the isosceles triangle
static void triangleArea(float a, float b)
{
   
    // If a and b are negative
    if (a < 0 || b < 0) {
        System.out.println(-1);
        return;
    }
 
    // Stores the area of the triangle
    float area = (3 * (float)Math.sqrt(3) * a * b) / (4);
 
    // Print the area
    System.out.println(area);
}
 
// Driver Code
public static void main(String[] args)
{
   
    // Given value of a & b
    float a = 1, b = 2;
 
    // Function call to find the
    // area of the isosceles triangle
    triangleArea(a, b);
}
}
 
// This code is contributed by sanjoy_62.


Python3




# Python 3 program for the above approach
from math import sqrt
 
# Function to calculate area
# of the isosceles triangle
def triangleArea(a, b):
   
    # If a and b are negative
    if (a < 0 or b < 0):
        print(-1)
        return
 
    # Stores the area of the triangle
    area = (3 * sqrt(3) * a * b) / (4);
 
    # Print the area
    print("{:.5f}".format(area))
 
# Driver code
if __name__ == '__main__':
   
    # Given value of a & b
    a = 1
    b = 2
     
    # Function call to find the
    # area of the isosceles triangle
    triangleArea(a, b)
     
    # This code is contributed by SURENDRA_GANGWAR.


C#




// C# program for the above approach
 
using System;
public class GFG
{
 
  // Function to calculate area
  // of the isosceles triangle
  static void triangleArea(float a, float b)
  {
 
    // If a and b are negative
    if (a < 0 || b < 0) {
      Console.WriteLine(-1);
      return;
    }
 
    // Stores the area of the triangle
    float area = (3 * (float)Math.Sqrt(3) * a * b) / (4);
 
    // Print the area
    Console.WriteLine(area);
  }
 
  // Driver Code
  public static void Main(string[] args)
  {
 
    // Given value of a & b
    float a = 1, b = 2;
 
    // Function call to find the
    // area of the isosceles triangle
    triangleArea(a, b);
  }
}
 
// This code is contributed by AnkThon


Javascript




<script>
 
// Javascript program for the above approach
 
// Function to calculate area
// of the isosceles triangle
function triangleArea(a, b)
{
     
    // If a and b are negative
    if (a < 0 || b < 0)
    {
        document.write(-1);
        return;
    }
 
    // Stores the area of the triangle
    var area = (3 *  Math.sqrt(3) * a * b) / (4);
 
    // Print the area
    document.write(area.toFixed(5));
}
 
// Driver Code
 
// Given value of a & b
var a = 1, b = 2;
 
// Function call to find the
// area of the isosceles triangle
triangleArea(a, b);
 
// This code is contributed by todaysgaurav
 
</script>


Output: 

2.59808

 

Time Complexity: O(1)
Auxiliary Space: O(1)