Javascript 如何使svg对象以恒定速度沿圆形轨迹移动,D3.js
我想让一个物体绕着一个中心作圆周运动。下面是我的代码。当物体在圆弧上移动时,我期望一个恒定的速度,但是运动速度不是恒定的,它在过渡的中间加速,在过渡的开始和结束时它是非常缓慢的。我不知道为什么,请帮忙Javascript 如何使svg对象以恒定速度沿圆形轨迹移动,D3.js,javascript,d3.js,Javascript,D3.js,我想让一个物体绕着一个中心作圆周运动。下面是我的代码。当物体在圆弧上移动时,我期望一个恒定的速度,但是运动速度不是恒定的,它在过渡的中间加速,在过渡的开始和结束时它是非常缓慢的。我不知道为什么,请帮忙 function generatePointOnCircle(angle,w,h){//in degree var rads = angle/180*Math.PI; var r = Math.sqrt(w*w + h*h); var x = Math.cos(rads)*r; v
function generatePointOnCircle(angle,w,h){//in degree
var rads = angle/180*Math.PI;
var r = Math.sqrt(w*w + h*h);
var x = Math.cos(rads)*r;
var y = Math.sin(rads)*r;
return {x:x,y:y};
}
function generateDefenders(svg){
var distance = 73;
the_target_object.transition().duration(10000)
.attrTween("transform",function(d,i){
var it = d3.interpolateRound(1,360);
return function(t){
var p = generatePointOnCircle(it(t),distance);
return "translate(" + (p.x + width/2) + "," + (p.y + height/2)+")";
}
}).remove();
}
只需要向过渡添加一个线性缓解函数,如下所示
the_target_object.transition().duration(10000).ease("linear") .....
默认情况下,ease函数为“立方输入输出”