Dados 3 puntos X/Y que estan en una parabola, se necesita calcular el vértice de la misma que pasa por esos 3 puntos.
(x1,y1) (x2,y2) (x3,y3)
Se sustituyen los valores de los 3 puntos y se multiplica el vector a la matriz. En pseudocódigo, quedaría así:
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
El resultado serían las variables A, B y C, que corresponden a la ecuación de la parábola: Ax^2 + Bx + C = y
Desde este punto, es sencillo convertirlo a algún lenguaje de programación como Java, C++, C#, entre otros. Para Java sería:
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;
pero estás asumiendo que las distancias al punto punto 2 son las que determinan el punto de inflexión... cosa que no es necesariamente así. Digo, con esos tres puntos el vértice podría estar a la izquierda del punto de menor cardinalidad X, no?
ResponderEliminarMuy bueno igual, saludos!
Lo que se calcula es la ecuación de la parabola, es decir:
EliminarAx^2 + Bx + C = y
He agregado una imagen a la publicación para que se entienda mejor.
Muchas gracias por tu comentario!