Cómo calcular el vértice de una parábola con código, dados tres puntos. (Java, C# y Pseudocódigo)


Vamos a calcular el vértice de una parábola, a partir de tres puntos X/Y dados, que forman parte de la misma.
La forma general de una parábola se da por la ecuación:

A * x ^ 2 + B * x + C = y

Donde A, B y C son constantes reales arbitrarias.
Tienes tres pares de puntos, que son pares ordenados de (x , y).

(x1,y1) (x2,y2) (x3,y3)

Sustituye los valores de “x” y “y” de cada punto en la ecuación de la parábola y se multiplica el vector por la matriz.

Podemos expresarlo en pseudocódigo de la siguiente manera:

denom = (x1 - x2)(x1 - x3)(x2 - x3)
A = (x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2)) / denom
B = (x3^2 * (y1 - y2) + x2^2 * (y3 - y1) + x1^2 * (y2 - y3)) / denom
C = (x2 * x3 * (x2 - x3) * y1 + x3 * x1 * (x3 - x1) * y2 + x1 * x2 * (x1 - x2) * y3) / denom


Y a partir de este pseudocódigo, podemos expresarlo en cualquier lenguaje de programación, por ejemplo:

Java:
double denom = (x1 - x2)(x1 - x3)(x2 - x3):
double A = (x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2)) / denom;
double B = (x3^2 * (y1 - y2) + x2^2 * (y3 - y1) + x1^2 * (y2 - y3)) / denom;
double C = (x2 * x3 * (x2 - x3) * y1 + x3 * x1 * (x3 - x1) * y2 + x1 * x2 * (x1 - x2) * y3) / denom;


C#:
public static void CalcVerticeParabola(int x1, int y1, int x2, int y2, int x3, int y3, out double xv, out double yv)
{
    double denom = (x1 - x2) * (x1 - x3) * (x2 - x3);
    double A     = (x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2)) / denom;
    double B     = (x3*x3 * (y1 - y2) + x2*x2 * (y3 - y1) + x1*x1 * (y2 - y3)) / denom;
    double C     = (x2 * x3 * (x2 - x3) * y1 + x3 * x1 * (x3 - x1) * y2 + x1 * x2 * (x1 - x2) * y3) / denom;

    xv = -B / (2*A);
    yv = C - B*B / (4*A);
}


Dinos, ¿cómo lo expresarías en otro lenguaje? Déjanos un comentario en la sección inferior.

No hay comentarios:

Publicar un comentario