Javascript 计算两个旋转图元之间的距离
嗨,我想计算两个旋转元素之间的垂直距离,当旋转为0时,我使用Javascript 计算两个旋转图元之间的距离,javascript,geometry,Javascript,Geometry,嗨,我想计算两个旋转元素之间的垂直距离,当旋转为0时,我使用el1.getBoundingClientRect().x-el2.getBoundingClientRect().x并给出正确的距离,但对于旋转元素,它不起作用,因为它给出了顶点之间的垂直距离(边界矩形的距离,如何得到x?谢谢! 如果旋转前两个矩形的顶点坐标差为(dx,dy),则旋转角度fi后的新差为: nx = dx * cos(fi) - dy * sin(fi) ny = dx * sin(fi) + dy * cos(
el1.getBoundingClientRect().x-el2.getBoundingClientRect().x
并给出正确的距离,但对于旋转元素,它不起作用,因为它给出了顶点之间的垂直距离(边界矩形的距离,如何得到x?谢谢!
如果旋转前两个矩形的顶点坐标差为
(dx,dy)
,则旋转角度fi
后的新差为:
nx = dx * cos(fi) - dy * sin(fi)
ny = dx * sin(fi) + dy * cos(fi)
如果我们将第一个方程乘以cos(fi),将第二个方程乘以sin(fi),然后将它们相加,我们就可以找到所需的值
dx = nx * cos(fi) + ny * sin(fi)
(假设知道旋转状态下的顶点差)
例如:dx为25,cos(fi)=4/5,sin(fi)=3/5
旋转后:nx=5,ny=35,我们可以找到dx=5*4/5+25*3/5=4+21=25
如果您知道旋转角度,可以取消旋转元素,然后计算距离,最后将元素旋转回来。是的,我也是这样,谢谢!它给出的距离与
el1.getBoundingClientRect().x-el2.getBoundingClientRect()相同.x
113
,当deg为30
时,100
当deg为0
时,如果我使用-30
作为它给出的公式50
,而不是100
。请记住,角度fi是弧度。我在这里添加了一个示例,您可以检查它,CSS旋转到元素的中心。@mrblewog是我使用的对应顶点的弧度.y1-y必须大约为-4,而不是95,这就是为什么您的计算会给出错误的结果