Comprobar si un punto está dentro, fuera o en una hipérbola

Dada una hipérbola 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) se encuentra dentro del área delimitada por la hipérbola o no.

Ejemplos: 

Entrada: h = 0, k = 0, x = 2, y = 1, a = 4, b = 5  
Salida: Interior

Entrada: h = 1, k = 2, x = 200, y = 100, a = 6, b = 5
Salida: Exterior

Enfoque: El problema dado se puede resolver resolviendo la ecuación de la hipérbola mencionada a continuación, para el punto dado (x, y) :

  \frac{(x-h)^2}{a^2}  - \frac{(y-k)^2}{b^2}

Basado en el valor evaluado de la ecuación anterior, la salida del programa es la siguiente:

  • Menos de 1: El punto está dentro de la hipérbola .
  • Igual a 1: El punto está en la hipérbola
  • Mayor que 1: El punto se encuentra fuera de la hipérbola.

A continuación se muestra la implementación del enfoque anterior: 

C++

// C++ program for the
// above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if the point
// (x, y) lies inside, on or
// outside the given hyperbola
void checkpoint(int h, int k, int x,
                int y, int a, int b)
{
 
    // Stores the value of the equation
    int p = (pow((x - h), 2) / pow(a, 2))
            - (pow((y - k), 2) / pow(b, 2));
 
    // Generate output based on value of p
    if (p > 1) {
        cout << "Outside";
    }
    else if (p == 1) {
        cout << "On the Hyperbola";
    }
    else {
        cout << "Inside";
    }
}
 
// Driver Code
int main()
{
    int h = 0, k = 0, x = 2;
    int y = 1, a = 4, b = 5;
 
    checkpoint(h, k, x, y, a, b);
 
    return 0;
}

Java

// Java program for the above approach
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFG{
 
// Function to check if the point
// (x, y) lies inside, on or
// outside the given hyperbola
static void checkpoint(int h, int k, int x,
                       int y, int a, int b)
{
     
    // Stores the value of the equation
    int p = (int)(Math.pow((x - h), 2) / Math.pow(a, 2)) -
            (int)(Math.pow((y - k), 2) / Math.pow(b, 2));
 
    // Generate output based on value of p
    if (p > 1)
    {
        System.out.println("Outside");
    }
    else if (p == 1)
    {
        System.out.println("On the Hyperbola");
    }
    else
    {
        System.out.println("Inside");
    }
}
 
// Driver Code
public static void main(String[] args)
{
    int h = 0, k = 0, x = 2;
    int y = 1, a = 4, b = 5;
 
    checkpoint(h, k, x, y, a, b);
}
}
 
// This code is contributed by Kingash

Python3

# Python3 program for the above approach
from math import pow
 
# Function to check if the point
# (x, y) lies inside, on or
# outside the given hyperbola
def checkpoint(h, k, x, y, a, b):
 
    # Stores the value of the equation
    p = ((pow((x - h), 2) // pow(a, 2)) -
         (pow((y - k), 2) // pow(b, 2)))
 
    # Generate output based on value of p
    if (p > 1):
        print("Outside")
     
    elif (p == 1):
        print("On the Hyperbola");
     
    else:
        print("Inside")
 
# Driver Code
if __name__ == "__main__":
 
    h = 0
    k = 0
    x = 2
    y = 1
    a = 4
    b = 5
 
    checkpoint(h, k, x, y, a, b)
 
# This code is contributed by AnkThon

C#

// C# program for the above approach
using System;
 
class GFG{
 
// Function to check if the point
// (x, y) lies inside, on or
// outside the given hyperbola
static void checkpoint(int h, int k, int x,
                       int y, int a, int b)
{
     
    // Stores the value of the equation
    int p = (int)(Math.Pow((x - h), 2) / Math.Pow(a, 2)) -
            (int)(Math.Pow((y - k), 2) / Math.Pow(b, 2));
 
    // Generate output based on value of p
    if (p > 1)
    {
        Console.WriteLine("Outside");
    }
    else if (p == 1)
    {
        Console.WriteLine("On the Hyperbola");
    }
    else
    {
        Console.WriteLine("Inside");
    }
}
 
// Driver Code
public static void Main(string[] args)
{
    int h = 0, k = 0, x = 2;
    int y = 1, a = 4, b = 5;
 
    checkpoint(h, k, x, y, a, b);
}
}
 
// This code is contributed by ukasp

Javascript

<script>
 
// JavaScript program for the above approach
 
// Function to check if the point
// (x, y) lies inside, on or
// outside the given hyperbola
function checkpoint(h, k, x, y, a, b)
{
     
    // Stores the value of the equation
    p = ((Math.pow((x - h), 2) / Math.pow(a, 2)) -
         (Math.pow((y - k), 2) / Math.pow(b, 2)))
 
    // Generate output based on value of p
    if (p > 1)
        console.log("Outside");
     
    else if (p == 1)
        console.log("On the Hyperbola");
     
    else
        console.log("Inside");
}
 
// Driver Code
function main()
{
    var h = 0;
    var k = 0;
    var x = 2;
    var y = 1;
    var a = 4;
    var b = 5;
     
    checkpoint(h, k, x, y, a, b);
}
 
// main function call
main()
 
// This code is contributed by AnkThon
 
</script>
Producción: 

Inside

 

Tiempo Complejidad: O(1)
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por sam_2200 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 *