2012-03-14 6 views
6

Tengo una pregunta con respecto a la curva de fórmula a través de un punto de control. Como usted sabe, HTML Canvas tiene quadraticCurveTo(x1, y1, x2, y2) con x1 and x2 siendo el punto de control.Explicación - Fórmula para curvar a través de un punto de control

Sin embargo, cuando intenta dibujar un trazo con él, la carrera nunca tocará el punto de control.

Así que tienen la siguiente fórmula:

x1 = xt * 2 - (x0 + x2)/2; 
y1 = yt * 2 - (y0 + y2)/2; 

(xt, yt) = el punto que desee a través de la curva. t para tangente ya que es 90 grados perpendicular en ese punto.

Esto recalcula la posición del punto de control.

Obtuve esta fórmula de un libro, sin embargo, el libro no explica cómo se ha derivado. Intenté googlear pero fue en vano.

¿Alguien sabe cómo se deriva esta fórmula?

Gracias, Venn.

+0

Esto es de http://stackoverflow.com/questions/6711707/draw-a-quadratic-bezier-curve-through-three-give n-puntos para cualquiera que se pregunte – mowwwalker

Respuesta

2

curva cuadrática Bezier es descrito por las ecuaciones:

x(t) = x0 * (1-t)^2 + 2 * x1 * t * (1 - t) + x2 * t^2 (y similares para y (t)).

Si aplicamos el valor del parámetro t = 1/2 (de alguna manera - media de la curva), obtendremos la fórmula:

x(t=1/2) = xt = x0 * 1/4 + 2 * x1 * 1/4 + x2 * 1/4

continuación

x1/2 = xt - (x0 + x2)/4

x1 = 2 * xt - (x0 + x2)/2

+0

¡Gracias por la ayuda! Esto es genial. – Vennsoh

0

Esto se llama Spline. Más al punto, parece que están usando un Bezier Curve.

+0

Gracias, pero todavía no entiendo cómo x1 = xt * 2 - (x0 + x2)/2; y1 = yt * 2 - (y0 + y2)/2; se está derivando. – Vennsoh

+0

@Vennsoh: Editado mi respuesta, creo que están utilizando una Curva de Bezier cuadrática. Ver la derivación en el artículo wiki vinculado. – mindvirus

Cuestiones relacionadas