Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算两个旋转图元之间的距离_Javascript_Geometry - Fatal编程技术网

Javascript 计算两个旋转图元之间的距离

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(

嗨,我想计算两个旋转元素之间的垂直距离,当旋转为0时,我使用
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,这就是为什么您的计算会给出错误的结果