我正处于一个JS项目的早期阶段。除了一个形状的定位之外,一切都很顺利。有问题的形状是深青色钻石(正方形旋转45度)。我可以在屏幕上的方没有问题,但是当我添加:d3.js奇数旋转行为
.attr("transform", "rotate(45)")
方形旋转正常,但移动向屏幕的左侧部分,像这样:
我不确定是什么导致了这种情况发生。如果有帮助,下面是一些产生这一结果的代码:
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
svg
.append("rect")
.attr("transform", "rotate(45)")
.attr("x", 250)
.attr("height", w/10)
.attr("width", w/10)
.attr("fill", "teal")
注意:如果我把“Y”属性中,广场上完全消失。
这是什么造成的?我做了什么我看不到的错误吗?
啊,你是绝对正确的。非常感谢。所以现在我需要这个形状正好在中心。使用毕达哥拉斯理论,我找到了横截面的长度,并将其除以2.这个方程的结果是我想在翻译语句中设置的y坐标(从画布高度/当然减去) 。看起来好像我不能在这里使用变量。你知道我该怎么做吗? – 1080p
只要按照正确的顺序进行转换,就不需要使用毕达哥拉斯。假设'w'和'h'是画布大小,'rw'和'rh'是Rect的大小,这应该做你所问的:'.attr(“transform”,“translate(”+(w/2)+“,”+(h/2)+“)rotate(45)translate(”+(-rw/2)+“,”+(-rh/2)+“)”'换句话说,首先将矩形的左上角移动到中心,然后旋转45°,然后向后移回矩形的半宽和半高 - 沿着45度轴 - 以画布为中心,如果画布为300x300且矩形为100x100: “翻译(150,150)旋转(45)翻译(-50,-50)”' – meetamit
有趣的是,我已经在我的代码中设置了Pythagorean,但是如果你的方法更快,我可以把它换掉。帮助 – 1080p