gpt4 book ai didi

javascript - d3.js 将缩放行为更改为语义缩放

转载 作者:搜寻专家 更新时间:2023-11-01 05:10:29 25 4
gpt4 key购买 nike

我正在用 d3.js 做一些关于缩放的测试。目前,我已经在我的测试中成功实现了几何缩放,但它有一个缺点:缩放后的​​g下的元素正在缩放。据我了解,这可以通过使用 semantic zooming 来解决。 .

问题是我在测试中需要 scale,因为我正在将它与 jQuery.UI slider value 同步。

另一方面,我希望调整 text 元素的大小以在缩放操作后保持其大小。

我有一个我当前尝试的例子 here .

我无法更改我的代码来满足此目的。谁能分享一些见解/想法?

最佳答案

对于您的解决方案,我合并了 2 个示例:

代码片段:

function zoom() {
text.attr("transform", transform);
var scale = zoombehavior.scale();
//to make the scale rounded to 2 decimal digits
scale = Math.round(scale * 100) / 100;
//setting the slider to the new value
$("#slider").slider( "option", "value", scale );
//setting the slider text to the new value
$("#scale").val(scale);
}
//note here we are not handling the scale as its Semantic Zoom
function transform(d) {
//translate string
return "translate(" + x(d[0]) + "," + y(d[1]) + ")";
}

function interpolateZoom(translate, scale) {
zoombehavior
.scale(scale)//we are setting this zoom only for detecting the scale for slider..we are not zoooming using scale.
.translate(translate);
zoom();
}
var slider = $(function() {
$("#slider").slider({
value: zoombehavior.scaleExtent()[0],//setting the value
min: zoombehavior.scaleExtent()[0],//setting the min value
max: zoombehavior.scaleExtent()[1],//settinng the ax value
step: 0.01,
slide: function(event, ui) {
var newValue = ui.value;
var center = [centerX, centerY],
extent = zoombehavior.scaleExtent(),
translate = zoombehavior.translate(),
l = [],
view = {
x: translate[0],
y: translate[1],
k: zoombehavior.scale()
};
//translate w.r.t the center
translate0 = [(center[0] - view.x) / view.k, (center[1] - view.y) / view.k];
view.k = newValue;//the scale as per the slider
//the translate after the scale(so we are multiplying the translate)
l = [translate0[0] * view.k + view.x, translate0[1] * view.k + view.y];

view.x += center[0] - l[0];
view.y += center[1] - l[1];

interpolateZoom([view.x, view.y], view.k);

}
});
});

我正在缩放 w.r.t. 250,250 是剪辑圆的中心。

工作代码 here (已添加必要的评论)

希望这对您有所帮助!

关于javascript - d3.js 将缩放行为更改为语义缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34228201/

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