How to calculate the vertex of a parabola given three points

后端 未结 8 1144
故里飘歌
故里飘歌 2020-11-30 03:11

I have three X/Y points that form a parabola. I simply need to calculate what the vertex of the parabola is that goes through these three points. Preferably a quick way as I

8条回答
  •  不知归路
    2020-11-30 04:16

    Here is a code in Fortran that implements @david-z and @AZDean's solution:

    subroutine parabola_vertex(x1, y1, x2, y2, x3, y3, xv, yv)
    real(dp), intent(in) :: x1, y1, x2, y2, x3, y3
    real(dp), intent(out) :: xv, yv
    real(dp) :: denom, A, B, C
    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
    xv = -B / (2*A)
    yv = C - B**2 / (4*A)
    end subroutine
    

提交回复
热议问题