Largest triangle that can be inscribed in an ellipse

• Last Updated : 15 Mar, 2021

Given an ellipse, with major axis length 2a & 2b, the task is to find the area of the largest triangle that can be inscribed in it.
Examples:

Input: a = 4, b = 2
Output: 10.3923

Input: a = 5, b = 3
Output: 10.8253 Approach: So we know the ellipse is just the scaled shadow of a circle.Let’s find the scaling factor.

x^2/a^2 + y^2/b^2 = 1 is an ellipse. Rewrite this as:
(y*(a/b))^2+x^2 = a^2

This is just a vertically scaled down circle of radius a (think light falls from the top at an angle), and the vertical factor is a/b. The biggest triangle in the ellipse is then a scaled up version of the biggest triangle in the circle. Using a little geometry and taking symmetry into account, we can understand that the biggest such triangle is the equilateral one. It’s sides will be √3a and the area will be (3√3)a^2/4
Translating this to ellipse terms – we scale the horizontal dimension up by a factor a/b, and the area of the biggest triangle in the ellipse is,

A = (3√3)a^2/4b

Below is the implementation of above approach:

C++

 // C++ Program to find the biggest triangle// which can be inscribed within the ellipse#include using namespace std; // Function to find the area// of the trianglefloat trianglearea(float a, float b){     // a and b cannot be negative    if (a < 0 || b < 0)        return -1;     // area of the triangle    float area = (3 * sqrt(3) * pow(a, 2)) / (4 * b);     return area;} // Driver codeint main(){    float a = 4, b = 2;    cout << trianglearea(a, b) << endl;     return 0;}

Java

 //Java Program to find the biggest triangle//which can be inscribed within the ellipse public class GFG {     //Function to find the area    //of the triangle    static float trianglearea(float a, float b)    {      // a and b cannot be negative     if (a < 0 || b < 0)         return -1;      // area of the triangle     float area = (float)(3 * Math.sqrt(3) * Math.pow(a, 2)) / (4 * b);      return area;    }     //Driver code    public static void main(String[] args) {             float a = 4, b = 2;         System.out.println(trianglearea(a, b));    }}

Python3

 # Python 3 Program to find the biggest triangle# which can be inscribed within the ellipse from math import * # Function to find the area# of the triangledef trianglearea(a, b) :     # a and b cannot be negative    if a < 0 or b < 0 :        return -1     # area of the triangle    area = (3 * sqrt(3) * pow(a, 2)) / (4 * b)     return area  # Driver Codeif __name__ == "__main__" :     a, b = 4, 2    print(round(trianglearea(a, b),4))  # This code is contributed by ANKITRAI1

C#

 // C# Program to find the biggest// triangle which can be inscribed// within the ellipseusing System; class GFG{ // Function to find the area// of the trianglestatic float trianglearea(float a, float b){ // a and b cannot be negativeif (a < 0 || b < 0)    return -1; // area of the trianglefloat area = (float)(3 * Math.Sqrt(3) *                         Math.Pow(a, 2)) / (4 * b); return area;} // Driver codepublic static void Main(){    float a = 4, b = 2;    Console.WriteLine(trianglearea(a, b));}} // This code is contributed// by Akanksha Rai(Abby_akku)



Javascript


Output:
10.3923

My Personal Notes arrow_drop_up