оберните изображение вокруг цилиндрической чашки, используя HTML 5 canvas и javascript

Моя цель - обернуть изображение поверх кофейной кружки виртуально, используя HTML5 и javascript.

Я создал прототип:http://jsfiddle.net/sandeepkum88/uamov2m7/

В настоящее время я разрезаю изображение на полосы шириной 1px, а затем помещаю эти полосы на кривую Безье.

var img = new Image();
img.onload = start;
img.src = "http://in-sandeep.printvenue.org/test-images/mug-strap.png";
var pointer = 0;

function start() {

    var iw = 198.97826;
    var ih = img.height;

    var x1 = 50;
    var y1 = 40;
    var x2 = 97;
    var y2 = 60;
    var x3 = 152;
    var y3 = 40;

    // calc unit value for t to calculate bezier curve
    var unitT = 1 / iw;

    // put image slices on the curve
    for (var X = 0, t = 0; X < iw; X++, t+=unitT) {
        var xTop = (1-t) * (1-t) * x1 + 2 * (1 - t) * t * x2 + t * t * x3;
        var yTop = (1-t) * (1-t) * y1 + 2 * (1 - t) * t * y2 + t * t * y3;
        ctx.drawImage(img, X + pointer, 0, 1, ih, xTop, yTop, 0.85, ih-188);
    }
}

Но я не удовлетворен результатом.

Я делаю это где-то неправильно? Есть ли лучшая альтернатива? Что, если верхняя кривая и нижняя кривая разные.

Есть ли способ достичь этого с помощью матрицы преобразования?

Ответы на вопрос(0)

Ваш ответ на вопрос