Open In App

Largest triangle that can be inscribed in an ellipse

Last Updated : 23 Jul, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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 <bits/stdc++.h>
using namespace std;
 
// Function to find the area
// of the triangle
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 = (3 * sqrt(3) * pow(a, 2)) / (4 * b);
 
    return area;
}
 
// Driver code
int 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 triangle
def 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 Code
if __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 ellipse
using System;
 
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()
{
    float a = 4, b = 2;
    Console.WriteLine(trianglearea(a, b));
}
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)


PHP




<?php
// PHP Program to find the biggest
// triangle which can be inscribed
// within the ellipse
 
// Function to find the area
// of the triangle
function trianglearea($a, $b)
{
 
    // a and b cannot be negative
    if ($a < 0 || $b < 0)
        return -1;
 
    // area of the triangle
    $area = (3 * sqrt(3) *
            pow($a, 2)) / (4 * $b);
 
    return $area;
}
 
// Driver code
$a = 4;
$b = 2;
echo trianglearea($a, $b);
 
// This code is contributed
// by Shivi_Aggarwal
?>


Javascript




<script>
 
// javascript Program to find the biggest triangle
// which can be inscribed within the ellipse
 
// Function to find the area
// of the triangle
function trianglearea(a , b)
{
 
 // a and b cannot be negative
 if (a < 0 || b < 0)
     return -1;
 
 // area of the triangle
 var area = (3 * Math.sqrt(3) * Math.pow(a, 2)) / (4 * b);
 
 return area;
}
 
// Driver code
 
var a = 4, b = 2;
document.write(trianglearea(a, b).toFixed(4));
 
// This code contributed by shikhasingrajput
 
</script>


Output: 

10.3923

 

Time Complexity: O(1)

Auxiliary Space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads