## Bounding box of cubic bezier curve

Created: 21 September 2016 Last updated: 7.04.2018

### Background

It is very commonly used approach to itterate through the points of the bezier

curve and this way to determine the most left, right, top, bottom possitions.

This approach is slow and not so accurate.

### Basics

Line segment equations

P = A + (B - A)t where t changes from 0 to 1.

P = A + Bt - At

P = (1-t)A + tB

### Bounding box border

The bounding box border can be formed by the end points of the cubic bezier curve or by inner point.

The inner point should have a vertical slope for left and right border and horizontal slope for top bottom borders.

### Calculations

To have vertical or horizontal slope P and Q should be equal

P = Q

P = K + (L - K)t

Q = L + (M - L)t

Substitute in P = Q

K + (L - K)t = L + (M - L)t

K - L + (L - K)t - (M - L)t = 0

K - L + (L - K - M + L)t = 0

(2L - K - M)t + (K - L) = 0

We have for K, L, M

K = A + (B - A)t

L = B + (C - B)t

M = C + (D - C)t

Substitute in (2L - K - M)t + (K - L) = 0

(2*(B + (C - B)t) - (A + (B - A)t) - (C + (D - C)t))t + (A + (B - A)t) - (B + (C - B)t) = 0

(2*(B + Ct - Bt) - (A + Bt - At) - (C + Dt - Ct))t + (A + Bt - At) - (B + Ct - Bt) = 0

(2*B + 2*Ct - 2*Bt - A - Bt + At - C - Dt + Ct)t + A + Bt - At - B - Ct + Bt = 0

(2*Ct - 2*Bt - Bt + At - Dt + Ct + 2*B - C - A)t + A + Bt - At - B - Ct + Bt = 0

(3*Ct - 3*Bt + At - Dt + 2*B - C - A)t + A + Bt - At - B - Ct + Bt = 0

(3*C - 3*B + A - D)tt + (2*B - C - A)2t + A - B = 0

a = 3(C - B) + A - D

b = 2(2*B - C - A)

c = A - B

To find the value we have to solve Quadratic quation

at^2 + bt + c = 0

Back to main menu