quadraticCurveTo
dibuja un quadratic Bézier curve.
Las fórmulas para calcular las coordenadas de un punto en cualquier posición dada (de 0 a 1) en la curva son
x(t) = (1-t)^2 * x1 + 2 * (1-t) * t * x2 + t^2 * x3
y(t) = (1-t)^2 * y1 + 2 * (1-t) * t * y2 + t^2 * y3
donde (x1, y1) es el punto de partida, (x2, y2) es el punto de control y (x3, y3) es el punto final.
Así, convertirla en JavaScript, terminamos con algo como
function _getQBezierValue(t, p1, p2, p3) {
var iT = 1 - t;
return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3;
}
function getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, position) {
return {
x: _getQBezierValue(position, startX, cpX, endX),
y: _getQBezierValue(position, startY, cpY, endY)
};
}
Si sale de los puntos de inicio, final y de control a getQuadraticCurvePoint
allí, junto con 0.5
para la posición a mitad de camino, usted debe tener una objeto con las coordenadas X e Y.
Descargo de responsabilidad - No he probado el código, por lo que su kilometraje puede variar, pero parece derecho. ;)
EDITAR: He probado el código aquí en jsfiddle. http://jsfiddle.net/QA6VG/
explicar qué quiere decir con "punto de control" y "final" puntos "de partida" y. –
El punto de control es un punto que es responsable de la forma de la curva, el punto de inicio es el punto donde comienza la curva y el extremo final es uno donde termina la curva. –
Ningún punto en particular puede ser responsable de la forma de la curva: la forma de la curva se define mediante los valores de a, b, c cuando se escribe en forma general. Sus puntos de inicio y final: ¿están nivelados entre sí horizontalmente? ¿Tienes una ecuación que estás tramando? –