第十二章|第十二章 D3插值器
【第十二章|第十二章 D3插值器】两个值之间多种插值的方法
d3.interpolateNumber(a, b) 数字插值器
默认
function interpolator(t) {
return a * (1 - t) + b * t;
}
d3.interpolateRound(a, b) 结果取整
d3.interpolateString(a, b) 字符串 d3.interpolateDate(a, b) 日期插值 d3.interpolateArray(a, b) 数组插值 对于a为[0,1],b为[1,10,100],t为0.5时返回值为[0.5,5.5,100], a中没有和100对应的值,因此直接使用b中的值.
d3.interpolateObject(a, b) d3.interpolateTransformCss(a, b) css样式插值器 d3.interpolateTransformSvg(a, b) svg样式插值 d3.interpolateZoom(a, b) zoom插值 使用方法:(例:解决了默认interpolateTransformSvg插值时旋转角默认小于180度)
function update(dataSet){
dataSet = Math.random()*100
dataText.transition()
.text( Math.round(dataSet))
dataG.transition()
.duration(300)
.attrTween('transform', function(){ // 规定旋转A -B
var i = d3.interpolateNumber(oldData,dataSet);
return function(t){
return 'rotate('+scaleKe(i(t))+')'
}
})
.tween('',
function(){ // 规定旋转A -B时,使用数字形式插值
console.log('aaa',oldData,dataSet)
var i = d3.interpolateNumber(oldData,dataSet);
var text;
return function(t){
console.log(i(t))
const d0 = i(t)
console.log('bbb',scaleKe(d0))
return 'rotate('+scaleKe(d0)+')'
}
})
.on('end',function(){
oldData=https://www.it610.com/article/dataSet
})
}
样式插值后期补充
推荐阅读
- 宽容谁
- 一个人的旅行,三亚
- 第6.2章(设置属性)
- 布丽吉特,人生绝对的赢家
- 家乡的那条小河
- 讲述,美丽聪明的海欧!
- PMSJ寻平面设计师之现代(Hyundai)
- 野营记-第五章|野营记-第五章 讨伐梦魇兽
- 夜游宫|夜游宫 心语
- 增长黑客的海盗法则