gpt4 book ai didi

javascript - 如何使用d3旋转?

转载 作者:行者123 更新时间:2023-12-02 23:41:03 25 4
gpt4 key购买 nike

我正在为数学课设置一个 D3 演示,并希望有一个三 Angular 形绕其一个顶点旋转。当D3执行旋转指令时,三 Angular 形最终到达正确的终点,但在旋转动画期间飞入和飞出 View 。

我知道我必须调整图像,以便整个旋转可见,但我不明白为什么三 Angular 形“飞”走了,而不是按照我的意图绕顶点旋转。我希望三 Angular 形绕矩形顶部水平线的中点旋转。

FWIW,这个想法是最终将矩形转换为梯形。

实现枢轴的正确旋转语法是什么?

这是整个页面:

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
svg { width:100%; height: 400px }
</style>
</head>

<body>
<script>

var svg = d3.select("body").append("svg");

var data = [
{'x': 40, 'y': 40},
{'x': 40, 'y': 100},
{'x': 200, 'y': 100},
{'x': 200, 'y': 40},
{'x': 40, 'y': 40},

];

var line = d3.svg.line()
.x(function(d) { return (d['x']); })
.y(function(d) { return (d['y']); });

var path = svg.append('path').attr('d', line(data))
.style("stroke","steelblue")
.style("stroke-width","1px")
.style("fill","none")

var tdata = [
{'x': 120, 'y': 40},
{'x': 200, 'y': 70},
{'x': 200, 'y': 40},
{'x': 120, 'y': 40},

];

tpath = svg.append('path').attr('d', line(tdata))
.style("stroke", "red")
.style("stroke-width","1px")
.style("fill","none")
.transition().delay(2000)
.duration(1000)
.attr("transform", "rotate(-180,120,40)");

</script>
</body>

最佳答案

默认情况下,rotate 尝试围绕中心点 (0,0) 旋转,并插入一个变换来完成此操作。

如果您想在其他位置旋转,您可以在开始 rotate(0,120,40) 和结束 rotate(-180,120,40) 位置之间定义自己的插值:

tpath = svg.append('path').attr('d', line(tdata))
.style("stroke", "red")
.style("stroke-width","1px")
.style("fill","none")
.transition().delay(2000)
.duration(1000)
.attrTween("transform", function(d,i,a){ return interp });

var interp = d3.interpolateString( "rotate(0,120,40)", "rotate(-180,120,40)" )

关于javascript - 如何使用d3旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56081432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com