Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中计算圆弧路径_Javascript_Jquery_Html_Css - Fatal编程技术网

在javascript中计算圆弧路径

在javascript中计算圆弧路径,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我不知道如何模拟这个。红色箭头处于静止位置。背景,有一条弯曲的路径。我只是移动背景位置,让它看起来箭头沿着弯曲的路径移动 我现在看到的是箭头以45度角移动到目的地。但我试图实现的是箭头沿着虚线路径移动 var interval = 100; var currX = -82; // Current x position var currY = -342; // Current y position var destX = -750; // Destination x posit

我不知道如何模拟这个。红色箭头处于静止位置。背景,有一条弯曲的路径。我只是移动背景位置,让它看起来箭头沿着弯曲的路径移动

我现在看到的是箭头以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);
var区间=100;
var currX=-82;//当前x位置
变量currY=-342;//当前y位置
var destX=-750;//目的地x位置
var destY=-850;//目的地y位置
var currentDuration=0;
var持续时间=1800*1000;//期间
var$bg=$(“#航班包装”);
var intbg=window.setInterval(函数(){
当前持续时间+=间隔;
var leftX=destX-currX;//X像素左
var leftY=destY-currY;//左Y像素
var leftDuration=duration-currentDuration;//左持续时间
var tickX=leftX/leftDuration*interval;//要偏移的像素
var tickY=leftY/leftDuration*interval;//要偏移的像素
var newX=currX+tickX;
var newY=咖喱+咖喱;
//防止其超出目标X&Y像素

currX=newX给定点
p=(x\u t,y\u t)
在任何给定的时间,箭头所在的位置都是
t
,您需要了解箭头的确切指向。

您希望解释数学还是可以使用库发布工作解决方案?我可以解释数学吗。鉴于您的弧可以被视为圆的一部分,您可以使用
sin
cos
来相应地变换x/y。但首先,你应该使用一个jQuery插件,它允许你设置
背景位置的动画,这会使你的当前代码过时,并且是一条直线。然后使用正弦和余弦指定你自己的缓和函数。