Мне недавно нужно было найти параболу, которая проходит через 3 точки.
предположим, у вас есть (x1,y1), (x2,y2) and (x3,y3)
, и вы хотите, чтобы парабола
y-y0 = a*(x-x0)^2
прошла через них: find y0, x0, and a
.
Вы можете сделать некоторую алгебру и получить это решение (при условии, что точки не все на линии):
let c = (y1-y2) / (y2-y3)
x0 = ( -x1^2 + x2^2 + c*( x2^2 - x3^2 ) ) / (2.0*( -x1+x2 + c*x2 - c*x3 ))
a = (y1-y2) / ( (x1-x0)^2 - (x2-x0)^2 )
y0 = y1 - a*(x1-x0)^2
Примечание в уравнении дляc if y2==y3
тогда у вас есть проблема.Поэтому в моем алгоритме я проверяю это и меняю местами x1, y1 и x2, y2, а затем продолжаю.
надеюсь, что это поможет!
Пол Проберт