在javascript中计算弧形路径

时间:2013-06-02 06:10:23

标签: javascript jquery html css

我无法弄清楚如何模拟这个。红色箭头处于静止位置。背景,有一条弯曲的路径。我只是移动背景位置,使箭头似乎沿着弯曲的路径移动。

Red Arrow http://img829.imageshack.us/img829/6636/redarrowe.png

我现在所拥有的是箭头以45度角移动到目的地。但我想要实现的是箭头在虚线路径上移动。

var interval = 100;

var currX = -82;    // Current x position
var currY = -342;   // Current y position

var destX = -750;   // Destination x position
var destY = -850;   // Destination y position

var currentDuration = 0;
var duration = 1800 * 1000;  // Duration

var $bg = $('#flight-wrapper');

var intbg = window.setInterval(function(){
    currentDuration += interval;

    var leftX = destX - currX;  // X pixels left
    var leftY = destY - currY;  // Y pixels left

    var leftDuration = duration - currentDuration;  // Duration left

    var tickX = leftX / leftDuration * interval;    // Pixel to offset
    var tickY = leftY / leftDuration * interval;    // Pixel to offset

    var newX = currX + tickX;
    var newY = currY + tickY;

    // Prevent it going further than the destination X & Y pixel
    currX = newX <= destX ? destX : newX;
    currY = newY <= destY ? destY : newY;

    if ( currX <= destX && currY <= destY ) {
        window.clearTimeout(intbg);
    }

    $bg.css({
        backgroundPosition: Math.floor(currX) + 'px ' + Math.floor(currY) + 'px'
    });
}, interval);

希望有人能帮助我。

1 个答案:

答案 0 :(得分:0)

鉴于箭头在任何给定时间p = (x_t, y_t)处的点t,您需要找出tangent to your curve at the point p numerically的内容,它将告诉您箭头应该指向的确切位置。