Comprobar si un punto está dentro, fuera o en la elipse

Dada una elipse centrada en (h, k) , con semieje mayor a , semieje menor b , ambos alineados con el plano cartesiano. La tarea es determinar si el punto (x, y) está dentro del área delimitada por la elipse.
Ejemplos: 
 

Input: h = 0, k = 0, x = 2, y = 1, a = 4, b = 5 
Output: Inside

Input: h = 1, k = 2, x = 200, y = 100, a = 6, b = 5
Output: Outside

Enfoque : tenemos que resolver la ecuación de la elipse para el punto dado (x, y)
 

(xh)^2/a^2 + (yk)^2/b^2 <= 1

 
Si en la inecuación, los resultados son menores que 1 , entonces el punto se encuentra dentro , de lo contrario, si es exactamente 1 , entonces el punto se encuentra en la elipse , y si la inecuación no se cumple, entonces el punto se encuentra fuera de la elipse .
A continuación se muestra la implementación del enfoque anterior
 

C++

// C++ Program to check if the point
// lies within the ellipse or not
#include <bits/stdc++.h>
using namespace std;
 
// Function to check the point
int checkpoint(int h, int k, int x, int y, int a, int b)
{
 
    // checking the equation of
    // ellipse with the given point
    int p = (pow((x - h), 2) / pow(a, 2))
            + (pow((y - k), 2) / pow(b, 2));
 
    return p;
}
 
// Driver code
int main()
{
    int h = 0, k = 0, x = 2, y = 1, a = 4, b = 5;
 
    if (checkpoint(h, k, x, y, a, b) > 1)
        cout << "Outside" << endl;
 
    else if (checkpoint(h, k, x, y, a, b) == 1)
        cout << "On the ellipse" << endl;
 
    else
        cout << "Inside" << endl;
 
    return 0;
}

Java

// Java Program to check if the point
// lies within the ellipse or not
import java.util.*;
 
class solution
{
  
// Function to check the point
static int checkpoint(int h, int k, int x, int y, int a, int b)
{
 
    // checking the equation of
    // ellipse with the given point
    int p = ((int)Math.pow((x - h), 2) / (int)Math.pow(a, 2))
            + ((int)Math.pow((y - k), 2) / (int)Math.pow(b, 2));
 
    return p;
}
 
//Driver code
public static void main(String arr[])
{
   
    int h = 0, k = 0, x = 2, y = 1, a = 4, b = 5;
 
    if (checkpoint(h, k, x, y, a, b) > 1)
       System.out.println("Outside");
 
    else if (checkpoint(h, k, x, y, a, b) == 1)
        System.out.println("On the ellipse");
 
    else
       System.out.println("Inside");
 
}
}
 
//This code is contributed by Surendra_Gangwar

Python 3

# Python 3 Program to check if
# the point lies within the
# ellipse or not
import math
 
# Function to check the point
def checkpoint( h, k, x, y, a, b):
 
    # checking the equation of
    # ellipse with the given point
    p = ((math.pow((x - h), 2) // math.pow(a, 2)) +
         (math.pow((y - k), 2) // math.pow(b, 2)))
 
    return p
 
# Driver code
if __name__ == "__main__":
 
    h = 0
    k = 0
    x = 2
    y = 1
    a = 4
    b = 5
 
    if (checkpoint(h, k, x, y, a, b) > 1):
        print ("Outside")
 
    elif (checkpoint(h, k, x, y, a, b) == 1):
        print("On the ellipse")
 
    else:
        print("Inside")
 
# This code is contributed
# by ChitraNayal

C#

// C# Program to check if the point
// lies within the ellipse or not
using System;
 
class GFG
{
 
// Function to check the point
static int checkpoint(int h, int k, int x,
                      int y, int a, int b)
{
 
    // checking the equation of
    // ellipse with the given point
    int p = ((int)Math.Pow((x - h), 2) /
             (int)Math.Pow(a, 2)) +
            ((int)Math.Pow((y - k), 2) /
             (int)Math.Pow(b, 2));
 
    return p;
}
 
// Driver code
public static void Main()
{
    int h = 0, k = 0, x = 2,
        y = 1, a = 4, b = 5;
 
    if (checkpoint(h, k, x, y, a, b) > 1)
    Console.WriteLine("Outside");
 
    else if (checkpoint(h, k, x, y, a, b) == 1)
        Console.WriteLine("On the ellipse");
 
    else
    Console.WriteLine("Inside");
}
}
 
// This code is contributed by inder_verma

PHP

<?php
// PHP Program to check if the point
// lies within the ellipse or not
 
// Function to check the point
function checkpoint($h, $k, $x,
                    $y, $a, $b)
{
 
    // checking the equation of
    // ellipse with the given point
    $p = (pow(($x - $h), 2) / pow($a, 2)) +
         (pow(($y - $k), 2) / pow($b, 2));
 
    return $p;
}
 
// Driver code
$h = 0;
$k = 0;
$x = 2;
$y = 1;
$a = 4;
$b = 5;
 
if (checkpoint($h, $k, $x, $y, $a, $b) > 1)
    echo ("Outside");
 
else if (checkpoint($h, $k, $x, $y, $a, $b) == 1)
    echo("On the ellipse" );
 
else
    echo ("Inside") ;
     
// This code is contributed by Shivi_Aggarwal
?>

Javascript

<script>
 
// javascript Program to check if the point
// lies within the ellipse or not
 
// Function to check the point
function checkpoint(h , k , x , y , a , b)
{
 
    // checking the equation of
    // ellipse with the given point
    var p = (parseInt(Math.pow((x - h), 2)) / parseInt(Math.pow(a, 2)))
            + (parseInt(Math.pow((y - k), 2)) / parseInt(Math.pow(b, 2)));
 
    return p;
}
 
// Driver code
 
    var h = 0, k = 0, x = 2, y = 1, a = 4, b = 5;
 
    if (checkpoint(h, k, x, y, a, b) > 1)
       document.write("Outside");
 
    else if (checkpoint(h, k, x, y, a, b) == 1)
        document.write("On the ellipse");
 
    else
       document.write("Inside");
 
// This code is contributed by 29AjayKumar
 
</script>
Producción: 

Inside

 

Complejidad del tiempo: O(1)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por IshwarGupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *